Merge "Don't return hidden subscription in getActiveSubIdList"
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 858331e..f8b58ff 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -2268,12 +2268,30 @@
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) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
index 38ebf4e..0a683b0 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
@@ -148,7 +148,7 @@
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 @@
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 @@
@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 @@
/* 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 @@
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 @@
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}));
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java
index c804cd0..52a0cb1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java
@@ -151,7 +151,8 @@
((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 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);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/mocks/SubscriptionControllerMock.java b/tests/telephonytests/src/com/android/internal/telephony/mocks/SubscriptionControllerMock.java
index 411ed1d..2007dca 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/mocks/SubscriptionControllerMock.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/mocks/SubscriptionControllerMock.java
@@ -259,7 +259,7 @@
throw new RuntimeException("not implemented");
}
@Override
- public int[] getActiveSubIdList() {
+ public int[] getActiveSubIdList(boolean visibleOnly) {
throw new RuntimeException("not implemented");
}
@Override