Loading src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java +18 −12 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.TtsSpan; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; Loading @@ -33,10 +34,10 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; import com.android.settings.R; import java.util.List; public class ImeiInfoDialogController { private static final String TAG = "ImeiInfoDialog"; @VisibleForTesting static final int ID_PRL_VERSION_VALUE = R.id.prl_version_value; private static final int ID_MIN_NUMBER_LABEL = R.id.min_number_label; Loading Loading @@ -75,15 +76,24 @@ public class ImeiInfoDialogController { mDialog = dialog; mSlotId = slotId; final Context context = dialog.getContext(); mTelephonyManager = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE); mSubscriptionInfo = getSubscriptionInfo(context, slotId); mSubscriptionInfo = context.getSystemService(SubscriptionManager.class) .getActiveSubscriptionInfoForSimSlotIndex(slotId); if (mSubscriptionInfo != null) { mTelephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubscriptionInfo.getSubscriptionId()); } else { mTelephonyManager = null; } } /** * Sets IMEI/MEID information based on whether the device is CDMA or GSM. */ public void populateImeiInfo() { if (mTelephonyManager == null) { Log.w(TAG, "TelephonyManager for this slot is null. Invalid slot? id=" + mSlotId); return; } if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) { updateDialogForCdmaPhone(); } else { Loading @@ -94,9 +104,9 @@ public class ImeiInfoDialogController { private void updateDialogForCdmaPhone() { final Resources res = mDialog.getContext().getResources(); mDialog.setText(ID_MEID_NUMBER_VALUE, getMeid()); mDialog.setText(ID_MIN_NUMBER_VALUE, mSubscriptionInfo != null ? mTelephonyManager.getCdmaMin( mSubscriptionInfo.getSubscriptionId()) : ""); mDialog.setText(ID_MIN_NUMBER_VALUE, mSubscriptionInfo != null ? mTelephonyManager.getCdmaMin(mSubscriptionInfo.getSubscriptionId()) : ""); if (res.getBoolean(R.bool.config_msid_enable)) { mDialog.setText(ID_MIN_NUMBER_LABEL, Loading Loading @@ -125,10 +135,6 @@ public class ImeiInfoDialogController { mDialog.removeViewFromScreen(ID_CDMA_SETTINGS); } private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) { return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId); } @VisibleForTesting String getCdmaPrlVersion() { return mTelephonyManager.getCdmaPrlVersion(); Loading tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java +24 −3 Original line number Diff line number Diff line Loading @@ -28,12 +28,14 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import org.junit.Before; Loading @@ -43,6 +45,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowSubscriptionManager; import org.robolectric.shadows.ShadowTelephonyManager; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) Loading @@ -53,6 +58,8 @@ public class ImeiInfoDialogControllerTest { private static final String IMEI_NUMBER = "2341982751254"; private static final String MIN_NUMBER = "123417851315"; private static final String IMEI_SV_NUMBER = "12"; private static final int SLOT_ID = 0; private static final int SUB_ID = 0; @Mock private ImeiInfoDialogFragment mDialog; Loading @@ -68,10 +75,16 @@ public class ImeiInfoDialogControllerTest { public void setup() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); final ShadowSubscriptionManager ssm = Shadow.extract(mContext.getSystemService( SubscriptionManager.class)); ssm.setActiveSubscriptionInfos(mSubscriptionInfo); when(mSubscriptionInfo.getSubscriptionId()).thenReturn(SUB_ID); final ShadowTelephonyManager stm = Shadow.extract(mContext.getSystemService( TelephonyManager.class)); stm.setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager); when(mDialog.getContext()).thenReturn(mContext); mController = spy(new ImeiInfoDialogController(mDialog, 0 /* phone id */)); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); mController = spy(new ImeiInfoDialogController(mDialog, SLOT_ID)); doReturn(PRL_VERSION).when(mController).getCdmaPrlVersion(); doReturn(MEID_NUMBER).when(mController).getMeid(); Loading @@ -80,6 +93,14 @@ public class ImeiInfoDialogControllerTest { when(mTelephonyManager.getImei(anyInt())).thenReturn(IMEI_NUMBER); } @Test public void populateImeiInfo_invalidSlot_shouldSetNothing() { mController = spy(new ImeiInfoDialogController(mDialog, SLOT_ID + 1)); mController.populateImeiInfo(); verify(mDialog, never()).setText(anyInt(), any()); } @Test public void populateImeiInfo_cdmaLteEnabled_shouldSetMeidAndImeiAndMin() { doReturn(true).when(mController).isCdmaLteEnabled(); Loading Loading
src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java +18 −12 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.TtsSpan; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; Loading @@ -33,10 +34,10 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; import com.android.settings.R; import java.util.List; public class ImeiInfoDialogController { private static final String TAG = "ImeiInfoDialog"; @VisibleForTesting static final int ID_PRL_VERSION_VALUE = R.id.prl_version_value; private static final int ID_MIN_NUMBER_LABEL = R.id.min_number_label; Loading Loading @@ -75,15 +76,24 @@ public class ImeiInfoDialogController { mDialog = dialog; mSlotId = slotId; final Context context = dialog.getContext(); mTelephonyManager = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE); mSubscriptionInfo = getSubscriptionInfo(context, slotId); mSubscriptionInfo = context.getSystemService(SubscriptionManager.class) .getActiveSubscriptionInfoForSimSlotIndex(slotId); if (mSubscriptionInfo != null) { mTelephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubscriptionInfo.getSubscriptionId()); } else { mTelephonyManager = null; } } /** * Sets IMEI/MEID information based on whether the device is CDMA or GSM. */ public void populateImeiInfo() { if (mTelephonyManager == null) { Log.w(TAG, "TelephonyManager for this slot is null. Invalid slot? id=" + mSlotId); return; } if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) { updateDialogForCdmaPhone(); } else { Loading @@ -94,9 +104,9 @@ public class ImeiInfoDialogController { private void updateDialogForCdmaPhone() { final Resources res = mDialog.getContext().getResources(); mDialog.setText(ID_MEID_NUMBER_VALUE, getMeid()); mDialog.setText(ID_MIN_NUMBER_VALUE, mSubscriptionInfo != null ? mTelephonyManager.getCdmaMin( mSubscriptionInfo.getSubscriptionId()) : ""); mDialog.setText(ID_MIN_NUMBER_VALUE, mSubscriptionInfo != null ? mTelephonyManager.getCdmaMin(mSubscriptionInfo.getSubscriptionId()) : ""); if (res.getBoolean(R.bool.config_msid_enable)) { mDialog.setText(ID_MIN_NUMBER_LABEL, Loading Loading @@ -125,10 +135,6 @@ public class ImeiInfoDialogController { mDialog.removeViewFromScreen(ID_CDMA_SETTINGS); } private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) { return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId); } @VisibleForTesting String getCdmaPrlVersion() { return mTelephonyManager.getCdmaPrlVersion(); Loading
tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java +24 −3 Original line number Diff line number Diff line Loading @@ -28,12 +28,14 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import org.junit.Before; Loading @@ -43,6 +45,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowSubscriptionManager; import org.robolectric.shadows.ShadowTelephonyManager; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) Loading @@ -53,6 +58,8 @@ public class ImeiInfoDialogControllerTest { private static final String IMEI_NUMBER = "2341982751254"; private static final String MIN_NUMBER = "123417851315"; private static final String IMEI_SV_NUMBER = "12"; private static final int SLOT_ID = 0; private static final int SUB_ID = 0; @Mock private ImeiInfoDialogFragment mDialog; Loading @@ -68,10 +75,16 @@ public class ImeiInfoDialogControllerTest { public void setup() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); final ShadowSubscriptionManager ssm = Shadow.extract(mContext.getSystemService( SubscriptionManager.class)); ssm.setActiveSubscriptionInfos(mSubscriptionInfo); when(mSubscriptionInfo.getSubscriptionId()).thenReturn(SUB_ID); final ShadowTelephonyManager stm = Shadow.extract(mContext.getSystemService( TelephonyManager.class)); stm.setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager); when(mDialog.getContext()).thenReturn(mContext); mController = spy(new ImeiInfoDialogController(mDialog, 0 /* phone id */)); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); mController = spy(new ImeiInfoDialogController(mDialog, SLOT_ID)); doReturn(PRL_VERSION).when(mController).getCdmaPrlVersion(); doReturn(MEID_NUMBER).when(mController).getMeid(); Loading @@ -80,6 +93,14 @@ public class ImeiInfoDialogControllerTest { when(mTelephonyManager.getImei(anyInt())).thenReturn(IMEI_NUMBER); } @Test public void populateImeiInfo_invalidSlot_shouldSetNothing() { mController = spy(new ImeiInfoDialogController(mDialog, SLOT_ID + 1)); mController.populateImeiInfo(); verify(mDialog, never()).setText(anyInt(), any()); } @Test public void populateImeiInfo_cdmaLteEnabled_shouldSetMeidAndImeiAndMin() { doReturn(true).when(mController).isCdmaLteEnabled(); Loading