Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfcada36 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Track recents like home for times when it is separated" into rvc-dev...

Merge "Track recents like home for times when it is separated" into rvc-dev am: c5304b1a am: 4529987a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11854925

Change-Id: I10b2f8347adbac39854b8fc2c38800b117a7566d
parents 38a3684b 4529987a
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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;
    }
@@ -246,6 +256,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()) {
@@ -273,6 +293,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) {