Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed3168e9 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Stop depending on the ConnectivityService default request.

This avoids the need to expose ConnectivityService implementation
details as @SystemApi and the complexities that would be required
to make NetworkCapabilities parcelable in stable AIDL.

Bug: 112869080
Test: atest FrameworksNetTests NetworkStackTests
Change-Id: Icd5d25b9b8e9b7a7d1899b000c92dc4976c3b3d7
parent 06adb08d
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -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);
    }


+1 −2
Original line number Diff line number Diff line
@@ -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) {
+11 −3
Original line number Diff line number Diff line
@@ -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);
    }
}
+7 −2
Original line number Diff line number Diff line
@@ -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);