Loading src/com/android/settings/ResetNetwork.java +1 −1 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ public class ResetNetwork extends InstrumentedFragment { .setTitleRes(R.string.reset_mobile_network_settings_confirm_title) .setSourceMetricsCategory(getMetricsCategory()); if (resetSims && SubscriptionUtil.shouldShowRacDialog(context)) { if (resetSims && SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(context)) { context.startActivity( EuiccRacConnectivityDialogActivity.getIntent(context, launcher.toIntent())); } else { Loading src/com/android/settings/network/EraseEuiccDataController.java +1 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ public class EraseEuiccDataController extends BasePreferenceController { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; } if (SubscriptionUtil.shouldShowRacDialog(mContext)) { if (SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)) { EuiccRacConnectivityDialogFragment.show(mHostFragment); } else { EraseEuiccDataDialogFragment.show(mHostFragment); Loading src/com/android/settings/network/SubscriptionUtil.java +20 −5 Original line number Diff line number Diff line Loading @@ -542,9 +542,7 @@ public class SubscriptionUtil { return; } if (isCarrierRac(context, carrierId) && (!isConnectedToWifi(context) || isConnectedToMobileDataWithDifferentSubId(context, subId))) { if (shouldShowRacDialogWhenErasingEsim(context, subId, carrierId)) { context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId)); } else { context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId)); Loading Loading @@ -883,18 +881,35 @@ public class SubscriptionUtil { } /** * Check if warning dialog should be presented when erasing all eSIMS. * Check if warning dialog should be presented when erasing all eSIMs. * * @param context Context to check if any sim carrier use RAC and device Wi-Fi connection. * @return {@code true} if dialog should be presented to the user. */ public static boolean shouldShowRacDialog(@NonNull Context context) { public static boolean shouldShowRacDialogWhenErasingAllEsims(@NonNull Context context) { if (sEnableRacDialogForTesting != null) { return sEnableRacDialogForTesting; } return !isConnectedToWifi(context) && hasSubscriptionWithRacCarrier(context); } /** * Check if warning dialog should be presented when erasing eSIM. * * @param context Context to check if any sim carrier use RAC and device Wi-Fi connection. * @param subId Subscription ID for the single eSIM. * @param carrierId Carrier ID for the single eSIM. * @return {@code true} if dialog should be presented to the user. */ @VisibleForTesting static boolean shouldShowRacDialogWhenErasingEsim( @NonNull Context context, int subId, int carrierId) { return isCarrierRac(context, carrierId) && !isConnectedToWifi(context) && !isConnectedToMobileDataWithDifferentSubId(context, subId); } /** * Retrieves NetworkCapabilities for the active network. * Loading tests/robotests/src/com/android/settings/network/SubscriptionUtilRoboTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package com.android.settings.network; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; import android.content.Context; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.telephony.SubscriptionManager; Loading @@ -42,6 +44,8 @@ import org.robolectric.shadows.ShadowSubscriptionManager; public class SubscriptionUtilRoboTest { private static final int SUBID_1 = 1; private static final int SUBID_2 = 2; private static final int RAC_CARRIER_ID = 1; private static final int CARRIER_ID = 2; private Context mContext; private NetworkCapabilities mNetworkCapabilities; Loading @@ -49,13 +53,16 @@ public class SubscriptionUtilRoboTest { @Mock private ConnectivityManager mConnectivityManager; @Mock private Resources mResources; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class)); when(mContext.getResources()).thenReturn(mResources); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mResources.getIntArray(anyInt())).thenReturn(new int[] {RAC_CARRIER_ID}); } @Test Loading @@ -74,6 +81,58 @@ public class SubscriptionUtilRoboTest { assertFalse(SubscriptionUtil.isConnectedToMobileDataWithDifferentSubId(mContext, SUBID_1)); } @Test public void carrierIsNotRAC_showRacDialogForEsim_returnFalse() { assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim(mContext, SUBID_1, CARRIER_ID)); } @Test public void carrierIsNotRAC_noWifi_noDataConnection_showRacDialogForEsimreturnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim(mContext, SUBID_1, CARRIER_ID)); } @Test public void carrierIsRAC_isConnectedToDataOnSubId2_showRacDialogForEsim_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_2); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_hasWifi_showRacDialogForEsim_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_isConnectedToDataOnSubId1_noWifi_showRacDialogForEsim_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_1); assertTrue( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_noData_noWifi_showRacDialogForEsim_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertTrue( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } private void addNetworkTransportType(int networkType) { mNetworkCapabilities = new NetworkCapabilities.Builder().addTransportType(networkType).build(); Loading tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -658,36 +658,36 @@ public class SubscriptionUtilTest { } @Test public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnTrue() { public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnTrue() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertTrue(SubscriptionUtil.shouldShowRacDialog(mContext)); assertTrue(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } @Test public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialog_returnFalse() { public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialogForAllEsims_returnFalse() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext)); assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } @Test public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnFalse() { public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnFalse() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(NO_RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext)); assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } private void addNetworkTransportType(int networkType) { Loading Loading
src/com/android/settings/ResetNetwork.java +1 −1 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ public class ResetNetwork extends InstrumentedFragment { .setTitleRes(R.string.reset_mobile_network_settings_confirm_title) .setSourceMetricsCategory(getMetricsCategory()); if (resetSims && SubscriptionUtil.shouldShowRacDialog(context)) { if (resetSims && SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(context)) { context.startActivity( EuiccRacConnectivityDialogActivity.getIntent(context, launcher.toIntent())); } else { Loading
src/com/android/settings/network/EraseEuiccDataController.java +1 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ public class EraseEuiccDataController extends BasePreferenceController { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; } if (SubscriptionUtil.shouldShowRacDialog(mContext)) { if (SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)) { EuiccRacConnectivityDialogFragment.show(mHostFragment); } else { EraseEuiccDataDialogFragment.show(mHostFragment); Loading
src/com/android/settings/network/SubscriptionUtil.java +20 −5 Original line number Diff line number Diff line Loading @@ -542,9 +542,7 @@ public class SubscriptionUtil { return; } if (isCarrierRac(context, carrierId) && (!isConnectedToWifi(context) || isConnectedToMobileDataWithDifferentSubId(context, subId))) { if (shouldShowRacDialogWhenErasingEsim(context, subId, carrierId)) { context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId)); } else { context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId)); Loading Loading @@ -883,18 +881,35 @@ public class SubscriptionUtil { } /** * Check if warning dialog should be presented when erasing all eSIMS. * Check if warning dialog should be presented when erasing all eSIMs. * * @param context Context to check if any sim carrier use RAC and device Wi-Fi connection. * @return {@code true} if dialog should be presented to the user. */ public static boolean shouldShowRacDialog(@NonNull Context context) { public static boolean shouldShowRacDialogWhenErasingAllEsims(@NonNull Context context) { if (sEnableRacDialogForTesting != null) { return sEnableRacDialogForTesting; } return !isConnectedToWifi(context) && hasSubscriptionWithRacCarrier(context); } /** * Check if warning dialog should be presented when erasing eSIM. * * @param context Context to check if any sim carrier use RAC and device Wi-Fi connection. * @param subId Subscription ID for the single eSIM. * @param carrierId Carrier ID for the single eSIM. * @return {@code true} if dialog should be presented to the user. */ @VisibleForTesting static boolean shouldShowRacDialogWhenErasingEsim( @NonNull Context context, int subId, int carrierId) { return isCarrierRac(context, carrierId) && !isConnectedToWifi(context) && !isConnectedToMobileDataWithDifferentSubId(context, subId); } /** * Retrieves NetworkCapabilities for the active network. * Loading
tests/robotests/src/com/android/settings/network/SubscriptionUtilRoboTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package com.android.settings.network; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; import android.content.Context; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.telephony.SubscriptionManager; Loading @@ -42,6 +44,8 @@ import org.robolectric.shadows.ShadowSubscriptionManager; public class SubscriptionUtilRoboTest { private static final int SUBID_1 = 1; private static final int SUBID_2 = 2; private static final int RAC_CARRIER_ID = 1; private static final int CARRIER_ID = 2; private Context mContext; private NetworkCapabilities mNetworkCapabilities; Loading @@ -49,13 +53,16 @@ public class SubscriptionUtilRoboTest { @Mock private ConnectivityManager mConnectivityManager; @Mock private Resources mResources; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class)); when(mContext.getResources()).thenReturn(mResources); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mResources.getIntArray(anyInt())).thenReturn(new int[] {RAC_CARRIER_ID}); } @Test Loading @@ -74,6 +81,58 @@ public class SubscriptionUtilRoboTest { assertFalse(SubscriptionUtil.isConnectedToMobileDataWithDifferentSubId(mContext, SUBID_1)); } @Test public void carrierIsNotRAC_showRacDialogForEsim_returnFalse() { assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim(mContext, SUBID_1, CARRIER_ID)); } @Test public void carrierIsNotRAC_noWifi_noDataConnection_showRacDialogForEsimreturnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim(mContext, SUBID_1, CARRIER_ID)); } @Test public void carrierIsRAC_isConnectedToDataOnSubId2_showRacDialogForEsim_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_2); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_hasWifi_showRacDialogForEsim_returnFalse() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_isConnectedToDataOnSubId1_noWifi_showRacDialogForEsim_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_1); assertTrue( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } @Test public void carrierIsRAC_noData_noWifi_showRacDialogForEsim_returnTrue() { addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertTrue( SubscriptionUtil.shouldShowRacDialogWhenErasingEsim( mContext, SUBID_1, RAC_CARRIER_ID)); } private void addNetworkTransportType(int networkType) { mNetworkCapabilities = new NetworkCapabilities.Builder().addTransportType(networkType).build(); Loading
tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -658,36 +658,36 @@ public class SubscriptionUtilTest { } @Test public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnTrue() { public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnTrue() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); assertTrue(SubscriptionUtil.shouldShowRacDialog(mContext)); assertTrue(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } @Test public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialog_returnFalse() { public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialogForAllEsims_returnFalse() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext)); assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } @Test public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnFalse() { public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnFalse() { when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC); final SubscriptionInfo info = mock(SubscriptionInfo.class); when(info.getCarrierId()).thenReturn(NO_RAC_CARRIER_ID); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info)); addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext)); assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)); } private void addNetworkTransportType(int networkType) { Loading