diff options
5 files changed, 31 insertions, 1 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 07efad89010a..a1d62cb616ce 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1250,6 +1250,7 @@ a watch, setting this config is no-op. 0 - Nothing 1 - Switch to the recent app + 2 - Launch the default fitness app --> <integer name="config_doublePressOnStemPrimaryBehavior">0</integer> diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java index f6e10570e656..0773bd701d5c 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java @@ -186,7 +186,7 @@ public class GlobalSettingsValidators { VALIDATORS.put( Global.STEM_PRIMARY_BUTTON_SHORT_PRESS, new InclusiveIntegerRangeValidator(0, 1)); VALIDATORS.put( - Global.STEM_PRIMARY_BUTTON_DOUBLE_PRESS, new InclusiveIntegerRangeValidator(0, 1)); + Global.STEM_PRIMARY_BUTTON_DOUBLE_PRESS, new InclusiveIntegerRangeValidator(0, 2)); VALIDATORS.put( Global.STEM_PRIMARY_BUTTON_TRIPLE_PRESS, new InclusiveIntegerRangeValidator(0, 1)); VALIDATORS.put( diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 228405074dbb..5da7868183f7 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -373,6 +373,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { //The config value can be overridden using Settings.Global.STEM_PRIMARY_BUTTON_DOUBLE_PRESS static final int DOUBLE_PRESS_PRIMARY_NOTHING = 0; static final int DOUBLE_PRESS_PRIMARY_SWITCH_RECENT_APP = 1; + static final int DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP = 2; // Must match: config_triplePressOnStemPrimaryBehavior in config.xml // The config value can be overridden using Settings.Global.STEM_PRIMARY_BUTTON_TRIPLE_PRESS @@ -1596,6 +1597,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { performStemPrimaryDoublePressSwitchToRecentTask(); } break; + case DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP: + final int stemPrimaryKeyDeviceId = INVALID_INPUT_DEVICE_ID; + handleKeyGestureInKeyGestureController( + KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_DEFAULT_FITNESS, + stemPrimaryKeyDeviceId, KEYCODE_STEM_PRIMARY, /* metaState= */ 0); + break; } } @@ -7243,6 +7250,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { return "DOUBLE_PRESS_PRIMARY_NOTHING"; case DOUBLE_PRESS_PRIMARY_SWITCH_RECENT_APP: return "DOUBLE_PRESS_PRIMARY_SWITCH_RECENT_APP"; + case DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP: + return "DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP"; default: return Integer.toString(behavior); } diff --git a/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java b/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java index 9b92ff45952b..3ea3235df0f4 100644 --- a/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java @@ -23,6 +23,7 @@ import static android.provider.Settings.Global.STEM_PRIMARY_BUTTON_TRIPLE_PRESS; import static android.view.KeyEvent.KEYCODE_STEM_PRIMARY; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.server.policy.PhoneWindowManager.DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP; import static com.android.server.policy.PhoneWindowManager.DOUBLE_PRESS_PRIMARY_SWITCH_RECENT_APP; import static com.android.server.policy.PhoneWindowManager.LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT; import static com.android.server.policy.PhoneWindowManager.SHORT_PRESS_PRIMARY_LAUNCH_ALL_APPS; @@ -32,6 +33,7 @@ import static com.android.server.policy.PhoneWindowManager.TRIPLE_PRESS_PRIMARY_ import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityTaskManager.RootTaskInfo; import android.content.ComponentName; +import android.hardware.input.KeyGestureEvent; import android.os.RemoteException; import android.provider.Settings; import android.view.Display; @@ -236,6 +238,19 @@ public class StemKeyGestureTests extends ShortcutKeyTestBase { } @Test + public void stemDoubleKey_behaviorIsLaunchFitness_gestureEventFired() { + overrideBehavior( + STEM_PRIMARY_BUTTON_DOUBLE_PRESS, DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP); + setUpPhoneWindowManager(/* supportSettingsUpdate= */ true); + + sendKey(KEYCODE_STEM_PRIMARY); + sendKey(KEYCODE_STEM_PRIMARY); + + mPhoneWindowManager.assertKeyGestureEventSentToKeyGestureController( + KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_DEFAULT_FITNESS); + } + + @Test public void stemTripleKey_EarlyShortPress_AllAppsThenBackToOriginalThenToggleA11y() throws RemoteException { overrideBehavior(STEM_PRIMARY_BUTTON_SHORT_PRESS, SHORT_PRESS_PRIMARY_LAUNCH_ALL_APPS); diff --git a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java index 1aa908792c0e..a85f8666d2e1 100644 --- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java @@ -919,4 +919,9 @@ class TestPhoneWindowManager { mTestLooper.dispatchAll(); Assert.assertEquals(expectEnabled, mIsTalkBackEnabled); } + + void assertKeyGestureEventSentToKeyGestureController(int gestureType) { + verify(mInputManagerInternal) + .handleKeyGestureInKeyGestureController(anyInt(), any(), anyInt(), eq(gestureType)); + } } |