From 4eda4b31522da74f532b05ad811397ba3d3ab2e8 Mon Sep 17 00:00:00 2001 From: jeffreyhuang Date: Thu, 12 Oct 2017 14:20:51 -0700 Subject: [PATCH] Restore state when activity is destroyed - Fixes a bug where developer options would be re-enabled if the activity is destroyed when the master switch is set to off Bug: 34203528 Test: Manual testing with screen rotation Change-Id: Ic8e04858f6e3dd2353feb6fa94be9f420ab8adbb --- .../DevelopmentSettingsDashboardFragment.java | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java index 885532dba8d..4adc5c9e575 100644 --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java @@ -154,6 +154,13 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra mSwitchBarController = new DevelopmentSwitchBarController( this /* DevelopmentSettings */, mSwitchBar, mIsAvailable, getLifecycle()); mSwitchBar.show(); + + // Restore UI state based on whether developer options is enabled + if (DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(getContext())) { + enableDeveloperOptions(); + } else { + disableDeveloperOptions(); + } } @Override @@ -197,17 +204,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra if (isChecked) { EnableDevelopmentSettingWarningDialog.show(this /* host */); } else { - DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(getContext(), false); - final SystemPropPoker poker = SystemPropPoker.getInstance(); - poker.blockPokes(); - for (AbstractPreferenceController controller : mPreferenceControllers) { - if (controller instanceof DeveloperOptionsPreferenceController) { - ((DeveloperOptionsPreferenceController) controller) - .onDeveloperOptionsDisabled(); - } - } - poker.unblockPokes(); - poker.poke(); + disableDeveloperOptions(); } } } @@ -318,7 +315,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra getActivity().unregisterReceiver(mBluetoothA2dpReceiver); } - void onEnableDevelopmentOptionsConfirmed() { + private void enableDeveloperOptions() { DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(getContext(), true); for (AbstractPreferenceController controller : mPreferenceControllers) { if (controller instanceof DeveloperOptionsPreferenceController) { @@ -327,6 +324,24 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra } } + private void disableDeveloperOptions() { + DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(getContext(), false); + final SystemPropPoker poker = SystemPropPoker.getInstance(); + poker.blockPokes(); + for (AbstractPreferenceController controller : mPreferenceControllers) { + if (controller instanceof DeveloperOptionsPreferenceController) { + ((DeveloperOptionsPreferenceController) controller) + .onDeveloperOptionsDisabled(); + } + } + poker.unblockPokes(); + poker.poke(); + } + + void onEnableDevelopmentOptionsConfirmed() { + enableDeveloperOptions(); + } + void onEnableDevelopmentOptionsRejected() { // Reset the toggle mSwitchBar.setChecked(false);