summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-07-23 03:05:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-07-23 03:05:22 +0000
commitb842240bae753dfefcfae56a5af0ed96e6e45b83 (patch)
tree379ab8ddbf3e0d0146f1255b5cc3fb20da308eec
parentb3929f1e19e1fe63b20fe93fb7dc3655900ccf2a (diff)
parent05ad942626b230b41d5cf9654ed86d6e436b1f70 (diff)
Merge "Do not reposition leaf tasks from grandparent tasks" into rvc-qpr-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java9
-rw-r--r--services/core/java/com/android/server/wm/WindowOrganizerController.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskTests.java15
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());
+ }
}