From 922fc6067d676e651821d319759c925cb23ad6f0 Mon Sep 17 00:00:00 2001 From: Edward Savage-Jones Date: Fri, 21 Oct 2022 00:14:31 +0200 Subject: [PATCH] Only allow clearing of Euicc Data by owner or demo user Secondary users should not be able to erase downloaded SIMs is a similar way that they are not be able to factory reset the device. Bug: 303488763 Test: On a device with FEATURE_TELEPHONY_EUICC enabled, create secondary user, enter Settings->System->Reset Options there should be no option to 'Erase downloaded SIMs' Change-Id: I4f5326732822bc322ab13a00937f94232ca69228 --- .../network/EraseEuiccDataController.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/network/EraseEuiccDataController.java b/src/com/android/settings/network/EraseEuiccDataController.java index 3dc3ab5bdb3..9892f0df08f 100644 --- a/src/com/android/settings/network/EraseEuiccDataController.java +++ b/src/com/android/settings/network/EraseEuiccDataController.java @@ -18,10 +18,12 @@ package com.android.settings.network; import android.content.Context; import android.content.pm.PackageManager; +import android.os.UserManager; import android.text.TextUtils; import androidx.preference.Preference; +import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.network.telephony.MobileNetworkUtils; @@ -33,8 +35,11 @@ import com.android.settings.system.ResetDashboardFragment; public class EraseEuiccDataController extends BasePreferenceController { private ResetDashboardFragment mHostFragment; + private final UserManager mUm; + public EraseEuiccDataController(Context context, String preferenceKey) { super(context, preferenceKey); + mUm = context.getSystemService(UserManager.class); } public void setFragment(ResetDashboardFragment hostFragment) { @@ -52,10 +57,12 @@ public class EraseEuiccDataController extends BasePreferenceController { @Override public int getAvailabilityStatus() { - return SubscriptionUtil.isSimHardwareVisible(mContext) && - (!MobileNetworkUtils.isMobileNetworkUserRestricted(mContext)) && - mContext.getPackageManager().hasSystemFeature( - PackageManager.FEATURE_TELEPHONY_EUICC) ? AVAILABLE_UNSEARCHABLE - : UNSUPPORTED_ON_DEVICE; + boolean isAllowedUser = (mUm.isAdminUser() || Utils.isDemoUser(mContext)) + && !MobileNetworkUtils.isMobileNetworkUserRestricted(mContext); + boolean hasEuiccFeature = mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_TELEPHONY_EUICC); + return SubscriptionUtil.isSimHardwareVisible(mContext) + && isAllowedUser + && hasEuiccFeature ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; } }