Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c16ef29 authored by Andy Chou's avatar Andy Chou Committed by Android (Google) Code Review
Browse files

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

parents 2f2a3c40 7c89a929
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -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
+35 −16
Original line number Diff line number Diff line
@@ -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
+9 −9
Original line number Diff line number Diff line
@@ -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();