From f5539a196995bcee365b9b7786c98b3e4c9feaf6 Mon Sep 17 00:00:00 2001 From: jeffreyhuang Date: Tue, 19 Sep 2017 10:44:30 -0700 Subject: [PATCH] Add isAvailable check to devOptionsController - This avoids the null check for PreferenceControllers where isAvailable() is not always true Bug: 34203528 Test: make RunSettingsRoboTests -j40 Change-Id: Ibed8bc6a2a812355c521620d77fb571c1fd8a649 --- ...BluetoothSnoopLogPreferenceController.java | 4 +-- .../DeveloperOptionsPreferenceController.java | 23 ++++++++++++++-- .../OemUnlockPreferenceController.java | 8 ++---- .../StayAwakePreferenceController.java | 26 +++++++++---------- 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/com/android/settings/development/BluetoothSnoopLogPreferenceController.java b/src/com/android/settings/development/BluetoothSnoopLogPreferenceController.java index 7734e938b29..44a2ecd19e4 100644 --- a/src/com/android/settings/development/BluetoothSnoopLogPreferenceController.java +++ b/src/com/android/settings/development/BluetoothSnoopLogPreferenceController.java @@ -69,12 +69,12 @@ public class BluetoothSnoopLogPreferenceController extends } @Override - public void onDeveloperOptionsEnabled() { + protected void onDeveloperOptionsSwitchEnabled() { mPreference.setEnabled(true); } @Override - public void onDeveloperOptionsDisabled() { + protected void onDeveloperOptionsSwitchDisabled() { SystemProperties.set(BLUETOOTH_BTSNOOP_ENABLE_PROPERTY, Boolean.toString(false)); mPreference.setChecked(false); mPreference.setEnabled(false); diff --git a/src/com/android/settings/development/DeveloperOptionsPreferenceController.java b/src/com/android/settings/development/DeveloperOptionsPreferenceController.java index 7715c254fcb..2f1f2540ed0 100644 --- a/src/com/android/settings/development/DeveloperOptionsPreferenceController.java +++ b/src/com/android/settings/development/DeveloperOptionsPreferenceController.java @@ -54,10 +54,29 @@ public abstract class DeveloperOptionsPreferenceController extends /** * Called when developer options is enabled */ - public abstract void onDeveloperOptionsEnabled(); + public void onDeveloperOptionsEnabled() { + if (isAvailable()) { + onDeveloperOptionsSwitchEnabled(); + } + } /** * Called when developer options is disabled */ - public abstract void onDeveloperOptionsDisabled(); + public void onDeveloperOptionsDisabled() { + if (isAvailable()) { + onDeveloperOptionsSwitchDisabled(); + } + } + + /** + * Called when developer options is enabled and the preference is available + */ + protected abstract void onDeveloperOptionsSwitchEnabled(); + + /** + * Called when developer options is disabled and the preference is available + */ + protected abstract void onDeveloperOptionsSwitchDisabled(); + } diff --git a/src/com/android/settings/development/OemUnlockPreferenceController.java b/src/com/android/settings/development/OemUnlockPreferenceController.java index 7d85d2e20f5..cb391a8e893 100644 --- a/src/com/android/settings/development/OemUnlockPreferenceController.java +++ b/src/com/android/settings/development/OemUnlockPreferenceController.java @@ -122,12 +122,12 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon } @Override - public void onDeveloperOptionsEnabled() { + protected void onDeveloperOptionsSwitchEnabled() { handleDeveloperOptionsToggled(); } @Override - public void onDeveloperOptionsDisabled() { + protected void onDeveloperOptionsSwitchDisabled() { handleDeveloperOptionsToggled(); } @@ -143,10 +143,6 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon } private void handleDeveloperOptionsToggled() { - if (mPreference == null) { - return; - } - mPreference.setEnabled(enableOemUnlockPreference()); if (mPreference.isEnabled()) { // Check restriction, disable mEnableOemUnlock and apply policy transparency. diff --git a/src/com/android/settings/development/StayAwakePreferenceController.java b/src/com/android/settings/development/StayAwakePreferenceController.java index a590d7d66af..ecbb9d0b576 100644 --- a/src/com/android/settings/development/StayAwakePreferenceController.java +++ b/src/com/android/settings/development/StayAwakePreferenceController.java @@ -100,19 +100,6 @@ public class StayAwakePreferenceController extends DeveloperOptionsPreferenceCon mPreference.setChecked(stayAwakeMode != SETTING_VALUE_OFF); } - @Override - public void onDeveloperOptionsEnabled() { - mPreference.setEnabled(true); - } - - @Override - public void onDeveloperOptionsDisabled() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.STAY_ON_WHILE_PLUGGED_IN, SETTING_VALUE_OFF); - mPreference.setChecked(false); - mPreference.setEnabled(false); - } - @Override public void onResume() { if (mPreference != null) { @@ -127,6 +114,19 @@ public class StayAwakePreferenceController extends DeveloperOptionsPreferenceCon } } + @Override + protected void onDeveloperOptionsSwitchEnabled() { + mPreference.setEnabled(true); + } + + @Override + protected void onDeveloperOptionsSwitchDisabled() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.STAY_ON_WHILE_PLUGGED_IN, SETTING_VALUE_OFF); + mPreference.setChecked(false); + mPreference.setEnabled(false); + } + @VisibleForTesting RestrictedLockUtils.EnforcedAdmin checkIfMaximumTimeToLockSetByAdmin() { // A DeviceAdmin has specified a maximum time until the device