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
This commit is contained in:
songferngwang
2024-05-14 10:45:10 +00:00
committed by SongFerng Wang
parent 75779c3fc2
commit 6f8cc6f0b6
2 changed files with 31 additions and 3 deletions

View File

@@ -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()];

View File

@@ -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,