Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b7e5683 authored by Lorenzo Lucena Maguire's avatar Lorenzo Lucena Maguire
Browse files

Use configurable default Double Tap Power Gesture action

Read configuration value for default selected target action for multi
target double tap power button gesture.

Test: atest GestureLauncherServiceTest
Flag: android.service.quickaccesswallet.launch_wallet_option_on_power_double_tap
Bug: 385201633
Change-Id: Icc9ed395d63e6bb60b0909478e742c62feea088c
parent 7b8b1c40
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -562,7 +562,8 @@ public class GestureLauncherService extends SystemService {
        return Settings.Secure.getIntForUser(
                context.getContentResolver(),
                Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
                LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER,
                context.getResources().getInteger(
                        R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction),
                userId);
    }

+67 −14
Original line number Diff line number Diff line
@@ -164,8 +164,7 @@ public class GestureLauncherServiceTest {
                new GestureLauncherService(
                        mContext, mMetricsLogger, mQuickAccessWalletClient, mUiEventLogger);

        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        Settings.Secure.clearProviderForTest();
    }

    private WalletLaunchedReceiver registerWalletLaunchedReceiver(String action) {
@@ -221,7 +220,7 @@ public class GestureLauncherServiceTest {
        withDoubleTapPowerModeConfigValue(
                DOUBLE_TAP_POWER_DISABLED_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(false);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                mContext, FAKE_USER_ID));
@@ -242,7 +241,7 @@ public class GestureLauncherServiceTest {
    public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configFalseSettingEnabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_DISABLED_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                mContext, FAKE_USER_ID));
@@ -263,7 +262,7 @@ public class GestureLauncherServiceTest {
    public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configTrueSettingDisabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(false);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                mContext, FAKE_USER_ID));
@@ -284,7 +283,7 @@ public class GestureLauncherServiceTest {
    public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configTrueSettingEnabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertTrue(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                mContext, FAKE_USER_ID));
@@ -327,7 +326,31 @@ public class GestureLauncherServiceTest {
    public void testIsCameraDoubleTapPowerSettingEnabled_actionWallet() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                        mContext, FAKE_USER_ID));
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP)
    public void testIsCameraDoubleTapPowerSettingEnabled_defaultActionCamera() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertTrue(
                mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
                        mContext, FAKE_USER_ID));
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP)
    public void testIsCameraDoubleTapPowerSettingEnabled_defaultActionNotCamera() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled(
@@ -339,7 +362,7 @@ public class GestureLauncherServiceTest {
    public void testIsWalletDoubleTapPowerSettingEnabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertTrue(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
@@ -351,7 +374,7 @@ public class GestureLauncherServiceTest {
    public void testIsWalletDoubleTapPowerSettingEnabled_configDisabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_DISABLED_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
@@ -363,7 +386,7 @@ public class GestureLauncherServiceTest {
    public void testIsWalletDoubleTapPowerSettingEnabled_settingDisabled() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(false);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
@@ -375,7 +398,31 @@ public class GestureLauncherServiceTest {
    public void testIsWalletDoubleTapPowerSettingEnabled_actionCamera() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
                        mContext, FAKE_USER_ID));
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP)
    public void testIsWalletDoubleTapPowerSettingEnabled_defaultActionWallet() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);

        assertTrue(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
                        mContext, FAKE_USER_ID));
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP)
    public void testIsWalletDoubleTapPowerSettingEnabled_defaultActionNotWallet() {
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);

        assertFalse(
                mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled(
@@ -1797,7 +1844,7 @@ public class GestureLauncherServiceTest {
                UserHandle.USER_CURRENT);
    }

    private void withDefaultDoubleTapPowerGestureAction(int action) {
    private void withDoubleTapPowerGestureActionSettingValue(int action) {
        Settings.Secure.putIntForUser(
                mContentResolver,
                Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
@@ -1805,6 +1852,12 @@ public class GestureLauncherServiceTest {
                UserHandle.USER_CURRENT);
    }

    private void withDefaultDoubleTapPowerGestureActionConfig(int action) {
        when(mResources.getInteger(
                com.android.internal.R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction
        )).thenReturn(action);
    }

    private void withEmergencyGestureEnabledConfigValue(boolean enableConfigValue) {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_emergencyGestureEnabled))
@@ -1870,7 +1923,7 @@ public class GestureLauncherServiceTest {
    }

    private void enableWalletGesture() {
        withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER);
        withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
        withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE);

@@ -1890,7 +1943,7 @@ public class GestureLauncherServiceTest {
            withDoubleTapPowerModeConfigValue(
                    DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
            withMultiTargetDoubleTapPowerGestureEnableSettingValue(true);
            withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
            withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER);
        } else {
            withCameraDoubleTapPowerEnableConfigValue(true);
            withCameraDoubleTapPowerDisableSettingValue(0);