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

Commit 8aeca8e7 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Disable the phone number when no subscription

To align with SIM status, if no sim in this slot, show "Not available"
and disable instead.

Fix: 333386151
Flag: EXEMPT bug fix
Test: manual - on about phone
Test: unit test
Change-Id: I5053863cc69ff468036df87a8c87447ab0c2aaed
parent 8dde780a
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
        for (int simSlotNumber = 0; simSlotNumber < mPreferenceList.size(); simSlotNumber++) {
            final Preference simStatusPreference = mPreferenceList.get(simSlotNumber);
            simStatusPreference.setTitle(getPreferenceTitle(simSlotNumber));
            simStatusPreference.setSummary(getPhoneNumber(simSlotNumber));
            setPhoneNumber(simSlotNumber);
        }
    }

@@ -93,24 +93,15 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
        return true;
    }

    private CharSequence getFirstPhoneNumber() {
        final List<SubscriptionInfo> subscriptionInfoList =
                mSubscriptionManager.getActiveSubscriptionInfoList();
        if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) {
            return mContext.getText(R.string.device_info_default);
        }

        // For now, We only return first result for slice view.
        return getFormattedPhoneNumber(subscriptionInfoList.get(0));
    }

    private CharSequence getPhoneNumber(int simSlot) {
    private void setPhoneNumber(int simSlot) {
        final Preference simStatusPreference = mPreferenceList.get(simSlot);
        final SubscriptionInfo subscriptionInfo = getSubscriptionInfo(simSlot);
        simStatusPreference.setEnabled(subscriptionInfo != null);
        if (subscriptionInfo == null) {
            return mContext.getText(R.string.device_info_default);
            simStatusPreference.setSummary(mContext.getString(R.string.device_info_not_available));
        } else {
            simStatusPreference.setSummary(getFormattedPhoneNumber(subscriptionInfo));
        }

        return getFormattedPhoneNumber(subscriptionInfo);
    }

    private CharSequence getPreferenceTitle(int simSlot) {
+5 −6
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.R;
import com.android.settings.testutils.ResourcesUtils;

import org.junit.Before;
@@ -135,25 +136,23 @@ public class PhoneNumberPreferenceControllerTest {
    }

    @Test
    public void getSummary_cannotGetActiveSubscriptionInfo_shouldShowUnknown() {
    public void getSummary_cannotGetActiveSubscriptionInfo_shouldShowNotAvailable() {
        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(null);
        mController.displayPreference(mScreen);

        mController.updateState(mPreference);

        verify(mPreference).setSummary(ResourcesUtils.getResourcesString(
                mContext, "device_info_default"));
        verify(mPreference).setSummary(mContext.getString(R.string.device_info_not_available));
    }

    @Test
    public void getSummary_getEmptySubscriptionInfo_shouldShowUnknown() {
    public void getSummary_getEmptySubscriptionInfo_shouldShowNotAvailable() {
        List<SubscriptionInfo> infos = new ArrayList<>();
        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(infos);

        mController.displayPreference(mScreen);
        mController.updateState(mPreference);

        verify(mPreference).setSummary(ResourcesUtils.getResourcesString(
                mContext, "device_info_default"));
        verify(mPreference).setSummary(mContext.getString(R.string.device_info_not_available));
    }
}