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

Commit be25e2b6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Gracefully tear down networks when SIM is disabled"" into main

parents 54d0af75 6ef1e99a
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -121,17 +121,6 @@ flag {
  }
}

# OWNER=jackyu TARGET=25Q1
flag {
  name: "sim_disabled_graceful_tear_down"
  namespace: "telephony"
  description: "Gracefully tear down the networks when SIM is disabled."
  bug: "362372940"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

# OWNER=TBD TARGET=TBD
flag {
  name: "oem_paid_private"
+0 −2
Original line number Diff line number Diff line
@@ -225,8 +225,6 @@ public class DataEvaluation {
        SIM_LOADED(true),
        /** SIM is removed. */
        SIM_REMOVAL(true),
        /** SIM is disabled. */
        SIM_DISABLED(true),
        /** Data profiles changed. */
        DATA_PROFILES_CHANGED(true),
        /** When service state changes.(For now only considering data RAT and data registration). */
+11 −11
Original line number Diff line number Diff line
@@ -3542,6 +3542,15 @@ public class DataNetworkController extends Handler {
        mDataServiceBound.put(transport, bound);
    }

    /**
     * Called when SIM is absent.
     */
    private void onSimAbsent() {
        log("onSimAbsent");
        sendMessage(obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS,
                DataEvaluationReason.SIM_REMOVAL));
    }

    /**
     * Called when SIM state changes.
     *
@@ -3550,22 +3559,13 @@ public class DataNetworkController extends Handler {
    private void onSimStateChanged(@SimState int simState) {
        log("onSimStateChanged: state=" + TelephonyManager.simStateToString(simState));
        if (mSimState != simState) {
            mSimState = simState;
            if (simState == TelephonyManager.SIM_STATE_ABSENT) {
                log("onSimStateChanged: SIM absent.");
                sendMessage(obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS,
                        DataEvaluationReason.SIM_REMOVAL));
            } else if (simState == TelephonyManager.SIM_STATE_NOT_READY
                    && mSimState == TelephonyManager.SIM_STATE_LOADED) {
                if (mFeatureFlags.simDisabledGracefulTearDown()) {
                    log("onSimStateChanged: SIM disabled.");
                    sendMessage(obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS,
                            DataEvaluationReason.SIM_DISABLED));
                }
                onSimAbsent();
            } else if (simState == TelephonyManager.SIM_STATE_LOADED) {
                sendMessage(obtainMessage(EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS,
                        DataEvaluationReason.SIM_LOADED));
            }
            mSimState = simState;
            mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor(
                    () -> callback.onSimStateChanged(mSimState)));
        }
+1 −50
Original line number Diff line number Diff line
@@ -888,11 +888,8 @@ public class DataNetworkControllerTest extends TelephonyTest {
        doReturn(PhoneConstants.State.IDLE).when(mCT).getState();
        doReturn(new SubscriptionInfoInternal.Builder().setId(1).build())
                .when(mSubscriptionManagerService).getSubscriptionInfoInternal(anyInt());

        doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
        doReturn(true).when(mFeatureFlags).satelliteInternet();
        doReturn(true).when(mFeatureFlags).simDisabledGracefulTearDown();

        when(mContext.getPackageManager()).thenReturn(mMockPackageManager);
        doReturn(true).when(mMockPackageManager).hasSystemFeature(anyString());

@@ -4311,7 +4308,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
    }

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

@@ -4356,52 +4353,6 @@ public class DataNetworkControllerTest extends TelephonyTest {
        assertThat(pdcs.getState()).isEqualTo(TelephonyManager.DATA_DISCONNECTED);
    }

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

        NetworkCapabilities netCaps = new NetworkCapabilities();
        netCaps.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
        netCaps.maybeMarkCapabilitiesRestricted();
        netCaps.setRequestorPackageName(FAKE_MMTEL_PACKAGE);

        NetworkRequest nativeNetworkRequest = new NetworkRequest(netCaps,
                ConnectivityManager.TYPE_MOBILE, ++mNetworkRequestId, NetworkRequest.Type.REQUEST);
        TelephonyNetworkRequest networkRequest = new TelephonyNetworkRequest(
                nativeNetworkRequest, mPhone, mFeatureFlags);

        mDataNetworkControllerUT.addNetworkRequest(networkRequest);

        processAllMessages();
        Mockito.clearInvocations(mPhone);

        // SIM disabled
        mDataNetworkControllerUT.obtainMessage(9/*EVENT_SIM_STATE_CHANGED*/,
                TelephonyManager.SIM_STATE_NOT_READY, 0).sendToTarget();
        processAllMessages();

        // Make sure data network enters disconnecting state
        ArgumentCaptor<PreciseDataConnectionState> pdcsCaptor =
                ArgumentCaptor.forClass(PreciseDataConnectionState.class);
        verify(mPhone).notifyDataConnection(pdcsCaptor.capture());
        PreciseDataConnectionState pdcs = pdcsCaptor.getValue();
        assertThat(pdcs.getState()).isEqualTo(TelephonyManager.DATA_DISCONNECTING);

        // IMS de-registered. Now data network is safe to be torn down.
        Mockito.clearInvocations(mPhone);
        setImsRegistered(false);
        setRcsRegistered(false);
        processAllMessages();

        // All data should be disconnected.
        verifyAllDataDisconnected();
        verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
        verify(mPhone).notifyDataConnection(pdcsCaptor.capture());
        pdcs = pdcsCaptor.getValue();
        assertThat(pdcs.getState()).isEqualTo(TelephonyManager.DATA_DISCONNECTED);
    }

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