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:
Jernej Virag
2021-04-13 10:19:26 +00:00
parent 42f8180428
commit f74f1dbbc0
2 changed files with 49 additions and 1 deletions

View File

@@ -46,6 +46,8 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
Settings.Global.POWER_BUTTON_LONG_PRESS; Settings.Global.POWER_BUTTON_LONG_PRESS;
private static final Uri POWER_BUTTON_LONG_PRESS_SETTING_URI = private static final Uri POWER_BUTTON_LONG_PRESS_SETTING_URI =
Settings.Global.getUriFor(POWER_BUTTON_LONG_PRESS_SETTING); 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. // Used for fallback to global actions if necessary.
@VisibleForTesting @VisibleForTesting
@@ -55,7 +57,7 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
static final String CARDS_ENABLED_KEY = Settings.Secure.GLOBAL_ACTIONS_PANEL_ENABLED; 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 * {@link com.android.server.policy.PhoneWindowManager#LONG_PRESS_POWER_GLOBAL_ACTIONS} for
* source of the value. * source of the value.
@@ -67,6 +69,17 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
@VisibleForTesting @VisibleForTesting
static final int LONG_PRESS_POWER_ASSISTANT_VALUE = 5; // Settings.Secure.ASSISTANT 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. * Value used for long press power button behaviour when the Assist setting is disabled.
* *
@@ -126,6 +139,17 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
@Override @Override
public boolean setChecked(boolean isChecked) { 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) { if (isChecked) {
return Settings.Global.putInt(mContext.getContentResolver(), return Settings.Global.putInt(mContext.getContentResolver(),
POWER_BUTTON_LONG_PRESS_SETTING, LONG_PRESS_POWER_ASSISTANT_VALUE); 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); 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 * Returns true if the global actions menu on power button click is enabled via any of the
* content options. * content options.

View File

@@ -81,6 +81,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo( Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_ASSISTANT_VALUE); 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 @Test
@@ -93,6 +96,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
mController.onPreferenceChange(null, false); mController.onPreferenceChange(null, false);
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(8); 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 @Test
@@ -107,6 +113,9 @@ public class LongPressPowerButtonPreferenceControllerTest {
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo( Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_SHUT_OFF); 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 @Test
@@ -125,5 +134,8 @@ public class LongPressPowerButtonPreferenceControllerTest {
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo( Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_GLOBAL_ACTIONS); 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);
} }
} }