diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index a704eb327649a..1c85ca2bb2697 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -53,7 +53,7 @@ oneway interface IStatusBar boolean showImeSwitcher); void setWindowState(int display, int window, int state); - void showRecentApps(boolean triggeredFromAltTab, boolean forward); + void showRecentApps(boolean triggeredFromAltTab); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecentApps(); void toggleSplitScreen(); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl index fa484c794a5b0..a71fb5611bd9c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl @@ -37,7 +37,7 @@ oneway interface IOverviewProxy { /** * Sent when overview is to be shown. */ - void onOverviewShown(boolean triggeredFromAltTab, boolean forward) = 7; + void onOverviewShown(boolean triggeredFromAltTab) = 7; /** * Sent when overview is to be hidden. diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java index c335a6d74e9b2..5ea1c0b4ce852 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java @@ -59,11 +59,11 @@ public class OverviewProxyRecentsImpl implements RecentsImplementation { } @Override - public void showRecentApps(boolean triggeredFromAltTab, boolean forward) { + public void showRecentApps(boolean triggeredFromAltTab) { IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); if (overviewProxy != null) { try { - overviewProxy.onOverviewShown(triggeredFromAltTab, forward); + overviewProxy.onOverviewShown(triggeredFromAltTab); } catch (RemoteException e) { Log.e(TAG, "Failed to send overview show event to launcher.", e); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java index 95d6c187a224a..b041f957d7712 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java +++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java @@ -65,14 +65,14 @@ public class Recents implements CoreStartable, CommandQueue.Callbacks { } @Override - public void showRecentApps(boolean triggeredFromAltTab, boolean forward) { + public void showRecentApps(boolean triggeredFromAltTab) { // Ensure the device has been provisioned before allowing the user to interact with // recents if (!isUserSetup()) { return; } - mImpl.showRecentApps(triggeredFromAltTab, forward); + mImpl.showRecentApps(triggeredFromAltTab); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java index 010ceda84068a..8848dbbda5e78 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java @@ -31,7 +31,7 @@ public interface RecentsImplementation { default void preloadRecentApps() {} default void cancelPreloadRecentApps() {} - default void showRecentApps(boolean triggeredFromAltTab, boolean forward) {} + default void showRecentApps(boolean triggeredFromAltTab) {} default void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {} default void toggleRecentApps() {} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 755675066979e..2f25244baa384 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -228,7 +228,7 @@ public class CommandQueue extends IStatusBar.Stub implements */ default void setImeWindowStatus(int displayId, IBinder token, int vis, @BackDispositionMode int backDisposition, boolean showImeSwitcher) { } - default void showRecentApps(boolean triggeredFromAltTab, boolean forward) { } + default void showRecentApps(boolean triggeredFromAltTab) { } default void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { } default void toggleRecentApps() { } default void toggleSplitScreen() { } @@ -695,11 +695,11 @@ public class CommandQueue extends IStatusBar.Stub implements } } - public void showRecentApps(boolean triggeredFromAltTab, boolean forward) { + public void showRecentApps(boolean triggeredFromAltTab) { synchronized (mLock) { mHandler.removeMessages(MSG_SHOW_RECENT_APPS); - mHandler.obtainMessage(MSG_SHOW_RECENT_APPS, triggeredFromAltTab ? 1 : 0, - forward ? 1 : 0, null).sendToTarget(); + mHandler.obtainMessage(MSG_SHOW_RECENT_APPS, triggeredFromAltTab ? 1 : 0, 0, + null).sendToTarget(); } } @@ -1407,7 +1407,7 @@ public class CommandQueue extends IStatusBar.Stub implements break; case MSG_SHOW_RECENT_APPS: for (int i = 0; i < mCallbacks.size(); i++) { - mCallbacks.get(i).showRecentApps(msg.arg1 != 0, msg.arg2 != 0); + mCallbacks.get(i).showRecentApps(msg.arg1 != 0); } break; case MSG_HIDE_RECENT_APPS: diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java index fc7cd890af36e..0000c32aa60d2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java @@ -209,9 +209,9 @@ public class CommandQueueTest extends SysuiTestCase { @Test public void testShowRecentApps() { - mCommandQueue.showRecentApps(true, false); + mCommandQueue.showRecentApps(true); waitForIdleSync(); - verify(mCallbacks).showRecentApps(eq(true), eq(false)); + verify(mCallbacks).showRecentApps(eq(true)); } @Test diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 60751e675aab4..5a0c3443078d8 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -664,7 +664,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { dispatchMediaKeyRepeatWithWakeLock((KeyEvent)msg.obj); break; case MSG_DISPATCH_SHOW_RECENTS: - showRecents(); + showRecentApps(false); break; case MSG_DISPATCH_SHOW_GLOBAL_ACTIONS: showGlobalActionsInternal(); @@ -2927,7 +2927,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; case KeyEvent.KEYCODE_RECENT_APPS: if (down && repeatCount == 0) { - showRecents(); + showRecentApps(false /* triggeredFromAltTab */); } return key_consumed; case KeyEvent.KEYCODE_APP_SWITCH: @@ -3110,23 +3110,22 @@ public class PhoneWindowManager implements WindowManagerPolicy { } break; case KeyEvent.KEYCODE_TAB: - if (down) { - if (event.isMetaPressed()) { - if (!keyguardOn && isUserSetupComplete()) { - showRecents(); + if (down && event.isMetaPressed()) { + if (!keyguardOn && isUserSetupComplete()) { + showRecentApps(false); + return key_consumed; + } + } else if (down && repeatCount == 0) { + // Display task switcher for ALT-TAB. + if (mRecentAppsHeldModifiers == 0 && !keyguardOn && isUserSetupComplete()) { + final int shiftlessModifiers = + event.getModifiers() & ~KeyEvent.META_SHIFT_MASK; + if (KeyEvent.metaStateHasModifiers( + shiftlessModifiers, KeyEvent.META_ALT_ON)) { + mRecentAppsHeldModifiers = shiftlessModifiers; + showRecentApps(true); return key_consumed; } - } else { - // Display task switcher for ALT-TAB. - if (mRecentAppsHeldModifiers == 0 && !keyguardOn && isUserSetupComplete()) { - final int modifiers = event.getModifiers(); - if (KeyEvent.metaStateHasModifiers(modifiers, KeyEvent.META_ALT_ON)) { - mRecentAppsHeldModifiers = modifiers; - showRecentsFromAltTab(KeyEvent.metaStateHasModifiers(modifiers, - KeyEvent.META_SHIFT_ON)); - return key_consumed; - } - } } } break; @@ -3662,19 +3661,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { mHandler.obtainMessage(MSG_DISPATCH_SHOW_RECENTS).sendToTarget(); } - private void showRecents() { + private void showRecentApps(boolean triggeredFromAltTab) { mPreloadedRecentApps = false; // preloading no longer needs to be canceled StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); if (statusbar != null) { - statusbar.showRecentApps(false /* triggeredFromAltTab */, false /* forward */); - } - } - - private void showRecentsFromAltTab(boolean forward) { - mPreloadedRecentApps = false; // preloading no longer needs to be canceled - StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); - if (statusbar != null) { - statusbar.showRecentApps(true /* triggeredFromAltTab */, forward); + statusbar.showRecentApps(triggeredFromAltTab); } } diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index 05b3ce7de9bed..5521384bb1693 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -39,7 +39,7 @@ public interface StatusBarManagerInternal { void cancelPreloadRecentApps(); - void showRecentApps(boolean triggeredFromAltTab, boolean forward); + void showRecentApps(boolean triggeredFromAltTab); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 0f499815a609a..83f4805aca58a 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -454,10 +454,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D } @Override - public void showRecentApps(boolean triggeredFromAltTab, boolean forward) { + public void showRecentApps(boolean triggeredFromAltTab) { if (mBar != null) { try { - mBar.showRecentApps(triggeredFromAltTab, forward); + mBar.showRecentApps(triggeredFromAltTab); } catch (RemoteException ex) {} } } 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 fd1ca68c08db0..a76b82babe08a 100644 --- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java @@ -407,7 +407,7 @@ class TestPhoneWindowManager { void assertShowRecentApps() { waitForIdle(); - verify(mStatusBarManagerInternal).showRecentApps(anyBoolean(), anyBoolean()); + verify(mStatusBarManagerInternal).showRecentApps(anyBoolean()); } void assertSwitchKeyboardLayout() {