Merge "Retrieve EID from each card"
am: 2f5ad9cb4d
Change-Id: I0a9f6ac304af1be0960adb16d5125de43c9ad4b0
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
|
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
|
||||||
|
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
|
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
|
@@ -35,12 +35,14 @@ import android.telephony.SubscriptionInfo;
|
|||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.telephony.UiccCardInfo;
|
||||||
import android.telephony.euicc.EuiccManager;
|
import android.telephony.euicc.EuiccManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.internal.telephony.PhoneConstants;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.DeviceInfoUtils;
|
import com.android.settingslib.DeviceInfoUtils;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
@@ -50,6 +52,7 @@ import com.android.settingslib.core.lifecycle.events.OnPause;
|
|||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause {
|
public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause {
|
||||||
|
|
||||||
@@ -82,6 +85,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value;
|
final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
final static int EID_INFO_LABEL_ID = R.id.esim_id_label;
|
||||||
|
@VisibleForTesting
|
||||||
final static int EID_INFO_VALUE_ID = R.id.esim_id_value;
|
final static int EID_INFO_VALUE_ID = R.id.esim_id_value;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final static int IMS_REGISTRATION_STATE_LABEL_ID = R.id.ims_reg_state_label;
|
final static int IMS_REGISTRATION_STATE_LABEL_ID = R.id.ims_reg_state_label;
|
||||||
@@ -105,7 +110,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
|
|||||||
};
|
};
|
||||||
|
|
||||||
private SubscriptionInfo mSubscriptionInfo;
|
private SubscriptionInfo mSubscriptionInfo;
|
||||||
private int mSlotIndex;
|
private final int mSlotIndex;
|
||||||
|
|
||||||
private final SimStatusDialogFragment mDialog;
|
private final SimStatusDialogFragment mDialog;
|
||||||
private final TelephonyManager mTelephonyManager;
|
private final TelephonyManager mTelephonyManager;
|
||||||
@@ -398,10 +403,43 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateEid() {
|
private void updateEid() {
|
||||||
if (mEuiccManager.isEnabled()) {
|
boolean shouldHaveEid = false;
|
||||||
mDialog.setText(EID_INFO_VALUE_ID, mEuiccManager.getEid());
|
String eid = null;
|
||||||
} else {
|
|
||||||
|
if (mTelephonyManager.getPhoneCount() > PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM) {
|
||||||
|
// Get EID per-SIM in multi-SIM mode
|
||||||
|
Map<Integer, Integer> mapping = mTelephonyManager.getLogicalToPhysicalSlotMapping();
|
||||||
|
int pSlotId = mapping.getOrDefault(mSlotIndex,
|
||||||
|
SubscriptionManager.INVALID_SIM_SLOT_INDEX);
|
||||||
|
|
||||||
|
if (pSlotId != SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
|
||||||
|
List<UiccCardInfo> infos = mTelephonyManager.getUiccCardsInfo();
|
||||||
|
|
||||||
|
for (UiccCardInfo info : infos) {
|
||||||
|
if (info.getSlotIndex() == pSlotId) {
|
||||||
|
if (info.isEuicc()) {
|
||||||
|
shouldHaveEid = true;
|
||||||
|
eid = info.getEid();
|
||||||
|
|
||||||
|
if (TextUtils.isEmpty(eid)) {
|
||||||
|
eid = mEuiccManager.createForCardId(info.getCardId()).getEid();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (mEuiccManager.isEnabled()) {
|
||||||
|
// Get EID of default eSIM in single-SIM mode
|
||||||
|
shouldHaveEid = true;
|
||||||
|
eid = mEuiccManager.getEid();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!shouldHaveEid) {
|
||||||
|
mDialog.removeSettingFromScreen(EID_INFO_LABEL_ID);
|
||||||
mDialog.removeSettingFromScreen(EID_INFO_VALUE_ID);
|
mDialog.removeSettingFromScreen(EID_INFO_VALUE_ID);
|
||||||
|
} else if (!TextUtils.isEmpty(eid)) {
|
||||||
|
mDialog.setText(EID_INFO_VALUE_ID, eid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.deviceinfo.simstatus;
|
|||||||
|
|
||||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
|
||||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
|
||||||
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_LABEL_ID;
|
||||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID;
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID;
|
||||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
|
||||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
|
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
|
||||||
@@ -55,10 +56,12 @@ import android.telephony.SignalStrength;
|
|||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.telephony.UiccCardInfo;
|
||||||
import android.telephony.euicc.EuiccManager;
|
import android.telephony.euicc.EuiccManager;
|
||||||
|
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
|
|
||||||
|
import com.android.internal.telephony.PhoneConstants;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.shadow.ShadowDeviceInfoUtils;
|
import com.android.settings.testutils.shadow.ShadowDeviceInfoUtils;
|
||||||
import com.android.settingslib.DeviceInfoUtils;
|
import com.android.settingslib.DeviceInfoUtils;
|
||||||
@@ -79,7 +82,9 @@ import org.robolectric.shadows.ShadowPackageManager;
|
|||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = {ShadowDeviceInfoUtils.class})
|
@Config(shadows = {ShadowDeviceInfoUtils.class})
|
||||||
@@ -117,6 +122,9 @@ public class SimStatusDialogControllerTest {
|
|||||||
private LifecycleOwner mLifecycleOwner;
|
private LifecycleOwner mLifecycleOwner;
|
||||||
private Lifecycle mLifecycle;
|
private Lifecycle mLifecycle;
|
||||||
|
|
||||||
|
private static final String TEST_EID_FROM_CARD = "11111111111111111111111111111111";
|
||||||
|
private static final String TEST_EID_FROM_MANAGER = "22222222222222222222222222222222";
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -140,13 +148,22 @@ public class SimStatusDialogControllerTest {
|
|||||||
doReturn(mSignalStrength).when(mController).getSignalStrength();
|
doReturn(mSignalStrength).when(mController).getSignalStrength();
|
||||||
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
|
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
|
||||||
|
|
||||||
when(mEuiccManager.isEnabled()).thenReturn(true);
|
|
||||||
when(mEuiccManager.getEid()).thenReturn("");
|
|
||||||
ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager);
|
ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager);
|
||||||
ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager);
|
ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager);
|
||||||
ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo);
|
ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo);
|
||||||
ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager);
|
ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager);
|
||||||
ReflectionHelpers.setField(mController, "mSubscriptionManager", mSubscriptionManager);
|
ReflectionHelpers.setField(mController, "mSubscriptionManager", mSubscriptionManager);
|
||||||
|
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(
|
||||||
|
PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(new ArrayList<UiccCardInfo>());
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(
|
||||||
|
new HashMap<Integer, Integer>());
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(false);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn("");
|
||||||
|
when(mEuiccManager.createForCardId(anyInt())).thenReturn(mEuiccManager);
|
||||||
|
|
||||||
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
|
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
|
||||||
when(mPersistableBundle.getBoolean(
|
when(mPersistableBundle.getBoolean(
|
||||||
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
|
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
|
||||||
@@ -408,25 +425,283 @@ public class SimStatusDialogControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
public void initialize_updateEid_shouldNotSetEid() {
|
||||||
public void initialize_showEid_shouldSetEidToSetting() {
|
when(mTelephonyManager.getPhoneCount()).thenReturn(PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM);
|
||||||
final String eid = "12351351231241";
|
|
||||||
when(mEuiccManager.getEid()).thenReturn(eid);
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo1 = new UiccCardInfo(
|
||||||
|
false, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo1);
|
||||||
|
UiccCardInfo uiccCardInfo2 = new UiccCardInfo(
|
||||||
|
true, // isEuicc
|
||||||
|
1, // cardId
|
||||||
|
null, // eid (unavailable)
|
||||||
|
null, // iccid
|
||||||
|
1, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo2);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 1);
|
||||||
|
slotMapping.put(1, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(null);
|
||||||
|
|
||||||
mController.initialize();
|
mController.initialize();
|
||||||
|
|
||||||
verify(mDialog).setText(EID_INFO_VALUE_ID, eid);
|
// Keep 'Not available' if neither the card nor the associated manager can provide EID.
|
||||||
|
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
|
||||||
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
public void initialize_updateEid_shouldSetEidFromCard() {
|
||||||
public void initialize_showEid_euiccManagerIsNotEnabled() {
|
when(mTelephonyManager.getPhoneCount()).thenReturn(PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM);
|
||||||
when(mEuiccManager.isEnabled()).thenReturn(false);
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo1 = new UiccCardInfo(
|
||||||
|
true, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
TEST_EID_FROM_CARD, // eid
|
||||||
|
null, // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo1);
|
||||||
|
UiccCardInfo uiccCardInfo2 = new UiccCardInfo(
|
||||||
|
false, // isEuicc
|
||||||
|
1, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
1, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo2);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
slotMapping.put(1, 1);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
|
||||||
|
|
||||||
mController.initialize();
|
mController.initialize();
|
||||||
|
|
||||||
|
// Set EID retrieved from the card.
|
||||||
|
verify(mDialog).setText(EID_INFO_VALUE_ID, TEST_EID_FROM_CARD);
|
||||||
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldSetEidFromManager() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo1 = new UiccCardInfo(
|
||||||
|
false, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo1);
|
||||||
|
UiccCardInfo uiccCardInfo2 = new UiccCardInfo(
|
||||||
|
true, // isEuicc
|
||||||
|
1, // cardId
|
||||||
|
null, // eid (unavailable)
|
||||||
|
null, // iccid
|
||||||
|
1, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo2);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 1);
|
||||||
|
slotMapping.put(1, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
|
||||||
|
when(mEuiccManager.createForCardId(0)).thenThrow(
|
||||||
|
new RuntimeException("Unexpected card ID was specified"));
|
||||||
|
when(mEuiccManager.createForCardId(1)).thenReturn(mEuiccManager);
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Set EID retrieved from the manager associated with the card which cannot provide EID.
|
||||||
|
verify(mDialog).setText(EID_INFO_VALUE_ID, TEST_EID_FROM_MANAGER);
|
||||||
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldRemoveEid() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo1 = new UiccCardInfo(
|
||||||
|
false, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo1);
|
||||||
|
UiccCardInfo uiccCardInfo2 = new UiccCardInfo(
|
||||||
|
true, // isEuicc
|
||||||
|
1, // cardId
|
||||||
|
TEST_EID_FROM_CARD, // eid
|
||||||
|
null, // iccid
|
||||||
|
1, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo2);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
slotMapping.put(1, 1);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Remove EID if the card is not eUICC.
|
||||||
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
|
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
|
||||||
|
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_LABEL_ID));
|
||||||
|
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldNotSetEidInSingleSimMode() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(
|
||||||
|
PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo = new UiccCardInfo(
|
||||||
|
true, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
TEST_EID_FROM_CARD, // eid (not used)
|
||||||
|
null, // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(null);
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Keep 'Not available' if the default eUICC manager cannot provide EID in Single SIM mode.
|
||||||
|
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
|
||||||
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldSetEidInSingleSimModeWithEnabledEuicc() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(
|
||||||
|
PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo = new UiccCardInfo(
|
||||||
|
true, // isEuicc (eUICC slot is selected)
|
||||||
|
0, // cardId
|
||||||
|
TEST_EID_FROM_CARD, // eid (not used)
|
||||||
|
null, // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
false); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
|
||||||
|
when(mEuiccManager.createForCardId(anyInt())).thenThrow(
|
||||||
|
new RuntimeException("EID shall be retrieved from the default eUICC manager"));
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Set EID retrieved from the default eUICC manager in Single SIM mode.
|
||||||
|
verify(mDialog).setText(EID_INFO_VALUE_ID, TEST_EID_FROM_MANAGER);
|
||||||
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldSetEidInSingleSimModeWithDisabledEuicc() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(
|
||||||
|
PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo = new UiccCardInfo(
|
||||||
|
false, // isEuicc (eUICC slot is not selected)
|
||||||
|
0, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(true);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
|
||||||
|
when(mEuiccManager.createForCardId(anyInt())).thenThrow(
|
||||||
|
new RuntimeException("EID shall be retrieved from the default eUICC manager"));
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Set EID retrieved from the default eUICC manager in Single SIM mode.
|
||||||
|
verify(mDialog).setText(EID_INFO_VALUE_ID, TEST_EID_FROM_MANAGER);
|
||||||
|
verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialize_updateEid_shouldRemoveEidInSingleSimMode() {
|
||||||
|
when(mTelephonyManager.getPhoneCount()).thenReturn(
|
||||||
|
PhoneConstants.MAX_PHONE_COUNT_SINGLE_SIM);
|
||||||
|
|
||||||
|
ArrayList<UiccCardInfo> uiccCardInfos = new ArrayList<>();
|
||||||
|
UiccCardInfo uiccCardInfo = new UiccCardInfo(
|
||||||
|
false, // isEuicc
|
||||||
|
0, // cardId
|
||||||
|
null, // eid
|
||||||
|
"123451234567890", // iccid
|
||||||
|
0, // slotIndex
|
||||||
|
true); // isRemovable
|
||||||
|
uiccCardInfos.add(uiccCardInfo);
|
||||||
|
when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos);
|
||||||
|
|
||||||
|
Map<Integer, Integer> slotMapping = new HashMap<>();
|
||||||
|
slotMapping.put(0, 0);
|
||||||
|
when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
|
||||||
|
|
||||||
|
when(mEuiccManager.isEnabled()).thenReturn(false);
|
||||||
|
when(mEuiccManager.getEid()).thenReturn(null);
|
||||||
|
|
||||||
|
mController.initialize();
|
||||||
|
|
||||||
|
// Remove EID if the default eUICC manager indicates that eSIM is not enabled.
|
||||||
|
verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
|
||||||
|
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_LABEL_ID));
|
||||||
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user