Loading services/core/java/com/android/server/wm/ActivityStack.java +3 −6 Original line number Diff line number Diff line Loading @@ -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); if (isLeafTask() && showToCurrentUser()) { getParent().positionChildAt(POSITION_TOP, this, false /*includeParents*/); } }, true /* traverseTopToBottom */); } void minimalResumeActivityLocked(ActivityRecord r) { Loading services/core/java/com/android/server/wm/WindowOrganizerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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... Loading services/tests/wmtests/src/com/android/server/wm/TaskTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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()); } } Loading
services/core/java/com/android/server/wm/ActivityStack.java +3 −6 Original line number Diff line number Diff line Loading @@ -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); if (isLeafTask() && showToCurrentUser()) { getParent().positionChildAt(POSITION_TOP, this, false /*includeParents*/); } }, true /* traverseTopToBottom */); } void minimalResumeActivityLocked(ActivityRecord r) { Loading
services/core/java/com/android/server/wm/WindowOrganizerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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... Loading
services/tests/wmtests/src/com/android/server/wm/TaskTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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()); } }