Toggle Power + Volume chord with long press power to assist setting
Power + Volume chord setting should be toggled together with LPP setting. The LPP setting still remains the source of truth with Power + Volume chord being dependant on it. Bug: 179673796 Bug: 185205501 Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.gestures.*" Flash image on actual device and manually test toggling. Change-Id: Ie19ae55db7c6c07533ea6347e0a4e1e4505423e2
This commit is contained in:
@@ -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.
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user