Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +10 −5 Original line number Diff line number Diff line Loading @@ -2725,12 +2725,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override void onLongPress(long eventTime) { // Long-press should be triggered only if app doesn't handle it. if (mLongPressOnStemPrimaryBehavior == LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT) { // Long-press to assistant gesture is not overridable by apps. stemPrimaryLongPress(eventTime); } else { // Other long-press actions should be triggered only if app doesn't handle it. mDeferredKeyActionExecutor.queueKeyAction( KeyEvent.KEYCODE_STEM_PRIMARY, eventTime, () -> stemPrimaryLongPress(eventTime)); } } @Override void onMultiPress(long downTime, int count, int unusedDisplayId) { Loading services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java +20 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,26 @@ public class StemKeyGestureTests extends ShortcutKeyTestBase { mPhoneWindowManager.assertStatusBarStartAssist(); } @Test public void stemLongKey_appHasOverridePermission_consumedByApp_triggerStatusBarToStartAssist() { overrideBehavior( STEM_PRIMARY_BUTTON_LONG_PRESS, LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT); setUpPhoneWindowManager(/* supportSettingsUpdate= */ true); mPhoneWindowManager.overrideShouldEarlyShortPressOnStemPrimary(false); mPhoneWindowManager.setupAssistForLaunch(); mPhoneWindowManager.overrideSearchManager(null); mPhoneWindowManager.overrideStatusBarManagerInternal(); mPhoneWindowManager.overrideIsUserSetupComplete(true); mPhoneWindowManager.overrideFocusedWindowButtonOverridePermission(true); setDispatchedKeyHandler(keyEvent -> true); sendKey(KEYCODE_STEM_PRIMARY, /* longPress= */ true); mPhoneWindowManager.assertStatusBarStartAssist(); } @Test public void stemDoubleKey_EarlyShortPress_AllAppsThenSwitchToMostRecent() throws RemoteException { Loading Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +10 −5 Original line number Diff line number Diff line Loading @@ -2725,12 +2725,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override void onLongPress(long eventTime) { // Long-press should be triggered only if app doesn't handle it. if (mLongPressOnStemPrimaryBehavior == LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT) { // Long-press to assistant gesture is not overridable by apps. stemPrimaryLongPress(eventTime); } else { // Other long-press actions should be triggered only if app doesn't handle it. mDeferredKeyActionExecutor.queueKeyAction( KeyEvent.KEYCODE_STEM_PRIMARY, eventTime, () -> stemPrimaryLongPress(eventTime)); } } @Override void onMultiPress(long downTime, int count, int unusedDisplayId) { Loading
services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java +20 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,26 @@ public class StemKeyGestureTests extends ShortcutKeyTestBase { mPhoneWindowManager.assertStatusBarStartAssist(); } @Test public void stemLongKey_appHasOverridePermission_consumedByApp_triggerStatusBarToStartAssist() { overrideBehavior( STEM_PRIMARY_BUTTON_LONG_PRESS, LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT); setUpPhoneWindowManager(/* supportSettingsUpdate= */ true); mPhoneWindowManager.overrideShouldEarlyShortPressOnStemPrimary(false); mPhoneWindowManager.setupAssistForLaunch(); mPhoneWindowManager.overrideSearchManager(null); mPhoneWindowManager.overrideStatusBarManagerInternal(); mPhoneWindowManager.overrideIsUserSetupComplete(true); mPhoneWindowManager.overrideFocusedWindowButtonOverridePermission(true); setDispatchedKeyHandler(keyEvent -> true); sendKey(KEYCODE_STEM_PRIMARY, /* longPress= */ true); mPhoneWindowManager.assertStatusBarStartAssist(); } @Test public void stemDoubleKey_EarlyShortPress_AllAppsThenSwitchToMostRecent() throws RemoteException { Loading