From 6e82be4e4acc3cb5e27ecc3cb1032572e62388af Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Tue, 29 Jan 2019 15:38:52 +0900 Subject: [PATCH] Remove last NetworkStack usage of hidden APIs Includes various small changes to stop using hidden APIs Test: make NetworkStack Test: flashed, booted, WiFi and tethering working Bug: 112869080 Change-Id: Id2830795a444f484b377ed6437435a1cd833697a --- core/java/android/net/NetworkUtils.java | 27 ------------------- .../android/net/StaticIpConfiguration.java | 9 ++++--- .../android/server/ConnectivityService.java | 7 ++--- .../server/ConnectivityServiceTest.java | 9 ++++--- 4 files changed, 15 insertions(+), 37 deletions(-) diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java index 44170b584f..07668a9e3a 100644 --- a/core/java/android/net/NetworkUtils.java +++ b/core/java/android/net/NetworkUtils.java @@ -19,7 +19,6 @@ package android.net; import android.annotation.UnsupportedAppUsage; import android.net.shared.Inet4AddressUtils; import android.os.Build; -import android.os.Parcel; import android.system.ErrnoException; import android.util.Log; import android.util.Pair; @@ -246,32 +245,6 @@ public class NetworkUtils { return InetAddress.parseNumericAddress(addrString); } - /** - * Writes an InetAddress to a parcel. The address may be null. This is likely faster than - * calling writeSerializable. - */ - protected static void parcelInetAddress(Parcel parcel, InetAddress address, int flags) { - byte[] addressArray = (address != null) ? address.getAddress() : null; - parcel.writeByteArray(addressArray); - } - - /** - * Reads an InetAddress from a parcel. Returns null if the address that was written was null - * or if the data is invalid. - */ - protected static InetAddress unparcelInetAddress(Parcel in) { - byte[] addressArray = in.createByteArray(); - if (addressArray == null) { - return null; - } - try { - return InetAddress.getByAddress(addressArray); - } catch (UnknownHostException e) { - return null; - } - } - - /** * Masks a raw IP address byte array with the specified prefix length. */ diff --git a/core/java/android/net/StaticIpConfiguration.java b/core/java/android/net/StaticIpConfiguration.java index 25bae3c574..99cf3a99f5 100644 --- a/core/java/android/net/StaticIpConfiguration.java +++ b/core/java/android/net/StaticIpConfiguration.java @@ -19,6 +19,7 @@ package android.net; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; +import android.net.shared.InetAddressUtils; import android.os.Parcel; import android.os.Parcelable; @@ -232,10 +233,10 @@ public final class StaticIpConfiguration implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(ipAddress, flags); - NetworkUtils.parcelInetAddress(dest, gateway, flags); + InetAddressUtils.parcelInetAddress(dest, gateway, flags); dest.writeInt(dnsServers.size()); for (InetAddress dnsServer : dnsServers) { - NetworkUtils.parcelInetAddress(dest, dnsServer, flags); + InetAddressUtils.parcelInetAddress(dest, dnsServer, flags); } dest.writeString(domains); } @@ -244,11 +245,11 @@ public final class StaticIpConfiguration implements Parcelable { public static StaticIpConfiguration readFromParcel(Parcel in) { final StaticIpConfiguration s = new StaticIpConfiguration(); s.ipAddress = in.readParcelable(null); - s.gateway = NetworkUtils.unparcelInetAddress(in); + s.gateway = InetAddressUtils.unparcelInetAddress(in); s.dnsServers.clear(); int size = in.readInt(); for (int i = 0; i < size; i++) { - s.dnsServers.add(NetworkUtils.unparcelInetAddress(in)); + s.dnsServers.add(InetAddressUtils.unparcelInetAddress(in)); } s.domains = in.readString(); return s; diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 1519c17850..c8e5d2bdb7 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -40,6 +40,7 @@ import static android.net.NetworkPolicyManager.RULE_NONE; import static android.net.NetworkPolicyManager.uidRulesToString; import static android.net.NetworkStack.NETWORKSTACK_PACKAGE_NAME; import static android.net.shared.NetworkMonitorUtils.isValidationRequired; +import static android.net.shared.NetworkParcelableUtil.toStableParcelable; import static android.os.Process.INVALID_UID; import static android.system.OsConstants.IPPROTO_TCP; import static android.system.OsConstants.IPPROTO_UDP; @@ -98,10 +99,10 @@ import android.net.VpnService; import android.net.metrics.IpConnectivityLog; import android.net.metrics.NetworkEvent; import android.net.netlink.InetDiagMessage; -import android.net.shared.NetdService; import android.net.shared.NetworkMonitorUtils; import android.net.shared.PrivateDnsConfig; import android.net.util.MultinetworkPolicyTracker; +import android.net.util.NetdService; import android.os.Binder; import android.os.Build; import android.os.Bundle; @@ -5012,8 +5013,8 @@ public class ConnectivityService extends IConnectivityManager.Stub if (DBG) log("registerNetworkAgent " + nai); final long token = Binder.clearCallingIdentity(); try { - mContext.getSystemService(NetworkStack.class) - .makeNetworkMonitor(nai.network, name, new NetworkMonitorCallbacks(nai)); + mContext.getSystemService(NetworkStack.class).makeNetworkMonitor( + toStableParcelable(nai.network), name, new NetworkMonitorCallbacks(nai)); } finally { Binder.restoreCallingIdentity(token); } diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 923c7dd5fb..036c5dcc89 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -57,6 +57,7 @@ import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED; import static android.net.NetworkPolicyManager.RULE_NONE; import static android.net.NetworkPolicyManager.RULE_REJECT_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_METERED; +import static android.net.shared.NetworkParcelableUtil.fromStableParcelable; import static com.android.internal.util.TestUtils.waitForIdleHandler; import static com.android.internal.util.TestUtils.waitForIdleLooper; @@ -119,6 +120,7 @@ import android.net.NetworkFactory; import android.net.NetworkInfo; import android.net.NetworkInfo.DetailedState; import android.net.NetworkMisc; +import android.net.NetworkParcelable; import android.net.NetworkRequest; import android.net.NetworkSpecifier; import android.net.NetworkStack; @@ -482,8 +484,8 @@ public class ConnectivityServiceTest { fail(e.getMessage()); } - final ArgumentCaptor nmNetworkCaptor = - ArgumentCaptor.forClass(Network.class); + final ArgumentCaptor nmNetworkCaptor = + ArgumentCaptor.forClass(NetworkParcelable.class); final ArgumentCaptor nmCbCaptor = ArgumentCaptor.forClass(INetworkMonitorCallbacks.class); doNothing().when(mNetworkStack).makeNetworkMonitor( @@ -523,7 +525,8 @@ public class ConnectivityServiceTest { } }; - assertEquals(mNetworkAgent.netId, nmNetworkCaptor.getValue().netId); + assertEquals( + mNetworkAgent.netId, fromStableParcelable(nmNetworkCaptor.getValue()).netId); mNmCallbacks = nmCbCaptor.getValue(); try {