Loading flags/data.aconfig +0 −11 Original line number Diff line number Diff line Loading @@ -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" Loading src/java/com/android/internal/telephony/data/DataEvaluation.java +0 −2 Original line number Diff line number Diff line Loading @@ -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). */ Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +11 −11 Original line number Diff line number Diff line Loading @@ -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. * Loading @@ -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))); } Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +1 −50 Original line number Diff line number Diff line Loading @@ -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()); Loading Loading @@ -4311,7 +4308,7 @@ public class DataNetworkControllerTest extends TelephonyTest { } @Test public void testImsGracefulTearDownSimRemoval() throws Exception { public void testImsGracefulTearDown() throws Exception { setImsRegistered(true); setRcsRegistered(true); Loading Loading @@ -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); Loading Loading
flags/data.aconfig +0 −11 Original line number Diff line number Diff line Loading @@ -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" Loading
src/java/com/android/internal/telephony/data/DataEvaluation.java +0 −2 Original line number Diff line number Diff line Loading @@ -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). */ Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +11 −11 Original line number Diff line number Diff line Loading @@ -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. * Loading @@ -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))); } Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +1 −50 Original line number Diff line number Diff line Loading @@ -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()); Loading Loading @@ -4311,7 +4308,7 @@ public class DataNetworkControllerTest extends TelephonyTest { } @Test public void testImsGracefulTearDownSimRemoval() throws Exception { public void testImsGracefulTearDown() throws Exception { setImsRegistered(true); setRcsRegistered(true); Loading Loading @@ -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); Loading