OSDN Git Service

[Telephony Setting] Add supplementary conditions for CDMA display IMEI info when...
authorchangbetty <changbetty@google.com>
Fri, 21 Feb 2020 13:57:13 +0000 (21:57 +0800)
committerandroid-build-team Robot <android-build-team-robot@google.com>
Fri, 28 Feb 2020 21:09:40 +0000 (21:09 +0000)
Bug: 149307162
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ImeiInfoDialogControllerTest
Change-Id: I1dd83ba55b34433b2b600b8a998000347b6ae5e8
Merged-In: I011b52fd25ca9ad48be3afcdabd9bdd443cd121d
(cherry picked from commit 288fa30c2d67f48e11bfe850adf85634ebabdad5)

src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java

index 5c3772b..9ab21de 100644 (file)
@@ -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);
index 7ad8d63..2fb2a3d 100644 (file)
@@ -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);