Track recents like home for times when it is separated
when using 3p launchers, recents is a separate stack. As such we need to make sure that the recents root is provided when asked for just like home is. Bug: 158851728 Test: Using 3p launcher in split-secondary, open recents Change-Id: I90dc6e75a718aa142c870b87bd93081e259acdea
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.server.wm;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
||||
@@ -99,6 +100,9 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
private ActivityStack mRootPinnedTask;
|
||||
private ActivityStack mRootSplitScreenPrimaryTask;
|
||||
|
||||
// TODO(b/159029784): Remove when getStack() behavior is cleaned-up
|
||||
private ActivityStack mRootRecentsTask;
|
||||
|
||||
private final ArrayList<ActivityStack> mTmpAlwaysOnTopStacks = new ArrayList<>();
|
||||
private final ArrayList<ActivityStack> mTmpNormalStacks = new ArrayList<>();
|
||||
private final ArrayList<ActivityStack> mTmpHomeStacks = new ArrayList<>();
|
||||
@@ -163,6 +167,8 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
ActivityStack getStack(int windowingMode, int activityType) {
|
||||
if (activityType == ACTIVITY_TYPE_HOME) {
|
||||
return mRootHomeTask;
|
||||
} else if (activityType == ACTIVITY_TYPE_RECENTS) {
|
||||
return mRootRecentsTask;
|
||||
}
|
||||
if (windowingMode == WINDOWING_MODE_PINNED) {
|
||||
return mRootPinnedTask;
|
||||
@@ -199,6 +205,10 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
return mRootHomeTask;
|
||||
}
|
||||
|
||||
@Nullable ActivityStack getRootRecentsTask() {
|
||||
return mRootRecentsTask;
|
||||
}
|
||||
|
||||
ActivityStack getRootPinnedTask() {
|
||||
return mRootPinnedTask;
|
||||
}
|
||||
@@ -237,6 +247,16 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
} else {
|
||||
mRootHomeTask = stack;
|
||||
}
|
||||
} else if (stack.isActivityTypeRecents()) {
|
||||
if (mRootRecentsTask != null) {
|
||||
if (!stack.isDescendantOf(mRootRecentsTask)) {
|
||||
throw new IllegalArgumentException("addStackReferenceIfNeeded: recents stack="
|
||||
+ mRootRecentsTask + " already exist on display=" + this
|
||||
+ " stack=" + stack);
|
||||
}
|
||||
} else {
|
||||
mRootRecentsTask = stack;
|
||||
}
|
||||
}
|
||||
|
||||
if (!stack.isRootTask()) {
|
||||
@@ -264,6 +284,8 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
void removeStackReferenceIfNeeded(ActivityStack stack) {
|
||||
if (stack == mRootHomeTask) {
|
||||
mRootHomeTask = null;
|
||||
} else if (stack == mRootRecentsTask) {
|
||||
mRootRecentsTask = null;
|
||||
} else if (stack == mRootPinnedTask) {
|
||||
mRootPinnedTask = null;
|
||||
} else if (stack == mRootSplitScreenPrimaryTask) {
|
||||
|
||||
Reference in New Issue
Block a user