From 4c770bf2c6c4a85cb470e12633e402038359df22 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Sat, 7 Jan 2023 16:21:48 +0000 Subject: [PATCH] Update recent tasks order when the last resumed activity changed Ensure to update recent tasks order when the last resumed activity chagned to cover cases like dismissing the focused side of split screen to the background. Fix: 259648295 Test: atest ActivityTaskSupervisorTests Change-Id: I9a18c35da40f13163977da47eac5c12605afabdf --- .../server/wm/ActivityTaskManagerService.java | 1 + .../server/wm/ActivityTaskSupervisorTests.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 1ba7e687a5537..861961599ada8 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -4715,6 +4715,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mTaskChangeNotificationController.notifyTaskFocusChanged(prevTask.mTaskId, false); } mTaskChangeNotificationController.notifyTaskFocusChanged(task.mTaskId, true); + mTaskSupervisor.mRecentTasks.add(task); } applyUpdateLockStateLocked(r); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java index eed32d7d815c3..bb20244aee914 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java @@ -248,6 +248,19 @@ public class ActivityTaskSupervisorTests extends WindowTestsBase { eq(true) /* focused */); } + /** + * Ensures it updates recent tasks order when the last resumed activity changed. + */ + @Test + public void testUpdateRecentTasksForTopResumed() { + spyOn(mSupervisor.mRecentTasks); + final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final Task task = activity.getTask(); + + mAtm.setLastResumedActivityUncheckLocked(activity, "test"); + verify(mSupervisor.mRecentTasks).add(eq(task)); + } + /** * Ensures that a trusted display can launch arbitrary activity and an untrusted display can't. */