Loading src/com/android/settings/network/telephony/DefaultSubscriptionController.java +14 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading tests/robotests/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading
src/com/android/settings/network/telephony/DefaultSubscriptionController.java +14 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading
tests/robotests/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading