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

Commit aab9321b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix some places that inadvertently removed split root tasks"

parents 3988cce3 5ae76b1c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -144,11 +144,11 @@ class LaunchParamsController {
                        mTmpParams.mPreferredTaskDisplayArea, true /* onTop */);
            }

            if (mTmpParams.hasWindowingMode()
                    && mTmpParams.mWindowingMode != task.getRootTask().getWindowingMode()) {
            if (mTmpParams.hasWindowingMode() && task.isRootTask()
                    && mTmpParams.mWindowingMode != task.getWindowingMode()) {
                final int activityType = activity != null
                        ? activity.getActivityType() : task.getActivityType();
                task.getRootTask().setWindowingMode(task.getDisplayArea().validateWindowingMode(
                task.setWindowingMode(task.getDisplayArea().validateWindowingMode(
                        mTmpParams.mWindowingMode, activity, task, activityType));
            }

+3 −4
Original line number Diff line number Diff line
@@ -1305,10 +1305,9 @@ final class TaskDisplayArea extends DisplayArea<Task> {
            final int windowingMode = windowingModes[j];
            for (int i = getStackCount() - 1; i >= 0; --i) {
                final Task stack = getStackAt(i);
                if (!stack.isActivityTypeStandardOrUndefined()) {
                    continue;
                }
                if (stack.getWindowingMode() != windowingMode) {
                if (stack.mCreatedByOrganizer
                        || !stack.isActivityTypeStandardOrUndefined()
                        || stack.getWindowingMode() != windowingMode) {
                    continue;
                }
                stacks.add(stack);
+24 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
import static android.view.Display.INVALID_DISPLAY;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
@@ -318,6 +319,29 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
        assertEquals(windowingMode, afterWindowMode);
    }

    /**
     * Ensures that {@link LaunchParamsModifier} doesn't alter non-root tasks' windowingMode.
     */
    @Test
    public void testLayoutNonRootTaskWindowingModeChange() {
        final LaunchParams params = new LaunchParams();
        final int windowingMode = WINDOWING_MODE_FREEFORM;
        params.mWindowingMode = windowingMode;
        final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params);
        final Task task = new TaskBuilder(mAtm.mStackSupervisor).setCreateParentTask(true).build();
        task.getRootTask().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);

        mController.registerModifier(positioner);

        final int beforeWindowMode = task.getWindowingMode();
        assertNotEquals(windowingMode, beforeWindowMode);

        mController.layoutTask(task, null /* windowLayout */);

        final int afterWindowMode = task.getWindowingMode();
        assertEquals(afterWindowMode, beforeWindowMode);
    }

    /**
     * Ensures that {@link LaunchParamsModifier} requests specifying bounds during
     * layout are honored if window is in freeform.