summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java6
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) {