Restore recent task to freeform space when resizing
bug: 22984782
Change-Id: I95b7b7b4871865102a279e529f068479e9b5df34
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index a449baf..5503f52 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -562,7 +562,7 @@
return task;
}
- if (!restoreRecentTaskLocked(task)) {
+ if (!restoreRecentTaskLocked(task, INVALID_STACK_ID)) {
if (DEBUG_RECENTS) Slog.w(TAG_RECENTS,
"Couldn't restore task id=" + id + " found in recents");
return null;
@@ -2956,7 +2956,7 @@
task.mBounds = task.mLastNonFullscreenBounds = new Rect(bounds);
if (task.stack != null && task.stack.mStackId != FREEFORM_WORKSPACE_STACK_ID) {
// re-restore the task so it can have the proper stack association.
- restoreRecentTaskLocked(task);
+ restoreRecentTaskLocked(task, FREEFORM_WORKSPACE_STACK_ID);
}
return;
}
@@ -3021,9 +3021,18 @@
return mNextFreeStackId;
}
- private boolean restoreRecentTaskLocked(TaskRecord task) {
- final int stackId =
- mLeanbackOnlyDevice ? mHomeStack.mStackId : task.getLaunchStackId(mFocusedStack);
+ /**
+ * Restores a recent task to a stack
+ * @param task The recent task to be restored.
+ * @param stackId The stack to restore the task to (default launch stack will be used
+ * if stackId is invalid).
+ * @return true if the task has been restored successfully.
+ */
+ private boolean restoreRecentTaskLocked(TaskRecord task, int stackId) {
+ if (stackId == INVALID_STACK_ID) {
+ stackId = mLeanbackOnlyDevice ?
+ mHomeStack.mStackId : task.getLaunchStackId(mFocusedStack);
+ }
if (task.stack != null) {
// Task has already been restored once. See if we need to do anything more
if (task.stack.mStackId == stackId) {