diff options
| author | 2020-07-23 03:05:22 +0000 | |
|---|---|---|
| committer | 2020-07-23 03:05:22 +0000 | |
| commit | b842240bae753dfefcfae56a5af0ed96e6e45b83 (patch) | |
| tree | 379ab8ddbf3e0d0146f1255b5cc3fb20da308eec | |
| parent | b3929f1e19e1fe63b20fe93fb7dc3655900ccf2a (diff) | |
| parent | 05ad942626b230b41d5cf9654ed86d6e436b1f70 (diff) | |
Merge "Do not reposition leaf tasks from grandparent tasks" into rvc-qpr-dev
3 files changed, 19 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index e9768a26f571..cf1d59ff2fe4 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -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) { diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 930bfded39a4..21a76ff763a8 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -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... diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 9d88ada5a90c..9feb83fde4fa 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -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()); + } } |