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

Commit 2ab69e97 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Add ability to hide DisplayAreas through WindowOrganizer"

parents cf9d4f54 3cef609e
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -290,6 +290,22 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
        return effects;
    }

    private int applyDisplayAreaChanges(WindowContainer container,
            WindowContainerTransaction.Change c) {
        final int[] effects = new int[1];

        container.forAllTasks(task -> {
            Task tr = (Task) task;
            if ((c.getChangeMask() & WindowContainerTransaction.Change.CHANGE_HIDDEN) != 0) {
                if (tr.setForceHidden(FLAG_FORCE_HIDDEN_FOR_TASK_ORG, c.getHidden())) {
                    effects[0] |= TRANSACT_EFFECTS_LIFECYCLE;
                }
            }
        });

        return effects[0];
    }

    private int sanitizeAndApplyHierarchyOp(WindowContainer container,
            WindowContainerTransaction.HierarchyOp hop) {
        final Task task = container.asTask();
@@ -366,7 +382,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub

        int effects = applyChanges(wc, c);

        if (wc instanceof Task) {
        if (wc instanceof DisplayArea) {
            effects |= applyDisplayAreaChanges(wc, c);
        } else if (wc instanceof Task) {
            effects |= applyTaskChanges(wc.asTask(), c);
        }

+23 −0
Original line number Diff line number Diff line
@@ -1013,4 +1013,27 @@ public class WindowOrganizerTests extends WindowTestsBase {
        assertFalse(w1.useBLASTSync());
        assertFalse(w2.useBLASTSync());
    }

    @Test
    public void testDisplayAreaHiddenTransaction() {
        removeGlobalMinSizeRestriction();

        WindowContainerTransaction trx = new WindowContainerTransaction();

        TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea();

        trx.setHidden(taskDisplayArea.mRemoteToken.toWindowContainerToken(), true);
        mWm.mAtmService.mWindowOrganizerController.applyTransaction(trx);

        taskDisplayArea.forAllTasks(daTask -> {
            assertTrue(daTask.isForceHidden());
        });

        trx.setHidden(taskDisplayArea.mRemoteToken.toWindowContainerToken(), false);
        mWm.mAtmService.mWindowOrganizerController.applyTransaction(trx);

        taskDisplayArea.forAllTasks(daTask -> {
            assertFalse(daTask.isForceHidden());
        });
    }
}