From 6c088cb221bb43d47be065387231ffa7192ff211 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 8 May 2014 09:29:41 -0400 Subject: [PATCH] Settings user restriction changes: debugging features. Replacing restriction pin with a user restriction for developer options. Bug: 14081992 Change-Id: I9a71c256fbd20428b4bd2ae12939c9a50d7b5f11 --- .../android/settings/DevelopmentSettings.java | 12 ++++++------ .../android/settings/DeviceInfoSettings.java | 19 +++++-------------- .../android/settings/SettingsActivity.java | 3 ++- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index c666dd315ab..bc783301cba 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -46,6 +46,7 @@ import android.os.ServiceManager; import android.os.StrictMode; import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; @@ -75,7 +76,7 @@ import java.util.List; /* * Displays preferences for application developers. */ -public class DevelopmentSettings extends RestrictedSettingsFragment +public class DevelopmentSettings extends SettingsPreferenceFragment implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener, OnPreferenceChangeListener, CompoundButton.OnCheckedChangeListener { private static final String TAG = "DevelopmentSettings"; @@ -160,6 +161,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment private IWindowManager mWindowManager; private IBackupManager mBackupManager; private DevicePolicyManager mDpm; + private UserManager mUm; private Switch mEnabledSwitch; private boolean mLastEnabledState; @@ -230,10 +232,6 @@ public class DevelopmentSettings extends RestrictedSettingsFragment private boolean mUnavailable; - public DevelopmentSettings() { - super(RESTRICTIONS_PIN_SET); - } - @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -242,8 +240,10 @@ public class DevelopmentSettings extends RestrictedSettingsFragment mBackupManager = IBackupManager.Stub.asInterface( ServiceManager.getService(Context.BACKUP_SERVICE)); mDpm = (DevicePolicyManager)getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE); + mUm = (UserManager) getSystemService(Context.USER_SERVICE); - if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER) { + if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER + || mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) { mUnavailable = true; setPreferenceScreen(new PreferenceScreen(getActivity(), null)); return; diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java index bf303df576c..9d10ecb3961 100644 --- a/src/com/android/settings/DeviceInfoSettings.java +++ b/src/com/android/settings/DeviceInfoSettings.java @@ -31,6 +31,7 @@ import android.os.SELinux; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.preference.Preference; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; @@ -46,7 +47,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class DeviceInfoSettings extends RestrictedSettingsFragment { +public class DeviceInfoSettings extends SettingsPreferenceFragment { private static final String LOG_TAG = "DeviceInfoSettings"; private static final String FILENAME_PROC_VERSION = "/proc/version"; @@ -79,20 +80,12 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { int mDevHitCountdown; Toast mDevHitToast; - public DeviceInfoSettings() { - super(null /* Don't PIN protect the entire screen */); - } - @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.device_info_settings); - // We only call ensurePinRestrictedPreference() when mDevHitCountdown == 0. - // This will keep us from entering developer mode without a PIN. - protectByRestrictions(KEY_BUILD_NUMBER); - setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE); findPreference(KEY_FIRMWARE_VERSION).setEnabled(true); setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband"); @@ -204,12 +197,10 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { // Don't enable developer options for secondary users. if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true; + final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE); + if (um.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) return true; + if (mDevHitCountdown > 0) { - if (mDevHitCountdown == 1) { - if (super.ensurePinRestrictedPreference(preference)) { - return true; - } - } mDevHitCountdown--; if (mDevHitCountdown == 0) { getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE, diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 56ee3ac44d2..0608e92eef5 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -1067,7 +1067,8 @@ public class SettingsActivity extends Activity } } } else if (id == R.id.development_settings) { - if (!showDev) { + if (!showDev || um.hasUserRestriction( + UserManager.DISALLOW_DEBUGGING_FEATURES)) { category.removeTile(n); } } else if (id == R.id.account_add) {