diff --git a/res/layout/dialog_sim_status.xml b/res/layout/dialog_sim_status.xml index b9abb15598b..80abc1ed0b0 100644 --- a/res/layout/dialog_sim_status.xml +++ b/res/layout/dialog_sim_status.xml @@ -156,15 +156,6 @@ android:layout_height="wrap_content" android:text="@string/device_info_not_available"/> - - - - - - - - - - - - diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 855cd122f41..e6f7a0ebc75 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -22,7 +22,6 @@ import android.annotation.Nullable; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; @@ -47,7 +46,6 @@ import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyCallback; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; -import android.telephony.UiccCardInfo; import android.telephony.euicc.EuiccManager; import android.telephony.ims.ImsException; import android.telephony.ims.ImsMmTelManager; @@ -64,17 +62,13 @@ import com.android.settings.R; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.Utils; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.utils.ThreadUtils; import java.util.List; -import java.util.Map; -import java.util.concurrent.atomic.AtomicReference; /** * Controller for Sim Status information within the About Phone Settings page. */ -public class SimStatusDialogController implements LifecycleObserver, - DialogInterface.OnShowListener { +public class SimStatusDialogController implements LifecycleObserver { private final static String TAG = "SimStatusDialogCtrl"; @@ -105,12 +99,6 @@ public class SimStatusDialogController implements LifecycleObserver, @VisibleForTesting final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value; @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; - @VisibleForTesting - final static int EID_INFO_QRCODE_ID = R.id.esim_id_qrcode; - @VisibleForTesting final static int IMS_REGISTRATION_STATE_LABEL_ID = R.id.ims_reg_state_label; @VisibleForTesting final static int IMS_REGISTRATION_STATE_VALUE_ID = R.id.ims_reg_state_value; @@ -162,7 +150,6 @@ public class SimStatusDialogController implements LifecycleObserver, private boolean mShowLatestAreaInfo; private boolean mIsRegisteredListener = false; - private AtomicReference mEid = null; private final BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() { @Override @@ -239,8 +226,6 @@ public class SimStatusDialogController implements LifecycleObserver, } public void initialize() { - requestForUpdateEid(); - if (mSubscriptionInfo == null) { return; } @@ -268,19 +253,6 @@ public class SimStatusDialogController implements LifecycleObserver, updateImsRegistrationState(); } - /** - * Callback when dialog end of show(). - */ - public void onShow(DialogInterface dialog) { - if (mEid != null) { - String eidText = mEid.get(); - if (eidText != null) { - // Present QR code after the completion of layout - mDialog.setQrCode(EID_INFO_QRCODE_ID, eidText); - } - } - } - /** * Deinitialization works */ @@ -633,71 +605,6 @@ public class SimStatusDialogController implements LifecycleObserver, } } - @VisibleForTesting - protected void requestForUpdateEid() { - ThreadUtils.postOnBackgroundThread(() -> { - mEid = getEid(mSlotIndex); - ThreadUtils.postOnMainThread(() -> updateEid(mEid)); - }); - } - - @VisibleForTesting - public AtomicReference getEid(int slotIndex) { - boolean shouldHaveEid = false; - String eid = null; - if (getTelephonyManager().getActiveModemCount() > MAX_PHONE_COUNT_SINGLE_SIM) { - // Get EID per-SIM in multi-SIM mode - final Map mapping = mTelephonyManager - .getLogicalToPhysicalSlotMapping(); - final int pSlotId = mapping.getOrDefault(slotIndex, - SubscriptionManager.INVALID_SIM_SLOT_INDEX); - - if (pSlotId != SubscriptionManager.INVALID_SIM_SLOT_INDEX) { - final List infos = getTelephonyManager().getUiccCardsInfo(); - - for (UiccCardInfo info : infos) { - if (info.getPhysicalSlotIndex() == 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) && (eid == null)) { - return null; - } - return new AtomicReference(eid); - } - - @VisibleForTesting - protected void updateEid(AtomicReference eid) { - boolean removeQrCode = true; - if (eid == null) { - mDialog.removeSettingFromScreen(EID_INFO_LABEL_ID); - mDialog.removeSettingFromScreen(EID_INFO_VALUE_ID); - mDialog.removeSettingFromScreen(EID_INFO_QRCODE_ID); - } else { - String eidText = eid.get(); - if (eidText != null) { - mDialog.setText(EID_INFO_VALUE_ID, eidText); - removeQrCode = (eidText == ""); - } - } - if (removeQrCode) { - mDialog.removeSettingFromScreen(EID_INFO_QRCODE_ID); - } - } - private boolean isImsRegistrationStateShowUp() { if (mSubscriptionInfo == null) { return false; diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java index 3bd9b343b2d..4105db1037e 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java @@ -19,14 +19,11 @@ package com.android.settings.deviceinfo.simstatus; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.os.Bundle; -import android.graphics.Bitmap; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; -import android.widget.ImageView; import android.widget.TextView; -import android.util.Log; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; @@ -35,7 +32,6 @@ import androidx.fragment.app.FragmentManager; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.deviceinfo.PhoneNumberUtil; -import com.android.settingslib.qrcode.QrCodeGenerator; import java.util.Arrays; import java.util.stream.IntStream; @@ -84,7 +80,6 @@ public class SimStatusDialogFragment extends InstrumentedDialogFragment { Dialog dlg = builder.setView(mRootView).create(); dlg.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); - dlg.setOnShowListener(mController); return dlg; } @@ -107,8 +102,7 @@ public class SimStatusDialogFragment extends InstrumentedDialogFragment { **/ private static final int[] sViewIdsInDigitFormat = IntStream .of(SimStatusDialogController.ICCID_INFO_VALUE_ID, - SimStatusDialogController.PHONE_NUMBER_VALUE_ID, - SimStatusDialogController.EID_INFO_VALUE_ID) + SimStatusDialogController.PHONE_NUMBER_VALUE_ID) .sorted().toArray(); public void setText(int viewId, CharSequence text) { @@ -128,19 +122,4 @@ public class SimStatusDialogFragment extends InstrumentedDialogFragment { textView.setText(text); textView.setTextIsSelectable(enableCopy); } - - public void setQrCode(int viewId, String qrcodeText) { - ImageView qrCodeView = (ImageView) mRootView.findViewById(viewId); - - Bitmap qrCodeBitmap = null; - try { - qrCodeBitmap = QrCodeGenerator.encodeQrCode(qrcodeText, qrCodeView.getWidth()); - } catch (Exception exception) { - Log.w(TAG, "Error when presenting QR code in + " + qrCodeView, exception); - } - if (qrCodeBitmap == null) { - return; - } - qrCodeView.setImageBitmap(qrCodeBitmap); - } } diff --git a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java index 428c575e4a9..8c24cbb1d2e 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -18,8 +18,6 @@ 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_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.ICCID_INFO_LABEL_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.IMS_REGISTRATION_STATE_LABEL_ID; @@ -115,12 +113,8 @@ public class SimStatusDialogControllerTest { private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; private AtomicBoolean mEuiccEnabled; - private AtomicReference mEid; private AtomicInteger mUpdatePhoneNumberCount; - private static final String TEST_EID_FROM_CARD = "11111111111111111111111111111111"; - private static final String TEST_EID_FROM_MANAGER = "22222222222222222222222222222222"; - private static final int MAX_PHONE_COUNT_DUAL_SIM = 2; @Before @@ -149,21 +143,12 @@ public class SimStatusDialogControllerTest { mUpdatePhoneNumberCount = new AtomicInteger(); mEuiccEnabled = new AtomicBoolean(false); - mEid = new AtomicReference(""); mController = new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */) { @Override public TelephonyManager getTelephonyManager() { return mTelephonyManager; } - @Override - protected void requestForUpdateEid() {} - - @Override - public AtomicReference getEid(int slotIndex) { - return mEuiccEnabled.get() ? mEid : null; - } - @Override public void updatePhoneNumber() { super.updatePhoneNumber(); @@ -205,7 +190,6 @@ public class SimStatusDialogControllerTest { doReturn(carrierName).when(mSubscriptionInfo).getCarrierName(); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(NETWORK_PROVIDER_VALUE_ID, carrierName); } @@ -213,7 +197,6 @@ public class SimStatusDialogControllerTest { @Test public void initialize_shouldUpdatePhoneNumber() { mController.initialize(); - mController.updateEid(mController.getEid(0)); assertTrue(mUpdatePhoneNumberCount.get() > 0); } @@ -223,7 +206,6 @@ public class SimStatusDialogControllerTest { when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).removeSettingFromScreen(OPERATOR_INFO_LABEL_ID); verify(mDialog).removeSettingFromScreen(OPERATOR_INFO_VALUE_ID); @@ -234,7 +216,6 @@ public class SimStatusDialogControllerTest { when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String inServiceText = ResourcesUtils.getResourcesString( mContext, "radioInfo_service_in"); @@ -246,7 +227,6 @@ public class SimStatusDialogControllerTest { when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String offServiceText = ResourcesUtils.getResourcesString( mContext, "radioInfo_service_off"); @@ -261,7 +241,6 @@ public class SimStatusDialogControllerTest { ServiceState.STATE_OUT_OF_SERVICE); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String offServiceText = ResourcesUtils.getResourcesString( mContext, "radioInfo_service_out"); @@ -275,7 +254,6 @@ public class SimStatusDialogControllerTest { when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String inServiceText = ResourcesUtils.getResourcesString( mContext, "radioInfo_service_in"); @@ -291,7 +269,6 @@ public class SimStatusDialogControllerTest { setupCellSignalStrength_lteWcdma(lteDbm, lteAsu, wcdmaDbm, wcdmaAsu); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String signalStrengthString = ResourcesUtils.getResourcesString( mContext, "sim_signal_strength", lteDbm, lteAsu); @@ -307,7 +284,6 @@ public class SimStatusDialogControllerTest { setupCellSignalStrength_lteCdma(lteDbm, lteAsu, cdmaDbm, cdmaAsu); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String signalStrengthString = ResourcesUtils.getResourcesString( mContext, "sim_signal_strength", lteDbm, lteAsu); @@ -324,7 +300,6 @@ public class SimStatusDialogControllerTest { setupCellSignalStrength_lteOnly(lteDbm, lteAsu); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String signalStrengthString = ResourcesUtils.getResourcesString( mContext, "sim_signal_strength", lteDbm, lteAsu); @@ -337,7 +312,6 @@ public class SimStatusDialogControllerTest { TelephonyManager.NETWORK_TYPE_EDGE); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(CELL_VOICE_NETWORK_TYPE_VALUE_ID, SimStatusDialogController.getNetworkTypeName(TelephonyManager.NETWORK_TYPE_EDGE)); @@ -349,7 +323,6 @@ public class SimStatusDialogControllerTest { TelephonyManager.NETWORK_TYPE_EDGE); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(CELL_DATA_NETWORK_TYPE_VALUE_ID, SimStatusDialogController.getNetworkTypeName(TelephonyManager.NETWORK_TYPE_EDGE)); @@ -360,7 +333,6 @@ public class SimStatusDialogControllerTest { when(mServiceState.getRoaming()).thenReturn(true); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String roamingOnString = ResourcesUtils.getResourcesString( mContext, "radioInfo_roaming_in"); @@ -372,7 +344,6 @@ public class SimStatusDialogControllerTest { when(mServiceState.getRoaming()).thenReturn(false); mController.initialize(); - mController.updateEid(mController.getEid(0)); final String roamingOffString = ResourcesUtils.getResourcesString( mContext, "radioInfo_roaming_not"); @@ -385,7 +356,6 @@ public class SimStatusDialogControllerTest { CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL, false); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).removeSettingFromScreen(ICCID_INFO_LABEL_ID); verify(mDialog).removeSettingFromScreen(ICCID_INFO_VALUE_ID); @@ -397,7 +367,6 @@ public class SimStatusDialogControllerTest { CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL, false); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID); verify(mDialog, times(2)).removeSettingFromScreen(SIGNAL_STRENGTH_VALUE_ID); @@ -409,7 +378,6 @@ public class SimStatusDialogControllerTest { when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(null); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog, times(2)).setText(eq(SIGNAL_STRENGTH_VALUE_ID), any()); verify(mDialog).removeSettingFromScreen(ICCID_INFO_LABEL_ID); @@ -423,403 +391,10 @@ public class SimStatusDialogControllerTest { doReturn(iccid).when(mTelephonyManager).getSimSerialNumber(); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(ICCID_INFO_VALUE_ID, iccid); } - @Test - public void initialize_updateEid_shouldNotSetEid() { - when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo1 = new UiccCardInfo( - false, // isEuicc - 0, // cardId - null, // eid - 0, // slotIndex - true, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo1); - UiccCardInfo uiccCardInfo2 = new UiccCardInfo( - true, // isEuicc - 1, // cardId - null, // eid (unavailable) - 1, // slotIndex - false, // isRemovable - false, - Collections.singletonList( - new UiccPortInfo( - null, // iccId - 1, // portIdx - 1, // logicalSlotIdx - true // isActive - ) - ) - ); - uiccCardInfos.add(uiccCardInfo2); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 1); - slotMapping.put(1, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(null); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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)); - } - - @Test - public void initialize_updateEid_shouldSetEidFromCard() { - when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo1 = new UiccCardInfo( - true, // isEuicc - 0, // cardId - TEST_EID_FROM_CARD, // eid - 0, // slotIndex - false, // isRemovable - false, - Collections.singletonList(new UiccPortInfo( - null, // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ))); - uiccCardInfos.add(uiccCardInfo1); - UiccCardInfo uiccCardInfo2 = new UiccCardInfo( - false, // isEuicc - 1, // cardId - null, // eid - 1, // slotIndex - true, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 1, // portIdx - 1, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo2); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - slotMapping.put(1, 1); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(TEST_EID_FROM_CARD); - when(mEuiccManager.createForCardId(0)).thenReturn(mEuiccManager); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo1 = new UiccCardInfo( - false, // isEuicc - 0, // cardId - null, // eid - 0, // slotIndex - true, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 1, // portIdx - 1, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo1); - UiccCardInfo uiccCardInfo2 = new UiccCardInfo( - true, // isEuicc - 1, // cardId - null, // eid (unavailable) - 1, // slotIndex - false, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - null, // iccId - 1, // portIdx - 1, // logicalSlotIdx - true // isActive - ) - ) - ); - uiccCardInfos.add(uiccCardInfo2); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 1); - slotMapping.put(1, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(TEST_EID_FROM_MANAGER); - when(mEuiccManager.createForCardId(0)).thenThrow( - new RuntimeException("Unexpected card ID was specified")); - when(mEuiccManager.createForCardId(1)).thenReturn(mEuiccManager); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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 - @Ignore - public void initialize_updateEid_shouldRemoveEid() { - when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo1 = new UiccCardInfo( - false, // isEuicc - 0, // cardId - null, // eid - 0, // slotIndex - true, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo1); - UiccCardInfo uiccCardInfo2 = new UiccCardInfo( - true, // isEuicc - 1, // cardId - TEST_EID_FROM_CARD, // eid - 1, // slotIndex - false, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - null, // iccId - 1, // portIdx - 1, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo2); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - slotMapping.put(1, 1); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(null); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // Remove EID if the card is not eUICC. - 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.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo = new UiccCardInfo( - true, // isEuicc - 0, // cardId - TEST_EID_FROM_CARD, // eid (not used) - 0, // slotIndex - false, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - null, // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(null); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo = new UiccCardInfo( - true, // isEuicc (eUICC slot is selected) - 0, // cardId - TEST_EID_FROM_CARD, // eid (not used) - 0, // slotIndex - false, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - null, // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ) - ) - ); - uiccCardInfos.add(uiccCardInfo); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(TEST_EID_FROM_MANAGER); - when(mEuiccManager.createForCardId(anyInt())).thenThrow( - new RuntimeException("EID shall be retrieved from the default eUICC manager")); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo = new UiccCardInfo( - false, // isEuicc (eUICC slot is not selected) - 0, // cardId - null, // eid - 0, // slotIndex - true, // isRemovable - false, // isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - - ) - )); - uiccCardInfos.add(uiccCardInfo); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(true); - mEuiccEnabled.set(true); - mEid.set(TEST_EID_FROM_MANAGER); - when(mEuiccManager.createForCardId(anyInt())).thenThrow( - new RuntimeException("EID shall be retrieved from the default eUICC manager")); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // 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.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM); - - ArrayList uiccCardInfos = new ArrayList<>(); - UiccCardInfo uiccCardInfo = new UiccCardInfo( - false, // isEuicc - 0, // cardId - null, // eid - 0, // slotIndex - true, // isRemovable - false, //isMultipleEnabledProfileSupported - Collections.singletonList( - new UiccPortInfo( - "123451234567890", // iccId - 0, // portIdx - 0, // logicalSlotIdx - true // isActive - ) - )); - uiccCardInfos.add(uiccCardInfo); - when(mTelephonyManager.getUiccCardsInfo()).thenReturn(uiccCardInfos); - - Map slotMapping = new HashMap<>(); - slotMapping.put(0, 0); - when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping); - - when(mEuiccManager.isEnabled()).thenReturn(false); - mEuiccEnabled.set(false); - mEid.set(null); - - mController.initialize(); - mController.updateEid(mController.getEid(0)); - - // Remove EID if the default eUICC manager indicates that eSIM is not enabled. - verify(mDialog).removeSettingFromScreen(eq(EID_INFO_LABEL_ID)); - verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID)); - } - @Test @Ignore public void initialize_imsRegistered_shouldSetImsRegistrationStateSummaryToRegisterd() { @@ -828,7 +403,6 @@ public class SimStatusDialogControllerTest { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID, mContext.getString(R.string.ims_reg_status_registered)); @@ -842,7 +416,6 @@ public class SimStatusDialogControllerTest { when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID, mContext.getString(R.string.ims_reg_status_not_registered)); @@ -855,7 +428,6 @@ public class SimStatusDialogControllerTest { CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog, never()).removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID); } @@ -867,7 +439,6 @@ public class SimStatusDialogControllerTest { CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false); mController.initialize(); - mController.updateEid(mController.getEid(0)); verify(mDialog).removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID); verify(mDialog).removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID); @@ -878,7 +449,6 @@ public class SimStatusDialogControllerTest { doReturn(null).when(mTelephonyManager).getSignalStrength(); // we should not crash when running the following line mController.initialize(); - mController.updateEid(mController.getEid(0)); } private void setupCellSignalStrength_lteWcdma(int lteDbm, int lteAsu, int wcdmaDbm,