Merge "Don't allow CBRS subscriptions to be set as default for Calls/SMS" into qt-dev am: 6010c3a9a8
am: bc0affa980
Change-Id: I6ac853489bde85a8274ed5dd943443e5ca1ff48a
This commit is contained in:
@@ -28,6 +28,7 @@ import com.android.settings.core.BasePreferenceController;
|
|||||||
import com.android.settings.network.SubscriptionUtil;
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
import com.android.settings.network.SubscriptionsChangeListener;
|
import com.android.settings.network.SubscriptionsChangeListener;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import androidx.lifecycle.Lifecycle;
|
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
|
// We'll have one entry for each available subscription, plus one for a "ask me every
|
||||||
// time" entry at the end.
|
// time" entry at the end.
|
||||||
final CharSequence[] displayNames = new CharSequence[subs.size() + 1];
|
final ArrayList<CharSequence> displayNames = new ArrayList<>();
|
||||||
final CharSequence[] subscriptionIds = new CharSequence[subs.size() + 1];
|
final ArrayList<CharSequence> subscriptionIds = new ArrayList<>();
|
||||||
|
|
||||||
final int serviceDefaultSubId = getDefaultSubscriptionId();
|
final int serviceDefaultSubId = getDefaultSubscriptionId();
|
||||||
boolean subIsAvailable = false;
|
boolean subIsAvailable = false;
|
||||||
|
|
||||||
int i = 0;
|
for (SubscriptionInfo sub : subs) {
|
||||||
for (; i < subs.size(); i++) {
|
if (sub.isOpportunistic()) {
|
||||||
displayNames[i] = subs.get(i).getDisplayName();
|
continue;
|
||||||
final int subId = subs.get(i).getSubscriptionId();
|
}
|
||||||
subscriptionIds[i] = Integer.toString(subId);
|
displayNames.add(sub.getDisplayName());
|
||||||
|
final int subId = sub.getSubscriptionId();
|
||||||
|
subscriptionIds.add(Integer.toString(subId));
|
||||||
if (subId == serviceDefaultSubId) {
|
if (subId == serviceDefaultSubId) {
|
||||||
subIsAvailable = true;
|
subIsAvailable = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add the extra "Ask every time" value at the end.
|
// Add the extra "Ask every time" value at the end.
|
||||||
displayNames[i] = mContext.getString(R.string.calls_and_sms_ask_every_time);
|
displayNames.add(mContext.getString(R.string.calls_and_sms_ask_every_time));
|
||||||
subscriptionIds[i] = Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
subscriptionIds.add(Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
|
||||||
|
|
||||||
mPreference.setEntries(displayNames);
|
mPreference.setEntries(displayNames.toArray(new CharSequence[0]));
|
||||||
mPreference.setEntryValues(subscriptionIds);
|
mPreference.setEntryValues(subscriptionIds.toArray(new CharSequence[0]));
|
||||||
|
|
||||||
if (subIsAvailable) {
|
if (subIsAvailable) {
|
||||||
mPreference.setValue(Integer.toString(serviceDefaultSubId));
|
mPreference.setValue(Integer.toString(serviceDefaultSubId));
|
||||||
|
@@ -147,6 +147,34 @@ public class DefaultSubscriptionControllerTest {
|
|||||||
Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
|
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
|
@Test
|
||||||
public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() {
|
public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() {
|
||||||
final SubscriptionInfo sub1 = createMockSub(111, "sub1");
|
final SubscriptionInfo sub1 = createMockSub(111, "sub1");
|
||||||
|
Reference in New Issue
Block a user