diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index 5790a1b39493b..9c97674dc3c36 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 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { 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 7dcbedf811c2a..23911e61a68df 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 @@ class RecentTasks { } void removeAllVisibleTasks(int userId) { + Set 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 3392bc43e5686..a1999c9017028 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 @@ public class RecentTasksTest extends ActivityTestsBase { .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