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

Commit 04582c76 authored by Andrii Kulian's avatar Andrii Kulian Committed by Automerger Merge Worker
Browse files

Merge "6/n Manage multiple task display area in the policy" into rvc-dev am:...

Merge "6/n Manage multiple task display area in the policy" into rvc-dev am: ac4b972e am: 857c62c9

Change-Id: I63d4a0c932da6d1b324d0776840716ccc77d8d3f
parents 225f2883 857c62c9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5215,10 +5215,10 @@ package android.window {
    method public void onDisplayAreaAppeared(@NonNull android.window.WindowContainerToken);
    method public void onDisplayAreaVanished(@NonNull android.window.WindowContainerToken);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int);
    field public static final int FEATURE_DEFAULT_TASK_CONTAINER = 1; // 0x1
    field public static final int FEATURE_ROOT = 0; // 0x0
    field public static final int FEATURE_SYSTEM_FIRST = 0; // 0x0
    field public static final int FEATURE_SYSTEM_LAST = 10000; // 0x2710
    field public static final int FEATURE_TASK_CONTAINER = 1; // 0x1
    field public static final int FEATURE_UNDEFINED = -1; // 0xffffffff
    field public static final int FEATURE_VENDOR_FIRST = 10001; // 0x2711
    field public static final int FEATURE_WINDOW_TOKENS = 2; // 0x2
+2 −2
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ public class DisplayAreaOrganizer extends WindowOrganizer {
    public static final int FEATURE_SYSTEM_FIRST = 0;
    // The Root display area on a display
    public static final int FEATURE_ROOT = FEATURE_SYSTEM_FIRST;
    // Display area hosting the task container.
    public static final int FEATURE_TASK_CONTAINER = FEATURE_SYSTEM_FIRST + 1;
    // Display area hosting the default task container.
    public static final int FEATURE_DEFAULT_TASK_CONTAINER = FEATURE_SYSTEM_FIRST + 1;
    // Display area hosting non-activity window tokens.
    public static final int FEATURE_WINDOW_TOKENS = FEATURE_SYSTEM_FIRST + 2;

+1 −1
Original line number Diff line number Diff line
@@ -1469,7 +1469,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
            if (toDisplay.getDisplayId() != stack.getDisplayId()) {
                stack.reparent(toDisplay.getDefaultTaskDisplayArea(), false /* onTop */);
            } else {
                toDisplay.mTaskContainers.positionStackAtBottom(stack);
                toDisplay.getDefaultTaskDisplayArea().positionStackAtBottom(stack);
            }

            mRootWindowContainer.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS);
+0 −2
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ import java.util.function.Predicate;
 * - BELOW_TASKS: Can only contain BELOW_TASK DisplayAreas and WindowTokens that go below tasks.
 * - ABOVE_TASKS: Can only contain ABOVE_TASK DisplayAreas and WindowTokens that go above tasks.
 * - ANY: Can contain any kind of DisplayArea, and any kind of WindowToken or the Task container.
 *        Cannot have a sibling that is of type ANY.
 *
 * @param <T> type of the children of the DisplayArea.
 */
@@ -274,7 +273,6 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
        ANY;

        static void checkSiblings(Type bottom, Type top) {
            checkState(!(bottom == ANY && top == ANY), "ANY cannot be a sibling of ANY");
            checkState(!(bottom != BELOW_TASKS && top == BELOW_TASKS),
                    bottom + " must be above BELOW_TASKS");
            checkState(!(bottom == ABOVE_TASKS && top != ABOVE_TASKS),
+31 −10
Original line number Diff line number Diff line
@@ -16,9 +16,14 @@

package com.android.server.wm;

import static android.window.DisplayAreaOrganizer.FEATURE_DEFAULT_TASK_CONTAINER;

import android.content.res.Resources;
import android.text.TextUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * Policy that manages DisplayAreas.
 */
@@ -37,9 +42,9 @@ public abstract class DisplayAreaPolicy {
    protected final DisplayArea<? extends WindowContainer> mImeContainer;

    /**
     * The Tasks container. Tasks etc. are automatically added to this container.
     * The task display areas. Tasks etc. are automatically added to these containers.
     */
    protected final DisplayArea<? extends ActivityStack> mTaskContainers;
    protected final List<TaskDisplayArea> mTaskDisplayAreas;

    /**
     * Construct a new {@link DisplayAreaPolicy}
@@ -48,19 +53,19 @@ public abstract class DisplayAreaPolicy {
     * @param content the display content for which the policy applies
     * @param root the root display area under which the policy operates
     * @param imeContainer the ime container that the policy must attach
     * @param taskDisplayArea the task container that the policy must attach
     * @param taskDisplayAreas the task display areas that the policy must attach
     *
     * @see #attachDisplayAreas()
     */
    protected DisplayAreaPolicy(WindowManagerService wmService,
            DisplayContent content, DisplayArea.Root root,
            DisplayArea<? extends WindowContainer> imeContainer,
            DisplayArea<? extends ActivityStack> taskDisplayArea) {
            List<TaskDisplayArea> taskDisplayAreas) {
        mWmService = wmService;
        mContent = content;
        mRoot = root;
        mImeContainer = imeContainer;
        mTaskContainers = taskDisplayArea;
        mTaskDisplayAreas = taskDisplayAreas;
    }

    /**
@@ -80,15 +85,32 @@ public abstract class DisplayAreaPolicy {
     */
    public abstract void addWindow(WindowToken token);

    /**
     * @return the number of task display areas on the display.
     */
    public int getTaskDisplayAreaCount() {
        return mTaskDisplayAreas.size();
    }

    /**
     * @return the task display area at index.
     */
    public TaskDisplayArea getTaskDisplayAreaAt(int index) {
        return mTaskDisplayAreas.get(index);
    }

    /** Provider for platform-default display area policy. */
    static final class DefaultProvider implements DisplayAreaPolicy.Provider {
        @Override
        public DisplayAreaPolicy instantiate(WindowManagerService wmService,
                DisplayContent content, DisplayArea.Root root,
                DisplayArea<? extends WindowContainer> imeContainer,
                TaskDisplayArea taskDisplayArea) {
                DisplayArea<? extends WindowContainer> imeContainer) {
            final TaskDisplayArea defaultTaskDisplayArea = new TaskDisplayArea(content, wmService,
                    "DefaultTaskDisplayArea", FEATURE_DEFAULT_TASK_CONTAINER);
            final List<TaskDisplayArea> tdaList = new ArrayList<>();
            tdaList.add(defaultTaskDisplayArea);
            return new DisplayAreaPolicyBuilder()
                    .build(wmService, content, root, imeContainer, taskDisplayArea);
                    .build(wmService, content, root, imeContainer, tdaList);
        }
    }

@@ -107,8 +129,7 @@ public abstract class DisplayAreaPolicy {
         */
        DisplayAreaPolicy instantiate(WindowManagerService wmService,
                DisplayContent content, DisplayArea.Root root,
                DisplayArea<? extends WindowContainer> imeContainer,
                TaskDisplayArea taskDisplayArea);
                DisplayArea<? extends WindowContainer> imeContainer);

        /**
         * Instantiate the device-specific {@link Provider}.
Loading