Merge "Show one SIM only for EAP-SIM when dual SIMs have the same carrier ID" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4a0bc2c34b
@@ -42,6 +42,7 @@ import android.text.InputType;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
@@ -1495,13 +1496,20 @@ public class WifiConfigController2 implements TextWatcher,
|
||||
}
|
||||
|
||||
// Shows display name of each active subscription.
|
||||
final ArrayList<CharSequence> displayNames = new ArrayList<>();
|
||||
ArrayMap<Integer, CharSequence> displayNames = new ArrayMap<>();
|
||||
int defaultDataSubscriptionId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
for (SubscriptionInfo activeSubInfo : mActiveSubscriptionInfos) {
|
||||
displayNames.add(
|
||||
// If multiple SIMs have the same carrier id, only the first or default data SIM is
|
||||
// displayed.
|
||||
if (displayNames.containsKey(activeSubInfo.getCarrierId())
|
||||
&& defaultDataSubscriptionId != activeSubInfo.getSubscriptionId()) {
|
||||
continue;
|
||||
}
|
||||
displayNames.put(activeSubInfo.getCarrierId(),
|
||||
SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
|
||||
}
|
||||
mEapSimSpinner.setAdapter(
|
||||
getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()])));
|
||||
getSpinnerAdapter(displayNames.values().toArray(new String[displayNames.size()])));
|
||||
mEapSimSpinner.setSelection(0 /* position */);
|
||||
if (displayNames.size() == 1) {
|
||||
mEapSimSpinner.setEnabled(false);
|
||||
|
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static com.android.settings.wifi.WifiConfigController2.WIFI_EAP_METHOD_SIM;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
@@ -86,6 +88,8 @@ public class WifiConfigController2Test {
|
||||
private AndroidKeystoreAliasLoader mAndroidKeystoreAliasLoader;
|
||||
@Mock
|
||||
private WifiManager mWifiManager;
|
||||
@Mock
|
||||
Spinner mEapMethodSimSpinner;
|
||||
private View mView;
|
||||
private Spinner mHiddenSettingsSpinner;
|
||||
private Spinner mEapCaCertSpinner;
|
||||
@@ -141,6 +145,7 @@ public class WifiConfigController2Test {
|
||||
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
|
||||
ipSettingsSpinner.setSelection(DHCP);
|
||||
mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
|
||||
when(mEapMethodSimSpinner.getSelectedItemPosition()).thenReturn(WIFI_EAP_METHOD_SIM);
|
||||
|
||||
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
|
||||
WifiConfigUiBase2.MODE_CONNECT);
|
||||
@@ -813,10 +818,7 @@ public class WifiConfigController2Test {
|
||||
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
|
||||
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
|
||||
WifiConfigUiBase2.MODE_CONNECT);
|
||||
final Spinner eapMethodSpinner = mock(Spinner.class);
|
||||
when(eapMethodSpinner.getSelectedItemPosition()).thenReturn(
|
||||
WifiConfigController2.WIFI_EAP_METHOD_SIM);
|
||||
mController.mEapMethodSpinner = eapMethodSpinner;
|
||||
mController.mEapMethodSpinner = mEapMethodSimSpinner;
|
||||
|
||||
mController.loadSims();
|
||||
|
||||
@@ -837,10 +839,7 @@ public class WifiConfigController2Test {
|
||||
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(subscriptionInfo));
|
||||
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
|
||||
WifiConfigUiBase2.MODE_CONNECT);
|
||||
final Spinner eapMethodSpinner = mock(Spinner.class);
|
||||
when(eapMethodSpinner.getSelectedItemPosition()).thenReturn(
|
||||
WifiConfigController2.WIFI_EAP_METHOD_SIM);
|
||||
mController.mEapMethodSpinner = eapMethodSpinner;
|
||||
mController.mEapMethodSpinner = mEapMethodSimSpinner;
|
||||
|
||||
mController.loadSims();
|
||||
|
||||
@@ -848,6 +847,48 @@ public class WifiConfigController2Test {
|
||||
assertThat(wifiConfiguration.carrierId).isEqualTo(carrierId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSims_twoSimsWithDifferentCarrierId_showTwoSims() {
|
||||
SubscriptionInfo sub1 = createMockSubscription(1, "sub1", 8888);
|
||||
SubscriptionInfo sub2 = createMockSubscription(2, "sub2", 9999);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
|
||||
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(sub1, sub2));
|
||||
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
|
||||
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
|
||||
WifiConfigUiBase2.MODE_CONNECT);
|
||||
mController.mEapMethodSpinner = mEapMethodSimSpinner;
|
||||
ShadowSubscriptionManager.setDefaultDataSubscriptionId(1);
|
||||
|
||||
mController.loadSims();
|
||||
|
||||
assertThat(mController.mEapSimSpinner.getAdapter().getCount()).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSims_twoSimsWithSameCarrierId_showOneDefaultDataSim() {
|
||||
SubscriptionInfo sub1 = createMockSubscription(1, "sub1", 9999);
|
||||
SubscriptionInfo sub2 = createMockSubscription(2, "sub2", 9999);
|
||||
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
|
||||
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(sub1, sub2));
|
||||
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
|
||||
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
|
||||
WifiConfigUiBase2.MODE_CONNECT);
|
||||
mController.mEapMethodSpinner = mEapMethodSimSpinner;
|
||||
ShadowSubscriptionManager.setDefaultDataSubscriptionId(1);
|
||||
|
||||
mController.loadSims();
|
||||
|
||||
assertThat(mController.mEapSimSpinner.getAdapter().getCount()).isEqualTo(1);
|
||||
assertThat(mController.mEapSimSpinner.getSelectedItem().toString()).isEqualTo("sub1");
|
||||
|
||||
ShadowSubscriptionManager.setDefaultDataSubscriptionId(2);
|
||||
|
||||
mController.loadSims();
|
||||
|
||||
assertThat(mController.mEapSimSpinner.getAdapter().getCount()).isEqualTo(1);
|
||||
assertThat(mController.mEapSimSpinner.getSelectedItem().toString()).isEqualTo("sub2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadCaCertificateValue_shouldPersistentAsDefault() {
|
||||
setUpModifyingSavedCertificateConfigController(null, null);
|
||||
@@ -940,4 +981,12 @@ public class WifiConfigController2Test {
|
||||
// certificates are covered by mController.onItemSelected after showSecurityFields end.
|
||||
mController.mEapMethodSpinner.setSelection(Eap.TLS);
|
||||
}
|
||||
|
||||
private SubscriptionInfo createMockSubscription(int subId, String displayName, int carrierId) {
|
||||
SubscriptionInfo sub = mock(SubscriptionInfo.class);
|
||||
when(sub.getSubscriptionId()).thenReturn(subId);
|
||||
when(sub.getDisplayName()).thenReturn(displayName);
|
||||
when(sub.getCarrierId()).thenReturn(carrierId);
|
||||
return sub;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user