Merge "Ensure that we are removing recent tasks for a user including their profiles" into qt-dev
am: 3da53d5297

Change-Id: Ic7f6dec9e169b061610cb0291eb46b6a057bbd9a
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