Merge "Stop depending on the ConnectivityService default request."

This commit is contained in:
Lorenzo Colitti
2019-01-23 12:29:40 +00:00
committed by Gerrit Code Review
4 changed files with 20 additions and 11 deletions

View File

@@ -247,7 +247,6 @@ public class NetworkMonitor extends StateMachine {
private final TelephonyManager mTelephonyManager;
private final WifiManager mWifiManager;
private final ConnectivityManager mCm;
private final NetworkRequest mDefaultRequest;
private final IpConnectivityLog mMetricsLog;
private final Dependencies mDependencies;
@@ -336,7 +335,6 @@ public class NetworkMonitor extends StateMachine {
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
mDefaultRequest = defaultRequest;
// CHECKSTYLE:OFF IndentationCheck
addState(mDefaultState);
@@ -486,8 +484,7 @@ public class NetworkMonitor extends StateMachine {
}
private boolean isValidationRequired() {
return NetworkMonitorUtils.isValidationRequired(
mDefaultRequest.networkCapabilities, mNetworkCapabilities);
return NetworkMonitorUtils.isValidationRequired(mNetworkCapabilities);
}

View File

@@ -2640,8 +2640,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
private boolean networkRequiresValidation(NetworkAgentInfo nai) {
return isValidationRequired(
mDefaultRequest.networkCapabilities, nai.networkCapabilities);
return isValidationRequired(nai.networkCapabilities);
}
private void handleFreshlyValidatedNetwork(NetworkAgentInfo nai) {

View File

@@ -16,6 +16,11 @@
package android.net.shared;
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 android.content.Context;
import android.net.NetworkCapabilities;
import android.provider.Settings;
@@ -58,9 +63,12 @@ public class NetworkMonitorUtils {
* @param dfltNetCap Default requested network capabilities.
* @param nc Network capabilities of the network to test.
*/
public static boolean isValidationRequired(
NetworkCapabilities dfltNetCap, NetworkCapabilities nc) {
public static boolean isValidationRequired(NetworkCapabilities nc) {
// TODO: Consider requiring validation for DUN networks.
return dfltNetCap.satisfiedByNetworkCapabilities(nc);
return nc != null
&& nc.hasCapability(NET_CAPABILITY_INTERNET)
&& nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)
&& nc.hasCapability(NET_CAPABILITY_TRUSTED)
&& nc.hasCapability(NET_CAPABILITY_NOT_VPN);
}
}

View File

@@ -1508,6 +1508,12 @@ public class ConnectivityServiceTest {
verifyActiveNetwork(TRANSPORT_WIFI);
}
@Test
public void testRequiresValidation() {
assertTrue(NetworkMonitorUtils.isValidationRequired(
mCm.getDefaultRequest().networkCapabilities));
}
enum CallbackState {
NONE,
AVAILABLE,
@@ -4404,8 +4410,7 @@ public class ConnectivityServiceTest {
mMockVpn.setUids(ranges);
// VPN networks do not satisfy the default request and are automatically validated
// by NetworkMonitor
assertFalse(NetworkMonitorUtils.isValidationRequired(
mCm.getDefaultRequest().networkCapabilities, vpnNetworkAgent.mNetworkCapabilities));
assertFalse(NetworkMonitorUtils.isValidationRequired(vpnNetworkAgent.mNetworkCapabilities));
vpnNetworkAgent.setNetworkValid();
vpnNetworkAgent.connect(false);