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:
@@ -76,6 +76,8 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
|
||||
* frameworks/base/core/res/res/values/config.xml
|
||||
*/
|
||||
@VisibleForTesting
|
||||
static final int KEY_CHORD_POWER_VOLUME_UP_NO_ACTION = 0;
|
||||
@VisibleForTesting
|
||||
static final int KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE = 1;
|
||||
@VisibleForTesting
|
||||
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 =
|
||||
R.integer.config_longPressOnPowerBehavior;
|
||||
|
||||
private static final int KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE =
|
||||
R.integer.config_keyChordPowerVolumeUp;
|
||||
|
||||
@Nullable
|
||||
private SettingObserver mSettingsObserver;
|
||||
|
||||
@@ -177,10 +182,20 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
|
||||
* should show the power menu.
|
||||
*/
|
||||
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(),
|
||||
KEY_CHORD_POWER_VOLUME_UP_SETTING, isPowerButtonLongPressChecked
|
||||
? KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS
|
||||
: KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
|
||||
KEY_CHORD_POWER_VOLUME_UP_SETTING, isMuteToggleKeyChordDefault
|
||||
? KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE
|
||||
: KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -93,6 +93,25 @@ public class LongPressPowerButtonPreferenceControllerTest {
|
||||
com.android.internal.R.integer.config_longPressOnPowerBehavior))
|
||||
.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);
|
||||
assertThat(Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(8);
|
||||
@@ -115,9 +134,10 @@ public class LongPressPowerButtonPreferenceControllerTest {
|
||||
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);
|
||||
LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void preferenceUnchecked_assistDefaultGlobalActionsEnabled_setGlobalActions() {
|
||||
// Value out of range chosen deliberately.
|
||||
@@ -136,6 +156,6 @@ public class LongPressPowerButtonPreferenceControllerTest {
|
||||
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);
|
||||
LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user