Merge "Do not reposition leaf tasks from grandparent tasks" into rvc-qpr-dev

This commit is contained in:
TreeHugger Robot
2020-07-23 03:05:22 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 7 deletions

View File

@@ -928,12 +928,9 @@ class ActivityStack extends Task {
mCurrentUser = userId;
super.switchUser(userId);
forAllLeafTasks((t) -> {
if (t.showToCurrentUser() && t != this) {
mChildren.remove(t);
mChildren.add(t);
}
}, true /* traverseTopToBottom */);
if (isLeafTask() && showToCurrentUser()) {
getParent().positionChildAt(POSITION_TOP, this, false /*includeParents*/);
}
}
void minimalResumeActivityLocked(ActivityRecord r) {

View File

@@ -335,7 +335,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
}
}
} else {
throw new RuntimeException("Reparenting leaf Tasks is not supported now.");
throw new RuntimeException("Reparenting leaf Tasks is not supported now. " + task);
}
} else {
// Ugh, of course ActivityStack has its own special reorder logic...

View File

@@ -186,4 +186,19 @@ public class TaskTests extends WindowTestsBase {
assertTrue(r.finishing);
});
}
@Test
public void testSwitchUser() {
final Task rootTask = createTaskStackOnDisplay(mDisplayContent);
final Task childTask = createTaskInStack((ActivityStack) rootTask, 0 /* userId */);
final Task leafTask1 = createTaskInStack((ActivityStack) childTask, 10 /* userId */);
final Task leafTask2 = createTaskInStack((ActivityStack) childTask, 0 /* userId */);
assertEquals(1, rootTask.getChildCount());
assertEquals(leafTask2, childTask.getTopChild());
doReturn(true).when(leafTask1).showToCurrentUser();
rootTask.switchUser(10);
assertEquals(1, rootTask.getChildCount());
assertEquals(leafTask1, childTask.getTopChild());
}
}