Merge "Fix typo onReconnectQualifedNetworkType" into main
diff --git a/src/java/com/android/internal/telephony/MultiSimSettingController.java b/src/java/com/android/internal/telephony/MultiSimSettingController.java
index aaeba23..a5f433b 100644
--- a/src/java/com/android/internal/telephony/MultiSimSettingController.java
+++ b/src/java/com/android/internal/telephony/MultiSimSettingController.java
@@ -17,6 +17,7 @@
package com.android.internal.telephony;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING;
import static android.telephony.TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED;
import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_ALL;
@@ -632,7 +633,9 @@
if (hasData()) mSubscriptionManagerService.setDefaultDataSubId(subId);
if (hasCalling()) mSubscriptionManagerService.setDefaultVoiceSubId(subId);
if (hasMessaging()) mSubscriptionManagerService.setDefaultSmsSubId(subId);
- sendDefaultSubConfirmedNotification(subId);
+ if (!mSubscriptionManagerService.isEsimBootStrapProvisioningActivated()) {
+ sendDefaultSubConfirmedNotification(subId);
+ }
return;
}
@@ -685,7 +688,9 @@
// Update mPrimarySubList. Opportunistic subscriptions can't be default
// data / voice / sms subscription.
List<Integer> prevPrimarySubList = mPrimarySubList;
- mPrimarySubList = activeSubList.stream().filter(info -> !info.isOpportunistic())
+ mPrimarySubList = activeSubList.stream()
+ .filter(info -> !info.isOpportunistic())
+ .filter(info -> info.getProfileClass() != PROFILE_CLASS_PROVISIONING)
.map(info -> info.getSubscriptionId())
.collect(Collectors.toList());
@@ -751,6 +756,12 @@
private void sendSubChangeNotificationIfNeeded(int change, boolean dataSelected,
boolean voiceSelected, boolean smsSelected) {
+
+ if (mSubscriptionManagerService.isEsimBootStrapProvisioningActivated()) {
+ log("esim bootstrap activation in progress, skip notification");
+ return;
+ }
+
@TelephonyManager.DefaultSubscriptionSelectType
int simSelectDialogType = getSimSelectDialogType(
change, dataSelected, voiceSelected, smsSelected);
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 8757c97..fcbd9d0 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -4422,6 +4422,43 @@
}
/**
+ * checks whether esim bootstrap is activated for any of the available active subscription info
+ * list.
+ *
+ * @return {@code true} if esim bootstrap is activated for any of the active subscription,
+ * else {@code false}
+ *
+ */
+ public boolean isEsimBootStrapProvisioningActivated() {
+ if (!mFeatureFlags.esimBootstrapProvisioningFlag()) {
+ return false;
+ }
+
+ List<SubscriptionInfo> activeSubInfos =
+ getActiveSubscriptionInfoList(mContext.getOpPackageName(),
+ mContext.getAttributionTag(), true/*isForAllProfile*/);
+
+ return activeSubInfos.stream().anyMatch(subInfo -> subInfo != null
+ && subInfo.getProfileClass() == SubscriptionManager.PROFILE_CLASS_PROVISIONING);
+ }
+
+ /**
+ * checks whether esim bootstrap is activated for the subscription.
+ *
+ * @return {@code true} if esim bootstrap is activated for sub id else {@code false}
+ *
+ */
+ public boolean isEsimBootStrapProvisioningActiveForSubId(int subId) {
+ if (!mFeatureFlags.esimBootstrapProvisioningFlag()) {
+ return false;
+ }
+
+ SubscriptionInfoInternal subInfo = getSubscriptionInfoInternal(subId);
+ return subInfo != null
+ && subInfo.getProfileClass() == SubscriptionManager.PROFILE_CLASS_PROVISIONING;
+ }
+
+ /**
* Get the current calling package name.
* @return the current calling package name
*/
diff --git a/tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java
index a7e9604..d1ab64d 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java
@@ -1007,4 +1007,57 @@
// Default data is set to sub1
verify(mSubscriptionManagerService).syncGroupedSetting(1);
}
+
+ @Test
+ public void testDailogsAndWarnings_WithBootstrapSim() {
+ doReturn(true).when(mFeatureFlags).esimBootstrapProvisioningFlag();
+
+ // Mark sub 2 as inactive.
+ markSubscriptionInactive(2);
+ mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded();
+ sendCarrierConfigChanged(0, 1);
+ processAllMessages();
+
+ // Sub 1 should be default sub silently.
+ verify(mSubscriptionManagerService).setDefaultDataSubId(1);
+ verify(mSubscriptionManagerService).setDefaultVoiceSubId(1);
+ verify(mSubscriptionManagerService).setDefaultSmsSubId(1);
+ verifyDismissIntentSent();
+
+ // Mark sub 2 bootstrap sim as active in phone[1].
+ doReturn(true).when(mSubscriptionManagerService).isEsimBootStrapProvisioningActivated();
+ setSimSlotIndex(2, 1);
+ clearInvocations(mSubscriptionManagerService);
+ clearInvocations(mContext);
+ mSubInfo[2] = new SubscriptionInfoInternal.Builder().setId(2).setSimSlotIndex(1)
+ .setProfileClass(SubscriptionManager.PROFILE_CLASS_PROVISIONING).build();
+ mMultiSimSettingControllerUT.notifySubscriptionInfoChanged();
+ sendCarrierConfigChanged(1, 2);
+ processAllMessages();
+
+ // Taking out SIM 1.
+ clearInvocations(mSubscriptionManagerService);
+ markSubscriptionInactive(1/*subid*/);
+ mMultiSimSettingControllerUT.notifySubscriptionInfoChanged();
+ sendCarrierConfigChanged(0/*phoneid*/, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ processAllMessages();
+
+ // No user selection needed, no intent should be sent for notification
+ verify(mContext, never()).sendBroadcast(any());
+
+ //Insert back sim1 and switch from sub 1 to sub 3 in phone[0].
+ clearInvocations(mSubscriptionManagerService);
+ markSubscriptionInactive(1);
+ setSimSlotIndex(3, 0);
+ mMultiSimSettingControllerUT.notifySubscriptionInfoChanged();
+ sendCarrierConfigChanged(0/*phoneid*/, 3/*subid*/);
+ processAllMessages();
+
+ // Sub 3 should be default sub.
+ verify(mSubscriptionManagerService).setDefaultDataSubId(3);
+ verify(mSubscriptionManagerService).setDefaultVoiceSubId(3);
+ verify(mSubscriptionManagerService).setDefaultSmsSubId(3);
+ verify(mContext, never()).sendBroadcast(any());
+ }
+
}