summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityManagerNative.java6
-rw-r--r--core/java/android/app/IActivityManager.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java3
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java17
4 files changed, 20 insertions, 8 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 94b4e7f54ff0..63b6825dca34 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -2798,7 +2798,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
case MOVE_TASKS_TO_FULLSCREEN_STACK_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
final int stackId = data.readInt();
- moveTasksToFullscreenStack(stackId);
+ final boolean onTop = data.readInt() == 1;
+ moveTasksToFullscreenStack(stackId, onTop);
reply.writeNoException();
return true;
}
@@ -6581,11 +6582,12 @@ class ActivityManagerProxy implements IActivityManager
}
@Override
- public void moveTasksToFullscreenStack(int fromStackId) throws RemoteException {
+ public void moveTasksToFullscreenStack(int fromStackId, boolean onTop) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeInt(fromStackId);
+ data.writeInt(onTop ? 1 : 0);
mRemote.transact(MOVE_TASKS_TO_FULLSCREEN_STACK_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 10885f2c134f..5bb2cf5014d4 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -577,7 +577,7 @@ public interface IActivityManager extends IInterface {
public void suppressResizeConfigChanges(boolean suppress) throws RemoteException;
- public void moveTasksToFullscreenStack(int fromStackId) throws RemoteException;
+ public void moveTasksToFullscreenStack(int fromStackId, boolean onTop) throws RemoteException;
public int getAppStartMode(int uid, String packageName) throws RemoteException;
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java b/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java
index 2791dfc3972e..67bb58ae8fc9 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java
@@ -85,7 +85,8 @@ public class WindowManagerProxy {
@Override
public void run() {
try {
- ActivityManagerNative.getDefault().moveTasksToFullscreenStack(DOCKED_STACK_ID);
+ ActivityManagerNative.getDefault().moveTasksToFullscreenStack(
+ DOCKED_STACK_ID, false /* onTop */);
} catch (RemoteException e) {
Log.w(TAG, "Failed to remove stack: " + e);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index ca38b7132f11..0f4b68e7be4a 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18166,7 +18166,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
@Override
- public void moveTasksToFullscreenStack(int fromStackId) {
+ public void moveTasksToFullscreenStack(int fromStackId, boolean onTop) {
enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "moveTasksToFullscreenStack()");
if (fromStackId == HOME_STACK_ID) {
throw new IllegalArgumentException("You can't move tasks from the home stack.");
@@ -18176,9 +18176,18 @@ public final class ActivityManagerService extends ActivityManagerNative
final ActivityStack stack = mStackSupervisor.getStack(fromStackId);
if (stack != null) {
final ArrayList<TaskRecord> tasks = stack.getAllTasks();
- for (int i = tasks.size() - 1; i >= 0; i--) {
- mStackSupervisor.positionTaskInStackLocked(tasks.get(i).taskId,
- FULLSCREEN_WORKSPACE_STACK_ID, 0);
+ final int size = tasks.size();
+ if (onTop) {
+ for (int i = 0; i < size; i++) {
+ mStackSupervisor.moveTaskToStackLocked(tasks.get(i).taskId,
+ FULLSCREEN_WORKSPACE_STACK_ID, ON_TOP, !FORCE_FOCUS,
+ "moveTasksToFullscreenStack", ANIMATE);
+ }
+ } else {
+ for (int i = size - 1; i >= 0; i--) {
+ mStackSupervisor.positionTaskInStackLocked(tasks.get(i).taskId,
+ FULLSCREEN_WORKSPACE_STACK_ID, 0);
+ }
}
}
Binder.restoreCallingIdentity(origId);