summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2016-01-15 08:56:11 -0800
committer Wale Ogunwale <ogunwale@google.com> 2016-01-15 10:22:38 -0800
commit9101d2664388e234de1a2b3fd9e82fd777c1c407 (patch)
tree9c0d5e22e10337373f3604e732c819a86f8c1fd9
parentb68d2d5b68dc58fb7b75ce94af74de58a1b9d3f9 (diff)
Allow AMS.moveTasksToFullscreenStack moving tasks onTop
Bug: 26573473 Change-Id: I4517ac2b3e803637971c329be2511ba66412d815
-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 624131ee036f..08f37f5bd51b 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;
}
@@ -6573,11 +6574,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 1ae91a65bba2..25b7841a3b66 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 093a33dc6049..05962457a699 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18155,7 +18155,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.");
@@ -18165,9 +18165,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);