summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2024-10-28 01:38:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-28 01:38:04 +0000
commit6bfa620db92fd50de683fbbcf2dc0de929eda2e4 (patch)
treef2667d4f86f955e2be14f998aae4299708d070d7
parentd3e0fbc2dba87e36790197f859906ea6ee5bcc66 (diff)
parentec4f83ae26810db5d92331e70279c5df76aa9750 (diff)
Merge "Collect transition participant when moving to a different display" into main
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TransitionTests.java5
3 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 25dfbd77642d..af7b8d645a65 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1792,8 +1792,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
prevDc.onRunningActivityChanged();
- // TODO(b/169035022): move to a more-appropriate place.
- mTransitionController.collect(this);
if (prevDc.mOpeningApps.remove(this)) {
// Transfer opening transition to new display.
mDisplayContent.mOpeningApps.add(this);
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 95cf6bc3b771..6c92ae6bb3e7 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -1117,6 +1117,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
*/
void onDisplayChanged(DisplayContent dc) {
if (mDisplayContent != null && mDisplayContent != dc) {
+ mTransitionController.collect(this);
// Cancel any change transition queued-up for this container on the old display when
// this container is moved from the old display.
mDisplayContent.mClosingChangingContainers.remove(this);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
index 7196acc8ec2e..e8779c2b9ead 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
@@ -2354,6 +2354,11 @@ public class TransitionTests extends WindowTestsBase {
// ChangeInfo#mCommonAncestor should be set after reparent.
final Transition.ChangeInfo change = transition.mChanges.get(activity);
assertEquals(newParent.getDisplayArea(), change.mCommonAncestor);
+
+ // WindowContainer#onDisplayChanged should collect the moved task.
+ final DisplayContent newDisplay = createNewDisplay();
+ newParent.reparent(newDisplay.getDefaultTaskDisplayArea(), true /* onTop */);
+ assertTrue(transition.mParticipants.contains(newParent));
}
@Test