diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2020-06-02 00:41:51 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-02 00:41:51 +0000 |
commit | 09d8861d240d6f53e41101ca34ad30e6ff1b7c4a (patch) | |
tree | 94893fc1a18da435271beb8c0c07b9a11477214d | |
parent | 5616767647344da935fd85a78f47873b6f2a39ef (diff) | |
parent | 8cbcaa644eb2ae63bc076f55025561b224198053 (diff) |
Validate test wifi/eth/bluetooth/mobile networks am: d44616a143 am: 8cbcaa644e
Original change: undetermined
Change-Id: Id493cfa48ae6612b17580b68d9fdd0d95b3e4ffd
-rw-r--r-- | apishim/31/com/android/networkstack/apishim/ConstantsShim.java | 1 | ||||
-rw-r--r-- | common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java | 38 |
2 files changed, 36 insertions, 3 deletions
diff --git a/apishim/31/com/android/networkstack/apishim/ConstantsShim.java b/apishim/31/com/android/networkstack/apishim/ConstantsShim.java index 4bafe4c..0184845 100644 --- a/apishim/31/com/android/networkstack/apishim/ConstantsShim.java +++ b/apishim/31/com/android/networkstack/apishim/ConstantsShim.java @@ -31,6 +31,7 @@ public class ConstantsShim extends com.android.networkstack.apishim.api30.Consta @VisibleForTesting public static final int VERSION = 31; + // When removing this shim, the version in NetworkMonitorUtils should be removed too. // TODO: add TRANSPORT_TEST to system API in API 31 (it is only a test API as of R) public static final int TRANSPORT_TEST = 7; } diff --git a/common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java b/common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java index 8983d00..981a576 100644 --- a/common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java +++ b/common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java @@ -20,11 +20,21 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN; import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED; +import static android.net.NetworkCapabilities.TRANSPORT_BLUETOOTH; +import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; +import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET; +import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import android.net.NetworkCapabilities; /** @hide */ public class NetworkMonitorUtils { + // This class is used by both NetworkMonitor and ConnectivityService, so it cannot use + // NetworkStack shims, but at the same time cannot use non-system APIs. + // TRANSPORT_TEST is test API as of R (so it is enforced to always be 7 and can't be changed), + // and it is being added as a system API in S. + // TODO: use NetworkCapabilities.TRANSPORT_TEST once NetworkStack builds against API 31. + private static final int TRANSPORT_TEST = 7; // Network conditions broadcast constants public static final String ACTION_NETWORK_CONDITIONS_MEASURED = @@ -47,11 +57,33 @@ public class NetworkMonitorUtils { * @param nc Network capabilities of the network to test. */ public static boolean isPrivateDnsValidationRequired(NetworkCapabilities nc) { + if (nc == null) return false; + // TODO: Consider requiring validation for DUN networks. - return nc != null - && nc.hasCapability(NET_CAPABILITY_INTERNET) + if (nc.hasCapability(NET_CAPABILITY_INTERNET) && nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED) - && nc.hasCapability(NET_CAPABILITY_TRUSTED); + && nc.hasCapability(NET_CAPABILITY_TRUSTED)) { + // Real networks + return true; + } + + // TODO: once TRANSPORT_TEST is @SystemApi in S and S SDK is stable (so constant shims can + // be replaced with the SDK constant that will be inlined), replace isTestNetwork with + // hasTransport(TRANSPORT_TEST) + + // Test networks that also have one of the major transport types are attempting to replicate + // that transport on a test interface (for example, test ethernet networks with + // EthernetManager#setIncludeTestInterfaces). Run validation on them for realistic tests. + // See also comments on EthernetManager#setIncludeTestInterfaces and on TestNetworkManager. + if (nc.hasTransport(TRANSPORT_TEST) && nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED) && ( + nc.hasTransport(TRANSPORT_WIFI) + || nc.hasTransport(TRANSPORT_CELLULAR) + || nc.hasTransport(TRANSPORT_BLUETOOTH) + || nc.hasTransport(TRANSPORT_ETHERNET))) { + return true; + } + + return false; } /** |