Merge "Don't reparent stack created by organizer."

This commit is contained in:
TreeHugger Robot
2020-11-05 04:12:35 +00:00
committed by Android (Google) Code Review
2 changed files with 37 additions and 2 deletions

View File

@@ -1851,8 +1851,12 @@ final class TaskDisplayArea extends DisplayArea<Task> {
.getTopStackInWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) : null;
for (int stackNdx = 0; stackNdx < numStacks; stackNdx++) {
final Task stack = getStackAt(stackNdx);
// Always finish non-standard type stacks.
if (destroyContentOnRemoval || !stack.isActivityTypeStandardOrUndefined()) {
// Always finish non-standard type stacks and stacks created by a organizer.
// TODO: For stacks created by organizer, consider reparenting children tasks if the use
// case arises in the future.
if (destroyContentOnRemoval
|| !stack.isActivityTypeStandardOrUndefined()
|| stack.mCreatedByOrganizer) {
stack.finishAllActivitiesImmediately();
} else {
// Reparent the stack to the root task of secondary-split-screen or display area.

View File

@@ -296,6 +296,37 @@ public class TaskDisplayAreaTests extends WindowTestsBase {
assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_UNSET);
}
@Test
@UseTestDisplay
public void testRemove_reparentToDefault() {
final Task task = createTaskStackOnDisplay(mDisplayContent);
final TaskDisplayArea displayArea = task.getDisplayArea();
displayArea.remove();
assertTrue(displayArea.isRemoved());
assertFalse(displayArea.hasChild());
final RootWindowContainer rootWindowContainer = mWm.mAtmService.mRootWindowContainer;
final TaskDisplayArea defaultTaskDisplayArea =
rootWindowContainer.getDefaultTaskDisplayArea();
assertTrue(defaultTaskDisplayArea.mChildren.contains(task));
}
@Test
@UseTestDisplay
public void testRemove_stackCreatedByOrganizer() {
final Task task = createTaskStackOnDisplay(mDisplayContent);
task.mCreatedByOrganizer = true;
final TaskDisplayArea displayArea = task.getDisplayArea();
displayArea.remove();
assertTrue(displayArea.isRemoved());
assertFalse(displayArea.hasChild());
final RootWindowContainer rootWindowContainer = mWm.mAtmService.mRootWindowContainer;
final TaskDisplayArea defaultTaskDisplayArea =
rootWindowContainer.getDefaultTaskDisplayArea();
assertFalse(defaultTaskDisplayArea.mChildren.contains(task));
}
private void assertGetOrCreateStack(int windowingMode, int activityType, Task candidateTask,
boolean reuseCandidate) {
final TaskDisplayArea taskDisplayArea = candidateTask.getDisplayArea();