Fix power+volume chord fallback when LPP option is disabled

Not all devices will have power+volume chord enabled. Fix current wrong behaviour by falling back to mute chord behaviour only if it was set as the default option in device overlay.

Bug: 187814162
Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.gestures.*"
Change-Id: I15c0a71d25738b3b01a20bf22c790d9dcba5d6fd
This commit is contained in:
Jernej Virag
2021-05-11 13:25:02 +00:00
parent 0b43270035
commit fd540cbb0c
2 changed files with 40 additions and 5 deletions

View File

@@ -76,6 +76,8 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
* frameworks/base/core/res/res/values/config.xml * frameworks/base/core/res/res/values/config.xml
*/ */
@VisibleForTesting @VisibleForTesting
static final int KEY_CHORD_POWER_VOLUME_UP_NO_ACTION = 0;
@VisibleForTesting
static final int KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE = 1; static final int KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE = 1;
@VisibleForTesting @VisibleForTesting
static final int KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS = 2; static final int KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS = 2;
@@ -89,6 +91,9 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
private static final int POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE = private static final int POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE =
R.integer.config_longPressOnPowerBehavior; R.integer.config_longPressOnPowerBehavior;
private static final int KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE =
R.integer.config_keyChordPowerVolumeUp;
@Nullable @Nullable
private SettingObserver mSettingsObserver; private SettingObserver mSettingsObserver;
@@ -177,10 +182,20 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
* should show the power menu. * should show the power menu.
*/ */
private boolean setPowerVolumeChordValue(boolean isPowerButtonLongPressChecked) { private boolean setPowerVolumeChordValue(boolean isPowerButtonLongPressChecked) {
if (isPowerButtonLongPressChecked) {
return Settings.Global.putInt(mContext.getContentResolver(),
KEY_CHORD_POWER_VOLUME_UP_SETTING, KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
}
// If the key chord defaults to mute toggle, we restore that setting if LPP option is
// disabled. Otherwise we default to no action.
boolean isMuteToggleKeyChordDefault = mContext.getResources().getInteger(
KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE)
== KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE;
return Settings.Global.putInt(mContext.getContentResolver(), return Settings.Global.putInt(mContext.getContentResolver(),
KEY_CHORD_POWER_VOLUME_UP_SETTING, isPowerButtonLongPressChecked KEY_CHORD_POWER_VOLUME_UP_SETTING, isMuteToggleKeyChordDefault
? KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS ? KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE
: KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE); : KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
} }
/** /**

View File

@@ -93,6 +93,25 @@ public class LongPressPowerButtonPreferenceControllerTest {
com.android.internal.R.integer.config_longPressOnPowerBehavior)) com.android.internal.R.integer.config_longPressOnPowerBehavior))
.thenReturn(8); .thenReturn(8);
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_NO_ACTION);
}
@Test
public void preferenceUnchecked_muteChordDefault_longPressPowerSettingSetToDefaultValue() {
// Value out of range chosen deliberately.
when(mResources.getInteger(
com.android.internal.R.integer.config_longPressOnPowerBehavior))
.thenReturn(8);
when(mResources.getInteger(
com.android.internal.R.integer.config_keyChordPowerVolumeUp))
.thenReturn(
LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
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);
@@ -115,9 +134,10 @@ public class LongPressPowerButtonPreferenceControllerTest {
LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_SHUT_OFF); LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_SHUT_OFF);
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo( Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE); LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
} }
@Test @Test
public void preferenceUnchecked_assistDefaultGlobalActionsEnabled_setGlobalActions() { public void preferenceUnchecked_assistDefaultGlobalActionsEnabled_setGlobalActions() {
// Value out of range chosen deliberately. // Value out of range chosen deliberately.
@@ -136,6 +156,6 @@ public class LongPressPowerButtonPreferenceControllerTest {
LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_GLOBAL_ACTIONS); LongPressPowerButtonPreferenceController.LONG_PRESS_POWER_GLOBAL_ACTIONS);
assertThat(Settings.Global.getInt(mContext.getContentResolver(), assertThat(Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo( Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE); LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
} }
} }