OSDN Git Service

Use UM.DISALLOW_OEM_UNLOCK instead of Global.OEM_UNLOCK_DISALLOWED
authorMahaver Chopra <mahaver@google.com>
Sun, 10 Jul 2016 15:38:24 +0000 (16:38 +0100)
committerMahaver Chopra <mahaver@google.com>
Tue, 12 Jul 2016 14:18:49 +0000 (15:18 +0100)
Currently we used global setting to restrict user from enabling oem
unlock. As global settings can be chagned using adb, using user
restrictions instead.

Bug: 29893399
Change-Id: Icaffb080979a447d1e0f7f0d72f92c9db83ac10c

src/com/android/settings/DevelopmentSettings.java

index 934e752..9d6a33a 100644 (file)
@@ -1016,16 +1016,12 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
             mEnableOemUnlock.setDisabledByAdmin(null);
             mEnableOemUnlock.setEnabled(enableOemUnlockPreference());
             if (mEnableOemUnlock.isEnabled()) {
-                // mEnableOemUnlock is enabled as device's flash lock is unlocked.
-                if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
-                        UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) {
-                    // Set mEnableOemUnlock to disabled as restriction is set, but not by admin.
-                    mEnableOemUnlock.setEnabled(false);
-                } else {
-                    // Check restriction, disable mEnableOemUnlock and apply policy transparency.
-                    mEnableOemUnlock
-                            .checkRestrictionAndSetDisabled(UserManager.DISALLOW_FACTORY_RESET);
-                }
+                // Check restriction, disable mEnableOemUnlock and apply policy transparency.
+                mEnableOemUnlock.checkRestrictionAndSetDisabled(UserManager.DISALLOW_FACTORY_RESET);
+            }
+            if (mEnableOemUnlock.isEnabled()) {
+                // Check restriction, disable mEnableOemUnlock and apply policy transparency.
+                mEnableOemUnlock.checkRestrictionAndSetDisabled(UserManager.DISALLOW_OEM_UNLOCK);
             }
         }
     }
@@ -2187,8 +2183,8 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
             } else if (isSimLockedDevice()) {
                 oemUnlockSummary = R.string.oem_unlock_enable_disabled_summary_sim_locked_device;
             } else if (!isOemUnlockAllowed()) {
-                // If the device isn't SIM-locked but OEM unlock is disabled by Global setting, this
-                // means the device hasn't been able to confirm whether SIM-lock or any other
+                // If the device isn't SIM-locked but OEM unlock is disabled by user restriction,
+                // this means the device hasn't been able to confirm whether SIM-lock or any other
                 // restrictions apply (or hasn't been able to apply such restrictions yet). Ask the
                 // user to connect to the internet in order to retrieve all restrictions.
                 oemUnlockSummary = R.string.oem_unlock_enable_disabled_summary_connectivity;
@@ -2221,11 +2217,13 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
     }
 
     /**
-     * Returns {@code true} if OEM unlock is not disabled by Global policy. Otherwise, returns
-     * {@code false}.
+     * Returns {@code true} if OEM unlock is disallowed by user restriction
+     * {@link UserManager#DISALLOW_FACTORY_RESET} or {@link UserManager#DISALLOW_OEM_UNLOCK}.
+     * Otherwise, returns {@code false}.
      */
     private boolean isOemUnlockAllowed() {
-        return Settings.Global.getInt(getActivity().getContentResolver(),
-                Settings.Global.OEM_UNLOCK_DISALLOWED, 0) == 0;
+        UserHandle userHandle = UserHandle.of(UserHandle.myUserId());
+        return !(mUm.hasBaseUserRestriction(UserManager.DISALLOW_OEM_UNLOCK, userHandle)
+                || mUm.hasBaseUserRestriction(UserManager.DISALLOW_FACTORY_RESET, userHandle));
     }
 }