Merge "Disallow OEM unlock when DISALLOW_FACTORY_RESET applies" into nyc-mr1-dev am: e6e8c92134
am: 150dd9cc4f
* commit '150dd9cc4fecbfd58db2f9e994077b9968368a2b':
Disallow OEM unlock when DISALLOW_FACTORY_RESET applies
Change-Id: I386ad26655446801d1b6a221cdb8c6446b5a6ba9
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 44cf585..cdee328 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -51,10 +51,11 @@
android:title="@string/bt_hci_snoop_log"
android:summary="@string/bt_hci_snoop_log_summary"/>
- <SwitchPreference
+ <com.android.settingslib.RestrictedSwitchPreference
android:key="oem_unlock_enable"
android:title="@string/oem_unlock_enable"
- android:summary="@string/oem_unlock_enable_summary"/>
+ android:summary="@string/oem_unlock_enable_summary"
+ settings:useAdditionalSummary="true"/>
<PreferenceScreen
android:key="running_apps"
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index e28a586..6a0abe3 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -239,7 +239,7 @@
private SwitchPreference mBugreportInPower;
private RestrictedSwitchPreference mKeepScreenOn;
private SwitchPreference mBtHciSnoopLog;
- private SwitchPreference mEnableOemUnlock;
+ private RestrictedSwitchPreference mEnableOemUnlock;
private SwitchPreference mDebugViewAttributes;
private SwitchPreference mForceAllowOnExternal;
@@ -372,7 +372,7 @@
mBugreportInPower = findAndInitSwitchPref(BUGREPORT_IN_POWER_KEY);
mKeepScreenOn = (RestrictedSwitchPreference) findAndInitSwitchPref(KEEP_SCREEN_ON);
mBtHciSnoopLog = findAndInitSwitchPref(BT_HCI_SNOOP_LOG);
- mEnableOemUnlock = findAndInitSwitchPref(ENABLE_OEM_UNLOCK);
+ mEnableOemUnlock = (RestrictedSwitchPreference) findAndInitSwitchPref(ENABLE_OEM_UNLOCK);
if (!showEnableOemUnlockPreference()) {
removePreference(mEnableOemUnlock);
mEnableOemUnlock = null;
@@ -1021,7 +1021,21 @@
private void updateOemUnlockOptions() {
if (mEnableOemUnlock != null) {
+ // Showing mEnableOemUnlock preference as device has persistent data block.
+ 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);
+ }
+ }
}
}