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

Commit 141bac2a authored by Tony Huang's avatar Tony Huang
Browse files

Fix pip surface under divider

Make sure always on top tasks layer is above split divider layer.

Fix: 194359996
Test: manual
Test: pass exising tests
Test: atest ZOrderingTests
Change-Id: I211a3e1a92f86b0c802d2a9a259026ee2fad0383
parent eaaeb2f6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -236,6 +236,9 @@ public interface WindowManagerPolicyConstants {
     */
    int LAYER_OFFSET_THUMBNAIL = WINDOW_LAYER_MULTIPLIER - 1;

    // TODO(b/207185041): Remove this divider workaround after we full remove leagacy split and
    //                    make app pair split only have single root then we can just attach the
    //                    divider to the single root task in shell.
    int SPLIT_DIVIDER_LAYER = TYPE_LAYER_MULTIPLIER * 3;
    int WATERMARK_LAYER = TYPE_LAYER_MULTIPLIER * 100;
    int STRICT_MODE_LAYER = TYPE_LAYER_MULTIPLIER * 101;
+4 −0
Original line number Diff line number Diff line
@@ -867,6 +867,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
        // Place root home tasks to the bottom.
        layer = adjustRootTaskLayer(t, mTmpHomeChildren, layer);
        layer = adjustRootTaskLayer(t, mTmpNormalChildren, layer);
        // TODO(b/207185041): Remove this divider workaround after we full remove leagacy split and
        //                    make app pair split only have single root then we can just attach the
        //                    divider to the single root task in shell.
        layer = Math.max(layer, SPLIT_DIVIDER_LAYER + 1);
        adjustRootTaskLayer(t, mTmpAlwaysOnTopChildren, layer);
        t.setLayer(mSplitScreenDividerAnchor, SPLIT_DIVIDER_LAYER);
    }
+33 −2
Original line number Diff line number Diff line
@@ -501,8 +501,6 @@ public class ZOrderingTests extends WindowTestsBase {
        mDisplayContent.assignChildLayers(mTransaction);

        assertWindowHigher(splitWindow1, belowTaskWindow);
        assertWindowHigher(splitWindow1, belowTaskWindow);
        assertWindowHigher(splitWindow2, belowTaskWindow);
        assertWindowHigher(splitWindow2, belowTaskWindow);
        assertWindowHigher(mDockedDividerWindow, splitWindow1);
        assertWindowHigher(mDockedDividerWindow, splitWindow2);
@@ -510,6 +508,39 @@ public class ZOrderingTests extends WindowTestsBase {
        assertWindowHigher(pinnedWindow, aboveTaskWindow);
    }


    @Test
    public void testDockedDividerPosition_noAboveTask() {
        final Task pinnedTask =
                createTask(mDisplayContent, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD);
        final WindowState pinnedWindow =
                createAppWindow(pinnedTask, ACTIVITY_TYPE_STANDARD, "pinnedWindow");

        final Task belowTask =
                createTask(mDisplayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
        final WindowState belowTaskWindow =
                createAppWindow(belowTask, ACTIVITY_TYPE_STANDARD, "belowTaskWindow");

        final Task splitScreenTask1 =
                createTask(mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD);
        final WindowState splitWindow1 =
                createAppWindow(splitScreenTask1, ACTIVITY_TYPE_STANDARD, "splitWindow1");
        final Task splitScreenTask2 =
                createTask(mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD);
        final WindowState splitWindow2 =
                createAppWindow(splitScreenTask2, ACTIVITY_TYPE_STANDARD, "splitWindow2");
        splitScreenTask1.setAdjacentTaskFragment(splitScreenTask2);
        splitScreenTask2.setAdjacentTaskFragment(splitScreenTask1);

        mDisplayContent.assignChildLayers(mTransaction);

        assertWindowHigher(splitWindow1, belowTaskWindow);
        assertWindowHigher(splitWindow2, belowTaskWindow);
        assertWindowHigher(mDockedDividerWindow, splitWindow1);
        assertWindowHigher(mDockedDividerWindow, splitWindow2);
        assertWindowHigher(pinnedWindow, mDockedDividerWindow);
    }

    @Test
    public void testAttachNavBarWhenEnteringRecents_expectNavBarHigherThanIme() {
        // create RecentsAnimationController