diff options
4 files changed, 34 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0532a79fa8ef..247a5c02452e 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2987,6 +2987,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } break; case KeyEvent.KEYCODE_H: + case KeyEvent.KEYCODE_ENTER: if (event.isMetaPressed()) { return handleHomeShortcuts(displayId, focusedToken, event); } diff --git a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java index 8f0a5e6f5d0d..bf6901e963e0 100644 --- a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java @@ -21,6 +21,8 @@ import static android.view.KeyEvent.KEYCODE_B; import static android.view.KeyEvent.KEYCODE_C; import static android.view.KeyEvent.KEYCODE_CTRL_LEFT; import static android.view.KeyEvent.KEYCODE_E; +import static android.view.KeyEvent.KEYCODE_ENTER; +import static android.view.KeyEvent.KEYCODE_H; import static android.view.KeyEvent.KEYCODE_K; import static android.view.KeyEvent.KEYCODE_M; import static android.view.KeyEvent.KEYCODE_META_LEFT; @@ -164,4 +166,24 @@ public class ModifierShortcutTests extends ShortcutKeyTestBase { sendKeyCombination(new int[]{KEYCODE_META_LEFT, KEYCODE_ALT_LEFT}, 0); mPhoneWindowManager.assertToggleCapsLock(); } + + /** + * META + H to go to homescreen + */ + @Test + public void testMetaH() { + mPhoneWindowManager.overrideLaunchHome(); + sendKeyCombination(new int[]{KEYCODE_META_LEFT, KEYCODE_H}, 0); + mPhoneWindowManager.assertGoToHomescreen(); + } + + /** + * META + ENTER to go to homescreen + */ + @Test + public void testMetaEnter() { + mPhoneWindowManager.overrideLaunchHome(); + sendKeyCombination(new int[]{KEYCODE_META_LEFT, KEYCODE_ENTER}, 0); + mPhoneWindowManager.assertGoToHomescreen(); + } } diff --git a/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java b/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java index 6368f4748b26..676bfb00c60c 100644 --- a/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java +++ b/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java @@ -117,9 +117,9 @@ class ShortcutKeyTestBase { throw new RuntimeException(e); } - for (KeyEvent event: events) { + for (int i = count - 1; i >= 0; i--) { final long eventTime = SystemClock.uptimeMillis(); - final int keyCode = event.getKeyCode(); + final int keyCode = keyCodes[i]; final KeyEvent upEvent = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_UP, keyCode, 0, metaState, KeyCharacterMap.VIRTUAL_KEYBOARD, 0 /*scancode*/, 0 /*flags*/, InputDevice.SOURCE_KEYBOARD); 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 a2ee8a45433d..2665e197f91f 100644 --- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java @@ -353,6 +353,10 @@ class TestPhoneWindowManager { () -> LocalServices.getService(eq(StatusBarManagerInternal.class))); } + void overrideLaunchHome() { + doNothing().when(mPhoneWindowManager).launchHomeFromHotKey(anyInt()); + } + /** * Below functions will check the policy behavior could be invoked. */ @@ -480,4 +484,9 @@ class TestPhoneWindowManager { transitionCaptor.getValue().onAppTransitionFinishedLocked(any()); verify(mPhoneWindowManager).lockNow(null); } + + void assertGoToHomescreen() { + waitForIdle(); + verify(mPhoneWindowManager).launchHomeFromHotKey(anyInt()); + } } |