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

Commit 6f628e60 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Don't return hidden subscription in getActiveSubIdList

Now getActiveSubscriptionInfoList will not return hidden
subscriptions. And getActiveSubIdList should be consistent
with it.

Bug: 124690005
Test: manual

Change-Id: I448b95c42062295d8dede97b4a57f6973b14c7d9
Merged-In: I448b95c42062295d8dede97b4a57f6973b14c7d9
parent 29046e53
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -2268,12 +2268,30 @@ public class SubscriptionController extends ISub.Stub {
        return allSubs;
    }

    private boolean isInvisibleSubscription(int subId) {
        for (SubscriptionInfo info : mCacheOpportunisticSubInfoList) {
            if (info.getSubscriptionId() == subId) {
                return SubscriptionManager.isInvisibleSubscription(info);
            }
        }

        return false;
    }


    /**
     * @return the list of subId's that are active, is never null but the length maybe 0.
     */
    @Override
    public int[] getActiveSubIdList() {
        ArrayList<Integer> allSubs = getActiveSubIdArrayList();
    public int[] getActiveSubIdList(boolean visibleOnly) {
        List<Integer> allSubs = getActiveSubIdArrayList();

        if (visibleOnly) {
            // Grouped opportunistic subscriptions should be hidden.
            allSubs = allSubs.stream().filter(subId -> isInvisibleSubscription(subId))
                    .collect(Collectors.toList());
        }

        int[] subIdArr = new int[allSubs.size()];
        int i = 0;
        for (int sub : allSubs) {
+7 −7
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ public class SubscriptionControllerTest extends TelephonyTest {

        testInsertSim();
        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList();
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
        int subID = subIds[0];

@@ -189,7 +189,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
        testInsertSim();

        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList();
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
        int subID = subIds[0];

@@ -300,7 +300,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
    @SmallTest
    public void testMigrateImsSettings() throws Exception {
        testInsertSim();
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList();
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
        int subID = subIds[0];

@@ -554,7 +554,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
        /* insert some sims */
        testInsertMultipleRemoteSims();
        assertEquals(1, mSubscriptionControllerUT.getDefaultSubId());
        int[] subIdsArray = mSubscriptionControllerUT.getActiveSubIdList();
        int[] subIdsArray = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIdsArray.length > 0);
        int len = subIdsArray.length;

@@ -564,7 +564,7 @@ public class SubscriptionControllerTest extends TelephonyTest {

        assertTrue(result > 0);
        // now check the number of subs left. should be one less than earlier
        int[] newSubIdsArray = mSubscriptionControllerUT.getActiveSubIdList();
        int[] newSubIdsArray = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(newSubIdsArray.length > 0);
        assertEquals(len - 1, newSubIdsArray.length);

@@ -802,8 +802,8 @@ public class SubscriptionControllerTest extends TelephonyTest {
        mSubscriptionControllerUT.addSubInfoRecord("123", 1);   // sub 1
        mSubscriptionControllerUT.addSubInfoRecord("456", 0);   // sub 2

        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        // Make sure the return sub ids are sorted by slot index
        assertTrue("active sub ids = " + mSubscriptionControllerUT.getActiveSubIdList(),
                Arrays.equals(mSubscriptionControllerUT.getActiveSubIdList(), new int[]{2, 1}));
        assertTrue("active sub ids = " + subIds, Arrays.equals(subIds, new int[]{2, 1}));
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -151,7 +151,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest {
        ((MockContentResolver) mContext.getContentResolver()).addProvider(
                SubscriptionManager.CONTENT_URI.getAuthority(),
                new FakeSubscriptionContentProvider());
        doReturn(new int[]{}).when(mSubscriptionController).getActiveSubIdList();
        doReturn(new int[]{}).when(mSubscriptionController)
                .getActiveSubIdList(/*visibleOnly*/false);
        mIccRecord = mUiccProfile.getIccRecords();

        mSubscriptionInfoUpdaterHandlerThread = new SubscriptionInfoUpdaterHandlerThread(TAG);
@@ -170,7 +171,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest {
    public void testSimAbsent() throws Exception {
        doReturn(Arrays.asList(mSubInfo)).when(mSubscriptionController)
                .getSubInfoUsingSlotIndexPrivileged(eq(FAKE_SUB_ID_1), anyBoolean());
        doReturn(new int[]{FAKE_SUB_ID_1}).when(mSubscriptionController).getActiveSubIdList();
        doReturn(new int[]{FAKE_SUB_ID_1}).when(mSubscriptionController)
                .getActiveSubIdList(/*visibleOnly*/false);
        mUpdater.updateInternalIccState(
                IccCardConstants.INTENT_VALUE_ICC_ABSENT, null, FAKE_SUB_ID_1);

+1 −1
Original line number Diff line number Diff line
@@ -259,7 +259,7 @@ public class SubscriptionControllerMock extends SubscriptionController {
        throw new RuntimeException("not implemented");
    }
    @Override
    public int[] getActiveSubIdList() {
    public int[] getActiveSubIdList(boolean visibleOnly) {
        throw new RuntimeException("not implemented");
    }
    @Override