diff options
15 files changed, 37 insertions, 35 deletions
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 96f179b8db63..187c8afc2282 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -1304,7 +1304,7 @@ public interface WindowManagerPolicy { * Show the recents task list app. * @hide */ - public void showRecentApps(); + public void showRecentApps(boolean fromHome); /** * Show the global actions dialog. diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index 36e21b977f6d..fcf65f26bffa 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -57,7 +57,7 @@ oneway interface IStatusBar void notificationLightOff(); void notificationLightPulse(int argb, int millisOn, int millisOff); - void showRecentApps(boolean triggeredFromAltTab); + void showRecentApps(boolean triggeredFromAltTab, boolean fromHome); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecentApps(); void toggleSplitScreen(); diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index ee3f9379b03e..994bdebd880e 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -65,7 +65,7 @@ interface IStatusBarService void setSystemUiVisibility(int vis, int mask, String cause); void setWindowState(int window, int state); - void showRecentApps(boolean triggeredFromAltTab); + void showRecentApps(boolean triggeredFromAltTab, boolean fromHome); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecentApps(); void preloadRecentApps(); diff --git a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java b/packages/SystemUI/src/com/android/systemui/RecentsComponent.java index 73b9d02e403a..eaafafac3f87 100644 --- a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java +++ b/packages/SystemUI/src/com/android/systemui/RecentsComponent.java @@ -21,7 +21,7 @@ import android.view.Display; import android.view.View; public interface RecentsComponent { - void showRecents(boolean triggeredFromAltTab, View statusBarView); + void showRecents(boolean triggeredFromAltTab, boolean fromHome, View statusBarView); void hideRecents(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecents(Display display, int layoutDirection, View statusBarView); void preloadRecents(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl b/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl index 37085c77055b..7ce9384258fe 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl +++ b/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl @@ -27,7 +27,7 @@ oneway interface IRecentsNonSystemUserCallbacks { void preloadRecents(); void cancelPreloadingRecents(); void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, boolean animate, - boolean reloadTasks); + boolean reloadTasks, boolean fromHome); void hideRecents(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecents(); void onConfigurationChanged(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java index a227e1d00011..bb709c5ca9c0 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java +++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java @@ -238,7 +238,7 @@ public class Recents extends SystemUI * Shows the Recents. */ @Override - public void showRecents(boolean triggeredFromAltTab, View statusBarView) { + public void showRecents(boolean triggeredFromAltTab, boolean fromHome, View statusBarView) { // Ensure the device has been provisioned before allowing the user to interact with // recents if (!isUserSetup()) { @@ -252,7 +252,7 @@ public class Recents extends SystemUI int currentUser = sSystemServicesProxy.getCurrentUser(); if (sSystemServicesProxy.isSystemUser(currentUser)) { mImpl.showRecents(triggeredFromAltTab, false /* draggingInRecents */, - true /* animate */, false /* reloadTasks */); + true /* animate */, false /* reloadTasks */, fromHome); } else { if (mSystemToUserCallbacks != null) { IRecentsNonSystemUserCallbacks callbacks = @@ -260,7 +260,7 @@ public class Recents extends SystemUI if (callbacks != null) { try { callbacks.showRecents(triggeredFromAltTab, false /* draggingInRecents */, - true /* animate */, false /* reloadTasks */); + true /* animate */, false /* reloadTasks */, fromHome); } catch (RemoteException e) { Log.e(TAG, "Callback failed", e); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java index 618a2e2c485b..0413bc9fcc4e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java @@ -156,7 +156,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // When this fires, then the user has not released alt-tab for at least // FAST_ALT_TAB_DELAY_MS milliseconds showRecents(mTriggeredFromAltTab, false /* draggingInRecents */, true /* animate */, - false /* reloadTasks */); + false /* reloadTasks */, false /* fromHome */); } }); @@ -230,7 +230,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } public void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, - boolean animate, boolean launchedWhileDockingTask) { + boolean animate, boolean launchedWhileDockingTask, boolean fromHome) { mTriggeredFromAltTab = triggeredFromAltTab; mDraggingInRecents = draggingInRecents; mLaunchedWhileDocking = launchedWhileDockingTask; @@ -260,7 +260,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener ActivityManager.RunningTaskInfo topTask = ssp.getTopMostTask(); MutableBoolean isTopTaskHome = new MutableBoolean(true); if (topTask == null || !ssp.isRecentsTopMost(topTask, isTopTaskHome)) { - startRecentsActivity(topTask, isTopTaskHome.value, animate); + startRecentsActivity(topTask, isTopTaskHome.value || fromHome, animate); } } catch (ActivityNotFoundException e) { Log.e(TAG, "Failed to launch RecentsActivity", e); @@ -534,7 +534,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener false /* triggeredFromAltTab */, dragMode == NavigationBarGestureHelper.DRAG_MODE_RECENTS, false /* animate */, - true /* launchedWhileDockingTask*/); + true /* launchedWhileDockingTask*/, + false /* fromHome */); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java index 86ec98ae3d4f..257bda2e147a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java @@ -57,12 +57,13 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub { @Override public void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, boolean animate, - boolean reloadTasks) throws RemoteException { + boolean reloadTasks, boolean fromHome) throws RemoteException { SomeArgs args = SomeArgs.obtain(); args.argi1 = triggeredFromAltTab ? 1 : 0; args.argi2 = draggingInRecents ? 1 : 0; args.argi3 = animate ? 1 : 0; args.argi4 = reloadTasks ? 1 : 0; + args.argi5 = fromHome ? 1 : 0; mHandler.sendMessage(mHandler.obtainMessage(MSG_SHOW_RECENTS, args)); } @@ -118,7 +119,7 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub { case MSG_SHOW_RECENTS: SomeArgs args = (SomeArgs) msg.obj; mImpl.showRecents(args.argi1 != 0, args.argi2 != 0, args.argi3 != 0, - args.argi4 != 0); + args.argi4 != 0, args.argi5 != 0); break; case MSG_HIDE_RECENTS: mImpl.hideRecents(msg.arg1 != 0, msg.arg2 != 0); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 237ca5ec16f4..7c6c641cb7c9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -1209,10 +1209,10 @@ public abstract class BaseStatusBar extends SystemUI implements } @Override - public void showRecentApps(boolean triggeredFromAltTab) { + public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { int msg = MSG_SHOW_RECENT_APPS; mHandler.removeMessages(msg); - mHandler.obtainMessage(msg, triggeredFromAltTab ? 1 : 0, 0).sendToTarget(); + mHandler.obtainMessage(msg, triggeredFromAltTab ? 1 : 0, fromHome ? 1 : 0).sendToTarget(); } @Override @@ -1315,10 +1315,10 @@ public abstract class BaseStatusBar extends SystemUI implements /** Proxy for RecentsComponent */ - protected void showRecents(boolean triggeredFromAltTab) { + protected void showRecents(boolean triggeredFromAltTab, boolean fromHome) { if (mRecents != null) { sendCloseSystemWindows(SYSTEM_DIALOG_REASON_RECENT_APPS); - mRecents.showRecents(triggeredFromAltTab, getStatusBarView()); + mRecents.showRecents(triggeredFromAltTab, fromHome, getStatusBarView()); } } @@ -1495,7 +1495,7 @@ public abstract class BaseStatusBar extends SystemUI implements public void handleMessage(Message m) { switch (m.what) { case MSG_SHOW_RECENT_APPS: - showRecents(m.arg1 > 0); + showRecents(m.arg1 > 0, m.arg2 != 0); break; case MSG_HIDE_RECENT_APPS: hideRecents(m.arg1 > 0, m.arg2 > 0); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index cc8e3bda99b4..f7d13eee25ed 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -103,7 +103,7 @@ public class CommandQueue extends IStatusBar.Stub { void topAppWindowChanged(boolean visible); void setImeWindowStatus(IBinder token, int vis, int backDisposition, boolean showImeSwitcher); - void showRecentApps(boolean triggeredFromAltTab); + void showRecentApps(boolean triggeredFromAltTab, boolean fromHome); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecentApps(); void toggleSplitScreen(); @@ -210,11 +210,11 @@ public class CommandQueue extends IStatusBar.Stub { } } - public void showRecentApps(boolean triggeredFromAltTab) { + public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { synchronized (mLock) { mHandler.removeMessages(MSG_SHOW_RECENT_APPS); mHandler.obtainMessage(MSG_SHOW_RECENT_APPS, - triggeredFromAltTab ? 1 : 0, 0, null).sendToTarget(); + triggeredFromAltTab ? 1 : 0, fromHome ? 1 : 0, null).sendToTarget(); } } @@ -421,7 +421,7 @@ public class CommandQueue extends IStatusBar.Stub { msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false)); break; case MSG_SHOW_RECENT_APPS: - mCallbacks.showRecentApps(msg.arg1 != 0); + mCallbacks.showRecentApps(msg.arg1 != 0, msg.arg2 != 0); break; case MSG_HIDE_RECENT_APPS: mCallbacks.hideRecentApps(msg.arg1 != 0, msg.arg2 != 0); diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index ab3a0b3c1e40..49f799e9ed4d 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -615,7 +615,7 @@ public final class ActivityStackSupervisor implements DisplayListener { /** Returns true if the focus activity was adjusted to the home stack top activity. */ boolean moveHomeStackTaskToTop(int homeStackTaskType, String reason) { if (homeStackTaskType == RECENTS_ACTIVITY_TYPE) { - mWindowManager.showRecentApps(); + mWindowManager.showRecentApps(false /* fromHome */); return false; } @@ -636,7 +636,7 @@ public final class ActivityStackSupervisor implements DisplayListener { } if (homeStackTaskType == RECENTS_ACTIVITY_TYPE) { - mWindowManager.showRecentApps(); + mWindowManager.showRecentApps(false /* fromHome */); return false; } diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index a96f23a4cc1b..4075230a9e10 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -557,7 +557,7 @@ class ActivityStarter { // recents into docked stack. We don't want the launched activity to be alone in a // docked stack, so we want to immediately launch recents too. if (DEBUG_RECENTS) Slog.d(TAG, "Scheduling recents launch."); - mWindowManager.showRecentApps(); + mWindowManager.showRecentApps(true /* fromHome */); return; } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 8f259db4c924..a70486f2c694 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -733,7 +733,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { dispatchMediaKeyRepeatWithWakeLock((KeyEvent)msg.obj); break; case MSG_DISPATCH_SHOW_RECENTS: - showRecentApps(false); + showRecentApps(false, msg.arg1 != 0); break; case MSG_DISPATCH_SHOW_GLOBAL_ACTIONS: showGlobalActionsInternal(); @@ -3623,17 +3623,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { } @Override - public void showRecentApps() { + public void showRecentApps(boolean fromHome) { mHandler.removeMessages(MSG_DISPATCH_SHOW_RECENTS); - mHandler.sendEmptyMessage(MSG_DISPATCH_SHOW_RECENTS); + mHandler.obtainMessage(MSG_DISPATCH_SHOW_RECENTS, fromHome ? 1 : 0, 0).sendToTarget(); } - private void showRecentApps(boolean triggeredFromAltTab) { + private void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { mPreloadedRecentApps = false; // preloading no longer needs to be canceled try { IStatusBarService statusbar = getStatusBarService(); if (statusbar != null) { - statusbar.showRecentApps(triggeredFromAltTab); + statusbar.showRecentApps(triggeredFromAltTab, fromHome); } } catch (RemoteException e) { Slog.e(TAG, "RemoteException when showing recent apps", e); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index e71bdb83841b..8356a4ed98e8 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -555,10 +555,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } @Override - public void showRecentApps(boolean triggeredFromAltTab) { + public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { if (mBar != null) { try { - mBar.showRecentApps(triggeredFromAltTab); + mBar.showRecentApps(triggeredFromAltTab, fromHome); } catch (RemoteException ex) {} } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a4238c1a4017..2e0c187ac226 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9819,8 +9819,8 @@ public class WindowManagerService extends IWindowManager.Stub mPolicy.lockNow(options); } - public void showRecentApps() { - mPolicy.showRecentApps(); + public void showRecentApps(boolean fromHome) { + mPolicy.showRecentApps(fromHome); } @Override |