From bb6859ca751e5813685ef8a71bebe22381ce575b Mon Sep 17 00:00:00 2001 From: Christine Franks Date: Mon, 23 Jan 2017 16:44:02 -0800 Subject: [PATCH] DO NOT MERGE - Allow FR in carrier demo mode Bug: 34341567 Test: manual - in carrier demo mode, go to Settings > Backup and Reset > Factory data reset > Reset phone > Erase everything and this entire path is viewable. Change-Id: I373a2e94f205f6e6e4dd9a54dcf08532a64e5187 --- src/com/android/settings/MasterClear.java | 12 +++++++----- src/com/android/settings/SettingsActivity.java | 3 ++- src/com/android/settings/Utils.java | 9 +++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 540c93f28ed..ff309bda134 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -286,11 +286,13 @@ public class MasterClear extends OptionsMenuFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( - getActivity(), UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); - final UserManager um = UserManager.get(getActivity()); - if (!um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction(getActivity(), - UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) { + final Context context = getContext(); + final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(context, + UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); + final UserManager um = UserManager.get(context); + final boolean disallow = !um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction( + context, UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); + if (disallow && !Utils.isCarrierDemoUser(context)) { return inflater.inflate(R.layout.master_clear_disallowed_screen, null); } else if (admin != null) { View view = inflater.inflate(R.layout.admin_support_details_empty_view, null); diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 9245003de78..db9c0906efd 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -1134,7 +1134,8 @@ public class SettingsActivity extends SettingsDrawerActivity } } setTileEnabled(new ComponentName(packageName, - BackupSettingsActivity.class.getName()), hasBackupActivity, isAdmin, pm); + BackupSettingsActivity.class.getName()), hasBackupActivity, + isAdmin || Utils.isCarrierDemoUser(this), pm); } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index eec269fca9d..7d1155095e8 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -1207,4 +1207,13 @@ public final class Utils extends com.android.settingslib.Utils { } return false; } + + public static boolean isCarrierDemoUser(Context context) { + final String carrierDemoModeSetting = + context.getString(com.android.internal.R.string.config_carrierDemoModeSetting); + return UserManager.isDeviceInDemoMode(context) + && getUserManager(context).isDemoUser() + && !TextUtils.isEmpty(carrierDemoModeSetting) + && Settings.Secure.getInt(context.getContentResolver(), carrierDemoModeSetting, 0) == 1; + } }