Loading src/com/android/settings/wifi/WifiConfigController2.java +11 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java +57 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading Loading @@ -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; } } Loading
src/com/android/settings/wifi/WifiConfigController2.java +11 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading
tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java +57 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading Loading @@ -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; } }