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

Commit 6f8cc6f0 authored by songferngwang's avatar songferngwang Committed by SongFerng Wang
Browse files

Fix search indexed the item from the invisible sim

When search start to index and run to MobileNetworkSettings.java, the
TelephonyBasePreferenceController will find which subId can be the
"AVAILABLE" from the active subscriptionInfo list. This active subscriptionInfo
list does not be filtered, so the search uses the invisibile sim's item for user.

Bug: 335509130
Test: atest MobileNetworkUtilsTest (pass)
Change-Id: I2840e7de344347643197592e125f5524d27a068e
parent 75779c3f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -708,12 +708,13 @@ public class MobileNetworkUtils {
        return tm.getNetworkOperatorName();
    }

    private static int[] getActiveSubscriptionIdList(Context context) {
    @VisibleForTesting
    static int[] getActiveSubscriptionIdList(Context context) {
        final SubscriptionManager subscriptionManager = context.getSystemService(
                SubscriptionManager.class).createForAllUserProfiles();
        final List<SubscriptionInfo> subInfoList =
                subscriptionManager.getActiveSubscriptionInfoList();
        if (subInfoList == null) {
                SubscriptionUtil.getActiveSubscriptions(subscriptionManager);
        if (subInfoList == null || subInfoList.isEmpty()) {
            return new int[0];
        }
        int[] activeSubIds = new int[subInfoList.size()];
+27 −0
Original line number Diff line number Diff line
@@ -239,6 +239,33 @@ public class MobileNetworkUtilsTest {
                .isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
    }

    @Test
    public void getActiveSubscriptionIdList_nonActive_returnEmptyArray() {
        int[] expectedList = new int[0];
        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());

        assertThat(MobileNetworkUtils.getActiveSubscriptionIdList(mContext))
                .isEqualTo(expectedList);
    }

    @Test
    public void getActiveSubscriptionIdList_normalCaseTwoActiveSims_returnValidSubId() {
        int[] expectedList = {SUB_ID_1, SUB_ID_2};

        assertThat(MobileNetworkUtils.getActiveSubscriptionIdList(mContext))
                .isEqualTo(expectedList);
    }

    @Test
    public void getActiveSubscriptionIdList_TwoActiveSimsAndOneIsNtn_returnOneSubId() {
        int[] expectedList = {SUB_ID_2};
        when(mSubscriptionInfo1.isEmbedded()).thenReturn(true);
        when(mSubscriptionInfo1.isOnlyNonTerrestrialNetwork()).thenReturn(true);

        assertThat(MobileNetworkUtils.getActiveSubscriptionIdList(mContext))
                .isEqualTo(expectedList);
    }

    @Test
    public void shouldDisplayNetworkSelectOptions_HideCarrierNetwork_returnFalse() {
        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,