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

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

Merge "Do not reparent task or set windowing mode when layout task" into tm-dev am: 97236538

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

Change-Id: I283c0deb291648eb4e3001a336d4a1991538018d
parents 55c1d13b 97236538
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -142,18 +142,6 @@ class LaunchParamsController {
        mService.deferWindowLayout();

        try {
            if (mTmpParams.mPreferredTaskDisplayArea != null
                    && task.getDisplayArea() != mTmpParams.mPreferredTaskDisplayArea) {
                mService.mRootWindowContainer.moveRootTaskToTaskDisplayArea(task.getRootTaskId(),
                        mTmpParams.mPreferredTaskDisplayArea, true /* onTop */);
            }

            if (mTmpParams.hasWindowingMode() && task.isRootTask()
                    && mTmpParams.mWindowingMode != task.getWindowingMode()) {
                task.setWindowingMode(task.getDisplayArea().validateWindowingMode(
                        mTmpParams.mWindowingMode, activity, task));
            }

            if (mTmpParams.mBounds.isEmpty()) {
                return false;
            }
+4 −51
Original line number Diff line number Diff line
@@ -23,9 +23,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.view.Display.INVALID_DISPLAY;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
@@ -278,51 +276,6 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
                eq(source), eq(options), any(), eq(PHASE_BOUNDS), any(), any());
    }

    /**
     * Ensures that {@link LaunchParamsModifier} requests specifying display id during
     * layout are honored.
     */
    @Test
    public void testLayoutTaskPreferredDisplayChange() {
        final LaunchParams params = new LaunchParams();
        final TestDisplayContent display = createNewDisplayContent();
        final TaskDisplayArea preferredTaskDisplayArea = display.getDefaultTaskDisplayArea();
        params.mPreferredTaskDisplayArea = preferredTaskDisplayArea;
        final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params);
        final Task task = new TaskBuilder(mAtm.mTaskSupervisor).build();

        mController.registerModifier(positioner);

        doNothing().when(mRootWindowContainer).moveRootTaskToTaskDisplayArea(anyInt(), any(),
                anyBoolean());
        mController.layoutTask(task, null /* windowLayout */);
        verify(mRootWindowContainer, times(1)).moveRootTaskToTaskDisplayArea(
                eq(task.getRootTaskId()), eq(preferredTaskDisplayArea), anyBoolean());
    }

    /**
     * Ensures that {@link LaunchParamsModifier} requests specifying windowingMode during
     * layout are honored.
     */
    @Test
    public void testLayoutTaskWindowingModeChange() {
        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.mTaskSupervisor).build();

        mController.registerModifier(positioner);

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

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

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

    /**
     * Ensures that {@link LaunchParamsModifier} doesn't alter non-root tasks' windowingMode.
     */
@@ -355,10 +308,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
        final Rect expected = new Rect(10, 20, 30, 40);

        final LaunchParams params = new LaunchParams();
        params.mWindowingMode = WINDOWING_MODE_FREEFORM;
        params.mBounds.set(expected);
        final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params);
        final Task task = new TaskBuilder(mAtm.mTaskSupervisor).build();
        final Task task = new TaskBuilder(mAtm.mTaskSupervisor)
                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();

        mController.registerModifier(positioner);

@@ -380,10 +333,10 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
        final Rect expected = new Rect(10, 20, 30, 40);

        final LaunchParams params = new LaunchParams();
        params.mWindowingMode = WINDOWING_MODE_MULTI_WINDOW;
        params.mBounds.set(expected);
        final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params);
        final Task task = new TaskBuilder(mAtm.mTaskSupervisor).build();
        final Task task = new TaskBuilder(mAtm.mTaskSupervisor)
                .setWindowingMode(WINDOWING_MODE_MULTI_WINDOW).build();

        mController.registerModifier(positioner);

+5 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.app.KeyguardManager.ACTION_CONFIRM_DEVICE_CREDENTIAL_WITH_
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.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
@@ -945,14 +946,16 @@ public class RootWindowContainerTests extends WindowTestsBase {
                mWm, "TDA", FEATURE_VENDOR_FIRST);
        display.addChild(taskDisplayArea, POSITION_BOTTOM);

        // Making sure getting the root task from the preferred TDA
        // Making sure getting the root task from the preferred TDA and the preferred windowing mode
        LaunchParamsController.LaunchParams launchParams =
                new LaunchParamsController.LaunchParams();
        launchParams.mPreferredTaskDisplayArea = taskDisplayArea;
        launchParams.mWindowingMode = WINDOWING_MODE_FREEFORM;
        Task root = mRootWindowContainer.getOrCreateRootTask(null /* r */, null /* options */,
                null /* candidateTask */, null /* sourceTask */, true /* onTop */, launchParams,
                0 /* launchParams */);
        assertEquals(taskDisplayArea, root.getTaskDisplayArea());
        assertEquals(WINDOWING_MODE_FREEFORM, root.getWindowingMode());

        // Making sure still getting the root task from the preferred TDA when passing in a
        // launching activity.
@@ -961,6 +964,7 @@ public class RootWindowContainerTests extends WindowTestsBase {
                null /* candidateTask */, null /* sourceTask */, true /* onTop */, launchParams,
                0 /* launchParams */);
        assertEquals(taskDisplayArea, root.getTaskDisplayArea());
        assertEquals(WINDOWING_MODE_FREEFORM, root.getWindowingMode());
    }

    @Test