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

Commit e121a70a authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

Merge "Compute configuration overrides for tasks created by organizer" into rvc-dev am: d398485d

Change-Id: I56e67c88be9654279e498d5015bb3b7fe7caab2c
parents 7e64adb6 d398485d
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL;
import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL;


@@ -191,8 +192,9 @@ public class ActivityStartController {
        try {
        try {
            // TODO(multi-display-area): Support starting home in a task display area
            // TODO(multi-display-area): Support starting home in a task display area
            // Make sure home stack exist on display.
            // Make sure home stack exist on display.
            // TODO(b/153624902): Replace with TaskDisplayArea#getOrCreateRootHomeTask()
            homeStack = display.getDefaultTaskDisplayArea().getOrCreateStack(
            homeStack = display.getDefaultTaskDisplayArea().getOrCreateStack(
                    WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP);
                    WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, ON_TOP);
        } finally {
        } finally {
            mSupervisor.endDeferResume();
            mSupervisor.endDeferResume();
        }
        }
+1 −3
Original line number Original line Diff line number Diff line
@@ -23,7 +23,6 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
@@ -1369,8 +1368,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
        calculateDefaultMinimalSizeOfResizeableTasks();
        calculateDefaultMinimalSizeOfResizeableTasks();


        final TaskDisplayArea defaultTaskDisplayArea = getDefaultTaskDisplayArea();
        final TaskDisplayArea defaultTaskDisplayArea = getDefaultTaskDisplayArea();
        defaultTaskDisplayArea.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME,
        defaultTaskDisplayArea.getOrCreateRootHomeTask();
                ON_TOP);
        positionChildAt(POSITION_TOP, defaultTaskDisplayArea.mDisplayContent,
        positionChildAt(POSITION_TOP, defaultTaskDisplayArea.mDisplayContent,
                false /* includingParents */);
                false /* includingParents */);
    }
    }
+18 −20
Original line number Original line Diff line number Diff line
@@ -2334,32 +2334,30 @@ class Task extends WindowContainer<WindowContainer> {
        return Configuration.reduceScreenLayout(sourceScreenLayout, longSize, shortSize);
        return Configuration.reduceScreenLayout(sourceScreenLayout, longSize, shortSize);
    }
    }


    private void resolveOrganizedOverrideConfiguration(Configuration newParentConfig) {
    @Override
    void resolveOverrideConfiguration(Configuration newParentConfig) {
        mTmpBounds.set(getResolvedOverrideConfiguration().windowConfiguration.getBounds());
        super.resolveOverrideConfiguration(newParentConfig);
        super.resolveOverrideConfiguration(newParentConfig);
        if (!isOrganized()) {
            return;
        }


        final Task root = getRootTask();
        // Resolve override windowing mode to fullscreen for home task (even on freeform
        if (root == this) {
        // display), or split-screen-secondary if in split-screen mode.
            return;
        int windowingMode =
                getResolvedOverrideConfiguration().windowConfiguration.getWindowingMode();
        if (getActivityType() == ACTIVITY_TYPE_HOME && windowingMode == WINDOWING_MODE_UNDEFINED) {
            windowingMode = inSplitScreenWindowingMode() ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY
                    : WINDOWING_MODE_FULLSCREEN;
            getResolvedOverrideConfiguration().windowConfiguration.setWindowingMode(windowingMode);
        }
        }


        // Ensure to have the same windowing mode for the child tasks that controlled by task org.
        if (!isLeafTask()) {
        getResolvedOverrideConfiguration().windowConfiguration
            // Compute configuration overrides for tasks that created by organizer, so that
                .setWindowingMode(root.getWindowingMode());
            // organizer can get the correct configuration from those tasks.
            if (mCreatedByOrganizer) {
                computeConfigResourceOverrides(getResolvedOverrideConfiguration(), newParentConfig);
            }
            }

    @Override
    void resolveOverrideConfiguration(Configuration newParentConfig) {
        if (!isLeafTask() || mCreatedByOrganizer) {
            resolveOrganizedOverrideConfiguration(newParentConfig);
            return;
            return;
        }
        }
        mTmpBounds.set(getResolvedOverrideConfiguration().windowConfiguration.getBounds());

        resolveOrganizedOverrideConfiguration(newParentConfig);
        int windowingMode =
                getResolvedOverrideConfiguration().windowConfiguration.getWindowingMode();
        if (windowingMode == WINDOWING_MODE_UNDEFINED) {
        if (windowingMode == WINDOWING_MODE_UNDEFINED) {
            windowingMode = newParentConfig.windowConfiguration.getWindowingMode();
            windowingMode = newParentConfig.windowConfiguration.getWindowingMode();
        }
        }
+1 −2
Original line number Original line Diff line number Diff line
@@ -1415,8 +1415,7 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
        ActivityStack homeTask = getRootHomeTask();
        ActivityStack homeTask = getRootHomeTask();
        if (homeTask == null && mDisplayContent.supportsSystemDecorations()
        if (homeTask == null && mDisplayContent.supportsSystemDecorations()
                && !mDisplayContent.isUntrustedVirtualDisplay()) {
                && !mDisplayContent.isUntrustedVirtualDisplay()) {
            homeTask = createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME,
            homeTask = createStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, false /* onTop */);
                    false /* onTop */);
        }
        }
        return homeTask;
        return homeTask;
    }
    }