summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi NGUYEN VAN <reminv@google.com>2020-06-02 00:25:07 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-06-02 00:25:07 +0000
commit8cbcaa644eb2ae63bc076f55025561b224198053 (patch)
tree792217ee0fcf0df9ea0793ea36d51a01ff273f42
parent8a00cc5f0361352a44277ec1fa3b4ff7f31d8e71 (diff)
parentd44616a143669a0c940c92a717da3c602ba54525 (diff)
Validate test wifi/eth/bluetooth/mobile networks am: d44616a143
Original change: undetermined Change-Id: I4e1a089a3e652964603046421a562dc3fab62698
-rw-r--r--apishim/31/com/android/networkstack/apishim/ConstantsShim.java1
-rw-r--r--common/moduleutils/src/android/net/shared/NetworkMonitorUtils.java38
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;
}
/**