Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4eda4b31 authored by jeffreyhuang's avatar jeffreyhuang
Browse files

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
parent 32b0f1d4
Loading
Loading
Loading
Loading
+27 −12
Original line number Diff line number Diff line
@@ -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);