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
|
* 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(),
|
return Settings.Global.putInt(mContext.getContentResolver(),
|
||||||
KEY_CHORD_POWER_VOLUME_UP_SETTING, isPowerButtonLongPressChecked
|
KEY_CHORD_POWER_VOLUME_UP_SETTING, KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
|
||||||
? KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS
|
}
|
||||||
: KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
|
|
||||||
|
// 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, 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))
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user