Merge "Add ability to hide DisplayAreas through WindowOrganizer"

This commit is contained in:
Chavi Weingarten
2020-06-26 01:04:03 +00:00
committed by Android (Google) Code Review
2 changed files with 42 additions and 1 deletions

View File

@@ -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);
}

View File

@@ -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());
});
}
}