From 7880c988ea40d2e63be5059df8df7dc4c8a6d22e Mon Sep 17 00:00:00 2001 From: changbetty Date: Fri, 21 Feb 2020 21:57:13 +0800 Subject: [PATCH] [Telephony Setting] Add supplementary conditions for CDMA display IMEI info when subscriptionInfo is null Bug: 149307162 Test: make RunSettingsRoboTests ROBOTEST_FILTER=ImeiInfoDialogControllerTest Change-Id: I1dd83ba55b34433b2b600b8a998000347b6ae5e8 Merged-In: I011b52fd25ca9ad48be3afcdabd9bdd443cd121d (cherry picked from commit 288fa30c2d67f48e11bfe850adf85634ebabdad5) --- .../imei/ImeiInfoDialogController.java | 12 ++++++- .../imei/ImeiInfoDialogControllerTest.java | 31 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java index 5c3772bac8d..9ab21de3816 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java @@ -119,7 +119,8 @@ public class ImeiInfoDialogController { mDialog.setText(ID_PRL_VERSION_VALUE, getCdmaPrlVersion()); - if (mSubscriptionInfo != null && isCdmaLteEnabled()) { + if ((mSubscriptionInfo != null && isCdmaLteEnabled()) || + (mSubscriptionInfo == null && isSimPresent(mSlotId))) { // Show IMEI for LTE device mDialog.setText(ID_IMEI_VALUE, getTextAsDigits(mTelephonyManager.getImei(mSlotId))); @@ -151,6 +152,15 @@ public class ImeiInfoDialogController { == PhoneConstants.LTE_ON_CDMA_TRUE; } + boolean isSimPresent(int slotId) { + final int simState = mTelephonyManager.getSimState(slotId); + if ((simState != TelephonyManager.SIM_STATE_ABSENT) && + (simState != TelephonyManager.SIM_STATE_UNKNOWN)) { + return true; + } + return false; + } + @VisibleForTesting String getMeid() { return mTelephonyManager.getMeid(mSlotId); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java index 7ad8d631edf..2fb2a3d6c55 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java @@ -142,6 +142,37 @@ public class ImeiInfoDialogControllerTest { verify(mDialog).removeViewFromScreen(ID_GSM_SETTINGS); } + + @Test + public void populateImeiInfo_cdmaSimPresent_shouldSetImeiInfoAndSetAllCdmaSetting() { + ReflectionHelpers.setField(mController, "mSubscriptionInfo", null); + when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA); + when(mTelephonyManager.getSimState(anyInt())).thenReturn( + TelephonyManager.SIM_STATE_PRESENT); + + mController.populateImeiInfo(); + + verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER); + verify(mDialog).setText(ID_MIN_NUMBER_VALUE, ""); + verify(mDialog).setText(ID_PRL_VERSION_VALUE, ""); + verify(mDialog).setText(eq(ID_IMEI_VALUE), any()); + verify(mDialog).setText(eq(ID_IMEI_SV_VALUE), any()); + } + + @Test + public void populateImeiInfo_cdmaSimABSENT_shouldSetImeiInfoAndSetAllCdmaSetting() { + ReflectionHelpers.setField(mController, "mSubscriptionInfo", null); + when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA); + when(mTelephonyManager.getSimState(anyInt())).thenReturn(TelephonyManager.SIM_STATE_ABSENT); + + mController.populateImeiInfo(); + + verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER); + verify(mDialog).setText(ID_MIN_NUMBER_VALUE, ""); + verify(mDialog).setText(ID_PRL_VERSION_VALUE, ""); + verify(mDialog).removeViewFromScreen(ID_GSM_SETTINGS); + } + @Test public void populateImeiInfo_gsmSimDisabled_shouldSetImeiAndRemoveCdmaSettings() { ReflectionHelpers.setField(mController, "mSubscriptionInfo", null);