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

Commit 6b0f0553 authored by Ling Ma's avatar Ling Ma
Browse files

Don't notify restricted network validation status

Conform to the behavior prior to ag/24331229: only notify the not restricted internet network's validation status.

Fix: 330760674
Test: voice call + data browsing
Change-Id: Idfc91f32f08da9854b2e5d2aa47542a777e56bd4
parent 6cba5cc6
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3183,7 +3183,13 @@ public class DataNetworkController extends Handler {
            return;
        }

        if (dataNetwork.isInternetSupported()) {
        // Only track the networks that require validation.
        // The criteria is base on NetworkMonitorUtils.java.
        NetworkCapabilities capabilities = dataNetwork.getNetworkCapabilities();
        if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
            if (status == NetworkAgent.VALIDATION_STATUS_NOT_VALID
                    && (dataNetwork.getCurrentState() == null || dataNetwork.isDisconnected())) {
                log("Ignoring invalid validation status for disconnected DataNetwork");
+36 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.net.NetworkPolicyManager;
import android.net.NetworkRequest;
import android.net.Uri;
import android.net.vcn.VcnManager.VcnNetworkPolicyChangeListener;
import android.net.vcn.VcnNetworkPolicyResult;
import android.os.AsyncResult;
@@ -4049,6 +4050,41 @@ public class DataNetworkControllerTest extends TelephonyTest {
        verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
    }

    @Test
    public void testNetworkValidationStatusChangeCallback() throws Exception {
        // Request not restricted network
        TelephonyNetworkRequest request = createNetworkRequest(
                NetworkCapabilities.NET_CAPABILITY_INTERNET);
        mDataNetworkControllerUT.addNetworkRequest(request);
        processAllMessages();
        TelephonyNetworkAgent agent = getPrivateField(getDataNetworks().get(0), "mNetworkAgent",
                TelephonyNetworkAgent.class);
        agent.onValidationStatus(1/*status*/, Uri.EMPTY);
        processAllMessages();

        // Verify notify
        verify(mMockedDataNetworkControllerCallback)
                .onInternetDataNetworkValidationStatusChanged(1);

        // Request restricted network
        mDataNetworkControllerUT.removeNetworkRequest(request);
        getDataNetworks().get(0).tearDown(DataNetwork.TEAR_DOWN_REASON_NONE);
        mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled(0, false, "");
        processAllMessages();
        clearInvocations(mMockedDataNetworkControllerCallback);
        mDataNetworkControllerUT.addNetworkRequest(createNetworkRequest(
                true, NetworkCapabilities.NET_CAPABILITY_INTERNET));
        processAllMessages();
        agent = getPrivateField(getDataNetworks().get(0), "mNetworkAgent",
                TelephonyNetworkAgent.class);
        agent.onValidationStatus(1/*status*/, Uri.EMPTY);
        processAllMessages();

        // Verify not notified
        verify(mMockedDataNetworkControllerCallback, never())
                .onInternetDataNetworkValidationStatusChanged(anyInt());
    }

    @Test
    public void testImsGracefulTearDown() throws Exception {
        setImsRegistered(true);