diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 44049b84de403..982df4bb7f3c1 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3112,7 +3112,8 @@ class Task extends WindowContainer { @Override boolean showToCurrentUser() { - return mForceShowForAllUsers || showForAllUsers() || mWmService.isCurrentProfile(mUserId); + return mForceShowForAllUsers || showForAllUsers() + || mWmService.isCurrentProfile(getTopMostTask().mUserId); } void setForceShowForAllUsers(boolean forceShowForAllUsers) { diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java index f354a04101f56..9fdb9d8f9844a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java @@ -72,6 +72,13 @@ public class TaskStackTests extends WindowTestsBase { stack.positionChildAt(WindowContainer.POSITION_TOP, task2, false /* includingParents */); assertEquals(stack.mChildren.get(0), task2); assertEquals(stack.mChildren.get(1), task1); + + // Non-leaf task should be moved to top regardless of the user id. + createTaskInStack((ActivityStack) task2, 0 /* userId */); + createTaskInStack((ActivityStack) task2, 1 /* userId */); + stack.positionChildAt(WindowContainer.POSITION_TOP, task2, false /* includingParents */); + assertEquals(stack.mChildren.get(0), task1); + assertEquals(stack.mChildren.get(1), task2); } @Test