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

Commit 6010c3a9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't allow CBRS subscriptions to be set as default for Calls/SMS" into qt-dev

parents 65b535f4 ed5c2a1b
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.SubscriptionsChangeListener;

import java.util.ArrayList;
import java.util.List;

import androidx.lifecycle.Lifecycle;
@@ -124,27 +125,29 @@ public abstract class DefaultSubscriptionController extends BasePreferenceContro

        // We'll have one entry for each available subscription, plus one for a "ask me every
        // time" entry at the end.
        final CharSequence[] displayNames = new CharSequence[subs.size() + 1];
        final CharSequence[] subscriptionIds = new CharSequence[subs.size() + 1];
        final ArrayList<CharSequence> displayNames = new ArrayList<>();
        final ArrayList<CharSequence> subscriptionIds = new ArrayList<>();

        final int serviceDefaultSubId = getDefaultSubscriptionId();
        boolean subIsAvailable = false;

        int i = 0;
        for (; i < subs.size(); i++) {
            displayNames[i] = subs.get(i).getDisplayName();
            final int subId = subs.get(i).getSubscriptionId();
            subscriptionIds[i] = Integer.toString(subId);
        for (SubscriptionInfo sub : subs) {
            if (sub.isOpportunistic()) {
                continue;
            }
            displayNames.add(sub.getDisplayName());
            final int subId = sub.getSubscriptionId();
            subscriptionIds.add(Integer.toString(subId));
            if (subId == serviceDefaultSubId) {
                subIsAvailable = true;
            }
        }
        // Add the extra "Ask every time" value at the end.
        displayNames[i] = mContext.getString(R.string.calls_and_sms_ask_every_time);
        subscriptionIds[i] = Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
        displayNames.add(mContext.getString(R.string.calls_and_sms_ask_every_time));
        subscriptionIds.add(Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID));

        mPreference.setEntries(displayNames);
        mPreference.setEntryValues(subscriptionIds);
        mPreference.setEntries(displayNames.toArray(new CharSequence[0]));
        mPreference.setEntryValues(subscriptionIds.toArray(new CharSequence[0]));

        if (subIsAvailable) {
            mPreference.setValue(Integer.toString(serviceDefaultSubId));
+28 −0
Original line number Diff line number Diff line
@@ -147,6 +147,34 @@ public class DefaultSubscriptionControllerTest {
                Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
    }

    @Test
    public void displayPreference_threeSubsOneIsOpportunistic_correctListPreferenceValues() {
        final SubscriptionInfo sub1 = createMockSub(111, "sub1");
        final SubscriptionInfo sub2 = createMockSub(222, "sub2");
        final SubscriptionInfo sub3 = createMockSub(333, "sub3");

        // Mark sub2 as opportunistic; then it should not appear in the list of entries/entryValues.
        when(sub2.isOpportunistic()).thenReturn(true);

        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2, sub3));
        doReturn(sub1.getSubscriptionId()).when(mController).getDefaultSubscriptionId();

        mController.displayPreference(mScreen);

        final CharSequence[] entries = mListPreference.getEntries();
        assertThat(entries.length).isEqualTo(3);
        assertThat(entries[0]).isEqualTo("sub1");
        assertThat(entries[1]).isEqualTo("sub3");
        assertThat(entries[2]).isEqualTo(mContext.getString(R.string.calls_and_sms_ask_every_time));

        final CharSequence[] entryValues = mListPreference.getEntryValues();
        assertThat(entryValues.length).isEqualTo(3);
        assertThat(entryValues[0]).isEqualTo("111");
        assertThat(entryValues[1]).isEqualTo("333");
        assertThat(entryValues[2]).isEqualTo(
                Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
    }

    @Test
    public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() {
        final SubscriptionInfo sub1 = createMockSub(111, "sub1");