Merge "Ensure that we are removing recent tasks for a user including their profiles" into qt-dev
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 5790a1b..9c97674 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -2717,7 +2717,8 @@
if (activityOptions != null) {
activityType = activityOptions.getLaunchActivityType();
windowingMode = activityOptions.getLaunchWindowingMode();
- if (activityOptions.freezeRecentTasksReordering()) {
+ if (activityOptions.freezeRecentTasksReordering()
+ && mRecentTasks.isCallerRecents(callingUid)) {
mRecentTasks.setFreezeTaskListReordering();
}
}
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index 7dcbedf..23911e6 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -653,9 +653,11 @@
}
void removeAllVisibleTasks(int userId) {
+ Set<Integer> profileIds = getProfileIds(userId);
for (int i = mTasks.size() - 1; i >= 0; --i) {
final TaskRecord tr = mTasks.get(i);
- if (tr.userId == userId && isVisibleRecentTask(tr)) {
+ if (!profileIds.contains(tr.userId)) continue;
+ if (isVisibleRecentTask(tr)) {
mTasks.remove(i);
notifyTaskRemoved(tr, true /* wasTrimmed */, true /* killProcess */);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
index 3392bc4..a1999c90 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
@@ -860,14 +860,19 @@
.build();
mRecentTasks.add(t1);
- TaskRecord t2 = createTaskBuilder(".Task1")
- .setUserId(TEST_USER_1_ID)
+ TaskRecord t2 = createTaskBuilder(".Task2")
+ .setUserId(TEST_QUIET_USER_ID)
.build();
mRecentTasks.add(t2);
+ TaskRecord t3 = createTaskBuilder(".Task3")
+ .setUserId(TEST_USER_1_ID)
+ .build();
+ mRecentTasks.add(t3);
+
// Remove all the visible tasks and ensure that they are removed
mRecentTasks.removeAllVisibleTasks(TEST_USER_0_ID);
- assertTrimmed(t1);
+ assertTrimmed(t1, t2);
}
@Test