Merge "Extract and fix logic for showing rac dialog." into 24D1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
958b737fcc
@@ -158,7 +158,7 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
.setTitleRes(R.string.reset_mobile_network_settings_confirm_title)
|
.setTitleRes(R.string.reset_mobile_network_settings_confirm_title)
|
||||||
.setSourceMetricsCategory(getMetricsCategory());
|
.setSourceMetricsCategory(getMetricsCategory());
|
||||||
|
|
||||||
if (resetSims && SubscriptionUtil.shouldShowRacDialog(context)) {
|
if (resetSims && SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(context)) {
|
||||||
context.startActivity(
|
context.startActivity(
|
||||||
EuiccRacConnectivityDialogActivity.getIntent(context, launcher.toIntent()));
|
EuiccRacConnectivityDialogActivity.getIntent(context, launcher.toIntent()));
|
||||||
} else {
|
} else {
|
||||||
|
@@ -50,7 +50,7 @@ public class EraseEuiccDataController extends BasePreferenceController {
|
|||||||
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
|
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (SubscriptionUtil.shouldShowRacDialog(mContext)) {
|
if (SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext)) {
|
||||||
EuiccRacConnectivityDialogFragment.show(mHostFragment);
|
EuiccRacConnectivityDialogFragment.show(mHostFragment);
|
||||||
} else {
|
} else {
|
||||||
EraseEuiccDataDialogFragment.show(mHostFragment);
|
EraseEuiccDataDialogFragment.show(mHostFragment);
|
||||||
|
@@ -542,9 +542,7 @@ public class SubscriptionUtil {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCarrierRac(context, carrierId)
|
if (shouldShowRacDialogWhenErasingEsim(context, subId, carrierId)) {
|
||||||
&& (!isConnectedToWifi(context)
|
|
||||||
|| isConnectedToMobileDataWithDifferentSubId(context, subId))) {
|
|
||||||
context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId));
|
context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId));
|
||||||
} else {
|
} else {
|
||||||
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
|
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
|
||||||
@@ -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.
|
* @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.
|
* @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) {
|
if (sEnableRacDialogForTesting != null) {
|
||||||
return sEnableRacDialogForTesting;
|
return sEnableRacDialogForTesting;
|
||||||
}
|
}
|
||||||
|
|
||||||
return !isConnectedToWifi(context) && hasSubscriptionWithRacCarrier(context);
|
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.
|
* Retrieves NetworkCapabilities for the active network.
|
||||||
*
|
*
|
||||||
|
@@ -19,11 +19,13 @@ package com.android.settings.network;
|
|||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.robolectric.Shadows.shadowOf;
|
import static org.robolectric.Shadows.shadowOf;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
@@ -42,6 +44,8 @@ import org.robolectric.shadows.ShadowSubscriptionManager;
|
|||||||
public class SubscriptionUtilRoboTest {
|
public class SubscriptionUtilRoboTest {
|
||||||
private static final int SUBID_1 = 1;
|
private static final int SUBID_1 = 1;
|
||||||
private static final int SUBID_2 = 2;
|
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 Context mContext;
|
||||||
private NetworkCapabilities mNetworkCapabilities;
|
private NetworkCapabilities mNetworkCapabilities;
|
||||||
@@ -49,13 +53,16 @@ public class SubscriptionUtilRoboTest {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private ConnectivityManager mConnectivityManager;
|
private ConnectivityManager mConnectivityManager;
|
||||||
|
@Mock private Resources mResources;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
|
mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
|
||||||
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
|
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
|
||||||
|
when(mResources.getIntArray(anyInt())).thenReturn(new int[] {RAC_CARRIER_ID});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -74,6 +81,58 @@ public class SubscriptionUtilRoboTest {
|
|||||||
assertFalse(SubscriptionUtil.isConnectedToMobileDataWithDifferentSubId(mContext, SUBID_1));
|
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) {
|
private void addNetworkTransportType(int networkType) {
|
||||||
mNetworkCapabilities =
|
mNetworkCapabilities =
|
||||||
new NetworkCapabilities.Builder().addTransportType(networkType).build();
|
new NetworkCapabilities.Builder().addTransportType(networkType).build();
|
||||||
|
@@ -658,36 +658,36 @@ public class SubscriptionUtilTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnTrue() {
|
public void hasSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnTrue() {
|
||||||
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
||||||
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
||||||
when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID);
|
when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID);
|
||||||
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
||||||
addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH);
|
addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH);
|
||||||
|
|
||||||
assertTrue(SubscriptionUtil.shouldShowRacDialog(mContext));
|
assertTrue(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialog_returnFalse() {
|
public void hasSubscriptionWithRacCarrier_hasWifi_showRacDialogForAllEsims_returnFalse() {
|
||||||
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
||||||
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
||||||
when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID);
|
when(info.getCarrierId()).thenReturn(RAC_CARRIER_ID);
|
||||||
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
||||||
addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
||||||
|
|
||||||
assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext));
|
assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialog_returnFalse() {
|
public void hasNoSubscriptionWithRacCarrier_hasNoWifi_showRacDialogForAllEsims_returnFalse() {
|
||||||
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
when(mResources.getIntArray(anyInt())).thenReturn(CARRIERS_THAT_USE_RAC);
|
||||||
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
||||||
when(info.getCarrierId()).thenReturn(NO_RAC_CARRIER_ID);
|
when(info.getCarrierId()).thenReturn(NO_RAC_CARRIER_ID);
|
||||||
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
|
||||||
addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
||||||
|
|
||||||
assertFalse(SubscriptionUtil.shouldShowRacDialog(mContext));
|
assertFalse(SubscriptionUtil.shouldShowRacDialogWhenErasingAllEsims(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addNetworkTransportType(int networkType) {
|
private void addNetworkTransportType(int networkType) {
|
||||||
|
Reference in New Issue
Block a user