Loading services/core/java/com/android/server/wm/WindowOrganizerController.java +19 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); } Loading services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +23 −0 Original line number Diff line number Diff line Loading @@ -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()); }); } } Loading
services/core/java/com/android/server/wm/WindowOrganizerController.java +19 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); } Loading
services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +23 −0 Original line number Diff line number Diff line Loading @@ -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()); }); } }