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

Commit d41c4d3c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Toggle Power + Volume chord with long press power to assist setting" into sc-dev

parents a3281110 f74f1dbb
Loading
Loading
Loading
Loading
+37 −1
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
            Settings.Global.POWER_BUTTON_LONG_PRESS;
    private static final Uri POWER_BUTTON_LONG_PRESS_SETTING_URI =
            Settings.Global.getUriFor(POWER_BUTTON_LONG_PRESS_SETTING);
    private static final String KEY_CHORD_POWER_VOLUME_UP_SETTING =
            Settings.Global.KEY_CHORD_POWER_VOLUME_UP;

    // Used for fallback to global actions if necessary.
    @VisibleForTesting
@@ -55,7 +57,7 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
    static final String CARDS_ENABLED_KEY = Settings.Secure.GLOBAL_ACTIONS_PANEL_ENABLED;

    /**
     * Value used for long press power button behaviour when Assist setting is enabled.
     * Values used for long press power button behaviour when Assist setting is enabled.
     *
     * {@link com.android.server.policy.PhoneWindowManager#LONG_PRESS_POWER_GLOBAL_ACTIONS} for
     * source of the value.
@@ -67,6 +69,17 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
    @VisibleForTesting
    static final int LONG_PRESS_POWER_ASSISTANT_VALUE = 5; // Settings.Secure.ASSISTANT

    /**
     * Values used for volume key chord behaviour when Assist setting is enabled.
     *
     * Values based on config_keyChordPowerVolumeUp in
     * frameworks/base/core/res/res/values/config.xml
     */
    @VisibleForTesting
    static final int KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE = 1;
    @VisibleForTesting
    static final int KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS = 2;

    /**
     * Value used for long press power button behaviour when the Assist setting is disabled.
     *
@@ -126,6 +139,17 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo

    @Override
    public boolean setChecked(boolean isChecked) {
        if (setPowerLongPressValue(isChecked)) {
            // The key chord value is dependant on the long press setting and it always
            // toggled in tandem. POWER_BUTTON_LONG_PRESS_SETTING is always the source
            // of truth for both.
            return setPowerVolumeChordValue(isChecked);
        }

        return false;
    }

    private boolean setPowerLongPressValue(boolean isChecked) {
        if (isChecked) {
            return Settings.Global.putInt(mContext.getContentResolver(),
                    POWER_BUTTON_LONG_PRESS_SETTING, LONG_PRESS_POWER_ASSISTANT_VALUE);
@@ -147,6 +171,18 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
                POWER_BUTTON_LONG_PRESS_SETTING, defaultPowerButtonValue);
    }

    /**
     * Updates {@link Settings.Global.KEY_CHORD_POWER_VOLUME_UP} based on the changed value of
     * {@link #POWER_BUTTON_LONG_PRESS_SETTING}. If power button is used for Assist, key chord
     * should show the power menu.
     */
    private boolean setPowerVolumeChordValue(boolean isPowerButtonLongPressChecked) {
        return Settings.Global.putInt(mContext.getContentResolver(),
                KEY_CHORD_POWER_VOLUME_UP_SETTING, isPowerButtonLongPressChecked
                        ? KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS
                        : KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
    }

    /**
     * Returns true if the global actions menu on power button click is enabled via any of the
     * content options.
+12 −0
Original line number Diff line number Diff line
@@ -81,6 +81,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_ASSISTANT_VALUE);
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
    }

    @Test
@@ -93,6 +96,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
        mController.onPreferenceChange(null, false);
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(8);
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
    }

    @Test
@@ -107,6 +113,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_SHUT_OFF);
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
    }

    @Test
@@ -125,5 +134,8 @@ public class LongPressPowerButtonPreferenceControllerTest {
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_GLOBAL_ACTIONS);
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
    }
}