From 9550f1c9496c1550c09890a4b7dc8cb5976ae4d6 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Thu, 11 Aug 2022 13:26:44 +0800 Subject: Always add cookie for each activity when fill TaskInfo. The LaunchCookie is a token for activity starter to find out where the activity was start, so it should be allowed to add in TaskInfo even when the activity is finishing. Bug: 241070422 Test: Launch an activity which will request finish when receive back key from Launcher, e.g. calendar widget. Verify QuickstepTransitionManager can find the LauncherView so it can play closing to home animation. Test: atest ActivityRecordTests#testTransferLaunchCookieWhenFinishing Change-Id: I0351eb76e9a97b718b490d6151b5434f8ef8a42c --- .../core/java/com/android/server/wm/ActivityTaskSupervisor.java | 6 +++--- .../wmtests/src/com/android/server/wm/ActivityRecordTests.java | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index 8878944e142e..208b001dfd0e 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -2652,12 +2652,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { @Override public void accept(ActivityRecord r) { - if (r.finishing) { - return; - } if (r.mLaunchCookie != null) { mInfo.addLaunchCookie(r.mLaunchCookie); } + if (r.finishing) { + return; + } mInfo.numActivities++; mInfo.baseActivity = r.mActivityComponent; if (mTopRunning == null) { diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 7c46fd61a834..9fedfcef6e33 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -2314,6 +2314,8 @@ public class ActivityRecordTests extends WindowTestsBase { assertEquals(launchCookie, activity2.mLaunchCookie); assertNull(activity1.mLaunchCookie); + activity2.makeFinishingLocked(); + assertTrue(activity1.getTask().getTaskInfo().launchCookies.contains(launchCookie)); } private void verifyProcessInfoUpdate(ActivityRecord activity, State state, -- cgit v1.2.3-59-g8ed1b