Merge "Avoid IMEI overrided by getSummary() for dual SIM condition" into qt-dev

This commit is contained in:
Andy Chou
2019-04-26 15:04:25 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 32 deletions

View File

@@ -126,13 +126,7 @@ public class ImeiInfoDialogController {
}
private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) {
final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(context)
.getActiveSubscriptionInfoList(true);
if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) {
return null;
}
return subscriptionInfoList.get(slotId);
return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId);
}
@VisibleForTesting

View File

@@ -20,6 +20,8 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA;
import android.content.Context;
import android.os.UserManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.annotation.VisibleForTesting;
@@ -76,11 +78,27 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
}
}
@Override
public void updateState(Preference preference) {
if (preference == null) {
return;
}
int size = mPreferenceList.size();
for (int i = 0; i < size; i++) {
Preference pref = mPreferenceList.get(i);
updatePreference(pref, i);
}
}
@Override
public CharSequence getSummary() {
final int phoneType = mTelephonyManager.getPhoneType();
return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid()
: mTelephonyManager.getImei();
return getSummary(0);
}
private CharSequence getSummary(int simSlot) {
final int phoneType = getPhoneType(simSlot);
return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid(simSlot)
: mTelephonyManager.getImei(simSlot);
}
@Override
@@ -117,19 +135,12 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
@Override
public void copy() {
Sliceable.setCopyContent(mContext, getSummary(), mContext.getText(R.string.status_imei));
Sliceable.setCopyContent(mContext, getSummary(0), getTitle(0));
}
private void updatePreference(Preference preference, int simSlot) {
final int phoneType = mTelephonyManager.getPhoneType();
if (phoneType == PHONE_TYPE_CDMA) {
preference.setTitle(getTitleForCdmaPhone(simSlot));
preference.setSummary(getMeid(simSlot));
} else {
// GSM phone
preference.setTitle(getTitleForGsmPhone(simSlot));
preference.setSummary(mTelephonyManager.getImei(simSlot));
}
preference.setTitle(getTitle(simSlot));
preference.setSummary(getSummary(simSlot));
}
private CharSequence getTitleForGsmPhone(int simSlot) {
@@ -142,9 +153,17 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
: mContext.getString(R.string.status_meid_number);
}
@VisibleForTesting
String getMeid(int simSlot) {
return mTelephonyManager.getMeid(simSlot);
private CharSequence getTitle(int simSlot) {
final int phoneType = getPhoneType(simSlot);
return phoneType == PHONE_TYPE_CDMA ? getTitleForCdmaPhone(simSlot)
: getTitleForGsmPhone(simSlot);
}
private int getPhoneType(int slotIndex) {
SubscriptionInfo subInfo = SubscriptionManager.from(mContext)
.getActiveSubscriptionInfoForSimSlotIndex(slotIndex);
return mTelephonyManager.getCurrentPhoneType(subInfo != null ? subInfo.getSubscriptionId()
: SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
}
@VisibleForTesting

View File

@@ -93,7 +93,7 @@ public class ImeiInfoPreferenceControllerTest {
public void displayPreference_multiSimGsm_shouldAddSecondPreference() {
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
mController.displayPreference(mScreen);
@@ -104,8 +104,8 @@ public class ImeiInfoPreferenceControllerTest {
public void displayPreference_singleSimCdmaPhone_shouldSetSingleSimCdmaTitleAndMeid() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String meid = "125132215123";
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
doReturn(meid).when(mController).getMeid(anyInt());
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.displayPreference(mScreen);
@@ -118,8 +118,8 @@ public class ImeiInfoPreferenceControllerTest {
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
final String meid = "125132215123";
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
doReturn(meid).when(mController).getMeid(anyInt());
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.displayPreference(mScreen);
@@ -134,7 +134,7 @@ public class ImeiInfoPreferenceControllerTest {
public void displayPreference_singleSimGsmPhone_shouldSetSingleSimGsmTitleAndImei() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String imei = "125132215123";
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
mController.displayPreference(mScreen);
@@ -148,7 +148,7 @@ public class ImeiInfoPreferenceControllerTest {
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
final String imei = "125132215123";
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
mController.displayPreference(mScreen);
@@ -176,8 +176,8 @@ public class ImeiInfoPreferenceControllerTest {
public void copy_shouldCopyImeiToClipboard() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String meid = "125132215123";
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
when(mTelephonyManager.getMeid()).thenReturn(meid);
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.copy();