Allow factory reset 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: Ia5491765241adad97ecdb0a5bfd86a8371b8e4fe
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 4ed38d1..d643468 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -326,11 +326,13 @@
@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 c2060ce..8869c5d 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -968,7 +968,8 @@
// Enable/disable backup settings depending on whether the user is admin.
setTileEnabled(new ComponentName(packageName,
- BackupSettingsActivity.class.getName()), true, isAdmin);
+ BackupSettingsActivity.class.getName()), true,
+ isAdmin || Utils.isCarrierDemoUser(this));
setTileEnabled(new ComponentName(packageName,
"com.android.settings.BackupResetDashboardAlias"), true, isAdmin);
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index f5bd2ce..803b8e5 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1245,4 +1245,13 @@
}
}
+ 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);
+ }
}