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

Commit 6ef1e99a authored by Jack Yu's avatar Jack Yu
Browse files

Revert "Gracefully tear down networks when SIM is disabled"

This reverts commit 7a227c33.

Reason for revert: b/380091709. Also the corresponding modem changes for this CL was not merged.

Change-Id: I2fc1b0c9269aaee8798b240a558ec2defe76c4f7
parent 2ed72abe
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);