Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd13405d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Show one SIM only for EAP-SIM when dual SIMs have the same carrier ID"...

Merge "Show one SIM only for EAP-SIM when dual SIMs have the same carrier ID" into tm-qpr-dev am: 4a0bc2c3

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19600285



Change-Id: I81eb13d2c651d25accc69f68afb634882daeca9f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 939f2a9e 4a0bc2c3
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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);
+57 −8
Original line number Diff line number Diff line
@@ -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;
    }
}