From 48fee33ea29b4c9651413efc9fac665fa5348a19 Mon Sep 17 00:00:00 2001 From: Rafael Higuera Silva Date: Wed, 28 Feb 2024 17:40:00 +0000 Subject: [PATCH] Add new dialogue and RAC logic. A new dialogue will pop up if the eSIM that is being deleted has carrier Vodafone DE and does not have wifi connection or connection from another sim. Test: make, atest SubscriptionUtilTest and tested manually Bug: 316419093 Change-Id: I957b67339a0ab651f38984e7d1061a8aff8fe2a1 --- res/values/config.xml | 4 ++++ .../settings/network/SubscriptionUtil.java | 16 +++++++++++++--- .../DeleteSimProfilePreferenceController.kt | 7 ++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index afd6fdd16d2..9e91dcc3c54 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -808,4 +808,8 @@ + + + + diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index 2498ec9407a..83f6c389e79 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -49,9 +49,11 @@ import com.android.settings.flags.Flags; import com.android.settings.network.helper.SelectableSubscriptions; import com.android.settings.network.helper.SubscriptionAnnotation; import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity; +import com.android.settings.network.telephony.EuiccRacConnectivityDialogActivity; import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -557,13 +559,21 @@ public class SubscriptionUtil { * @param context {@code Context} * @param subId The id of subscription need to be deleted. */ - public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) { + public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId, + int carrierId) { if (!SubscriptionManager.isUsableSubscriptionId(subId)) { Log.i(TAG, "Unable to delete subscription due to invalid subscription ID."); return; } - // TODO(b/325693582): Add verification if carrier is RAC and logic for new dialog - context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId)); + final int[] carriersThatUseRAC = context.getResources().getIntArray( + R.array.config_carrier_use_rac); + boolean isCarrierRac = Arrays.stream(carriersThatUseRAC).anyMatch(cid -> cid == carrierId); + + if (isCarrierRac && !isConnectedToWifiOrDifferentSubId(context, subId)) { + context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId)); + } else { + context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId)); + } } /** diff --git a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt index 64f97305b0c..b7ee41dd50e 100644 --- a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt +++ b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt @@ -33,6 +33,7 @@ import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle class DeleteSimProfilePreferenceController(context: Context, preferenceKey: String) : BasePreferenceController(context, preferenceKey) { private var subscriptionId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID + private var carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID private var subscriptionInfo: SubscriptionInfo? = null private lateinit var preference: Preference @@ -40,6 +41,9 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri this.subscriptionId = subscriptionId subscriptionInfo = SubscriptionUtil.getAvailableSubscriptions(mContext) .find { it.subscriptionId == subscriptionId && it.isEmbedded } + subscriptionInfo?.let { + carrierId = it.carrierId + } } override fun getAvailabilityStatus() = when (subscriptionInfo) { @@ -67,7 +71,8 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri } private fun deleteSim() { - SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId) + SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId, + carrierId) // result handled in MobileNetworkSettings } }