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:
TreeHugger Robot
2022-08-19 14:22:11 +00:00
committed by Android (Google) Code Review
2 changed files with 68 additions and 11 deletions

View File

@@ -42,6 +42,7 @@ import android.text.InputType;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
@@ -1495,13 +1496,20 @@ public class WifiConfigController2 implements TextWatcher,
} }
// Shows display name of each active subscription. // 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) { 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)); SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
} }
mEapSimSpinner.setAdapter( mEapSimSpinner.setAdapter(
getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()]))); getSpinnerAdapter(displayNames.values().toArray(new String[displayNames.size()])));
mEapSimSpinner.setSelection(0 /* position */); mEapSimSpinner.setSelection(0 /* position */);
if (displayNames.size() == 1) { if (displayNames.size() == 1) {
mEapSimSpinner.setEnabled(false); mEapSimSpinner.setEnabled(false);

View File

@@ -16,6 +16,8 @@
package com.android.settings.wifi; 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 com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
@@ -86,6 +88,8 @@ public class WifiConfigController2Test {
private AndroidKeystoreAliasLoader mAndroidKeystoreAliasLoader; private AndroidKeystoreAliasLoader mAndroidKeystoreAliasLoader;
@Mock @Mock
private WifiManager mWifiManager; private WifiManager mWifiManager;
@Mock
Spinner mEapMethodSimSpinner;
private View mView; private View mView;
private Spinner mHiddenSettingsSpinner; private Spinner mHiddenSettingsSpinner;
private Spinner mEapCaCertSpinner; private Spinner mEapCaCertSpinner;
@@ -141,6 +145,7 @@ public class WifiConfigController2Test {
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert); mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
ipSettingsSpinner.setSelection(DHCP); ipSettingsSpinner.setSelection(DHCP);
mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class)); mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
when(mEapMethodSimSpinner.getSelectedItemPosition()).thenReturn(WIFI_EAP_METHOD_SIM);
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry, mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
WifiConfigUiBase2.MODE_CONNECT); WifiConfigUiBase2.MODE_CONNECT);
@@ -813,10 +818,7 @@ public class WifiConfigController2Test {
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP); when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry, mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
WifiConfigUiBase2.MODE_CONNECT); WifiConfigUiBase2.MODE_CONNECT);
final Spinner eapMethodSpinner = mock(Spinner.class); mController.mEapMethodSpinner = mEapMethodSimSpinner;
when(eapMethodSpinner.getSelectedItemPosition()).thenReturn(
WifiConfigController2.WIFI_EAP_METHOD_SIM);
mController.mEapMethodSpinner = eapMethodSpinner;
mController.loadSims(); mController.loadSims();
@@ -837,10 +839,7 @@ public class WifiConfigController2Test {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(subscriptionInfo)); mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(subscriptionInfo));
mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry, mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
WifiConfigUiBase2.MODE_CONNECT); WifiConfigUiBase2.MODE_CONNECT);
final Spinner eapMethodSpinner = mock(Spinner.class); mController.mEapMethodSpinner = mEapMethodSimSpinner;
when(eapMethodSpinner.getSelectedItemPosition()).thenReturn(
WifiConfigController2.WIFI_EAP_METHOD_SIM);
mController.mEapMethodSpinner = eapMethodSpinner;
mController.loadSims(); mController.loadSims();
@@ -848,6 +847,48 @@ public class WifiConfigController2Test {
assertThat(wifiConfiguration.carrierId).isEqualTo(carrierId); 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 @Test
public void loadCaCertificateValue_shouldPersistentAsDefault() { public void loadCaCertificateValue_shouldPersistentAsDefault() {
setUpModifyingSavedCertificateConfigController(null, null); setUpModifyingSavedCertificateConfigController(null, null);
@@ -940,4 +981,12 @@ public class WifiConfigController2Test {
// certificates are covered by mController.onItemSelected after showSecurityFields end. // certificates are covered by mController.onItemSelected after showSecurityFields end.
mController.mEapMethodSpinner.setSelection(Eap.TLS); 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;
}
} }