Updating mDefaultFallbackSubId cache in multiple scenarios
Bug: 238827346
Test: AtestVerified
Change-Id: Idb332661ac285060a4816fae54792b35dcbbb719
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 3b58014..4a32898 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -1469,7 +1469,9 @@
// Set the default sub if not set or if single sim device
if (!isSubscriptionForRemoteSim(subscriptionType)) {
if (!SubscriptionManager.isValidSubscriptionId(defaultSubId)
- || subIdCountMax == 1) {
+ || subIdCountMax == 1
+ || mDefaultFallbackSubId.get() ==
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
logdl("setting default fallback subid to " + subId);
setDefaultFallbackSubId(subId, subscriptionType);
}
@@ -1688,7 +1690,26 @@
// Refresh the Cache of Active Subscription Info List
refreshCachedActiveSubscriptionInfoList();
+ boolean isFallBackRefreshRequired = false;
+ if (mDefaultFallbackSubId.get() > SubscriptionManager.INVALID_SUBSCRIPTION_ID &&
+ mSlotIndexToSubIds.getCopy(slotIndex) != null &&
+ mSlotIndexToSubIds.getCopy(slotIndex).contains(mDefaultFallbackSubId.get())) {
+ isFallBackRefreshRequired = true;
+ }
mSlotIndexToSubIds.remove(slotIndex);
+ // set mDefaultFallbackSubId to invalid in case mSlotIndexToSubIds do not have any entries
+ if (mSlotIndexToSubIds.size() ==0 ) {
+ mDefaultFallbackSubId.set(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ } else if (isFallBackRefreshRequired) {
+ // set mDefaultFallbackSubId to valid subId from mSlotIndexToSubIds
+ for (int index = 0; index < getActiveSubIdArrayList().size(); index ++) {
+ int subId = getActiveSubIdArrayList().get(index);
+ if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ mDefaultFallbackSubId.set(subId);
+ break;
+ }
+ }
+ }
}
/**