diff options
| author | 2024-06-12 06:52:01 +0000 | |
|---|---|---|
| committer | 2024-06-12 06:52:01 +0000 | |
| commit | 7f7d690aecf7d915e97997f61d00fc28fcf3c8ec (patch) | |
| tree | 0dfd609101e65facbc442a0f763e140bc1b97536 | |
| parent | 4ce92c2d27c34d647a4020effe3851ce3e96e077 (diff) | |
| parent | 6ce47cca7b6f86fc2eca3dc32b45cef0b12c90ba (diff) | |
Merge "Make transition ready if display becomes empty" into main
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index d38cd885529a..78a6816593ae 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4033,6 +4033,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (next == null) { mRootWindowContainer.ensureVisibilityAndConfig(null /* starting */, mDisplayContent, true /* deferResume */); + if (mDisplayContent.topRunningActivity() == null) { + // The transition is ready on a display with no running activities. + mTransitionController.setReady(mDisplayContent); + } } if (activityRemoved) { mRootWindowContainer.resumeFocusedTasksTopActivities(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java b/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java index 0f28528c9327..e019a416c069 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java @@ -1235,12 +1235,18 @@ public class RootTaskTests extends WindowTestsBase { assertEquals(STOPPING, activity2.getState()); assertThat(mSupervisor.mStoppingActivities).contains(activity2); + registerTestTransitionPlayer(); + final Transition transition = display.mTransitionController + .requestCloseTransitionIfNeeded(rootTask1); + transition.collectClose(rootTask1); // The display becomes empty. Since there is no next activity to be idle, the activity // should be destroyed immediately with updating configuration to restore original state. final ActivityRecord activity1 = finishTopActivity(rootTask1); assertEquals(DESTROYING, activity1.getState()); verify(mRootWindowContainer).ensureVisibilityAndConfig(eq(null) /* starting */, eq(display), anyBoolean()); + assertTrue("Transition must be ready if there is no next running activity", + transition.allReady()); } private ActivityRecord finishTopActivity(Task task) { |