diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TransitionController.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TransitionTests.java | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index 708d63e27ec2..0ca1852a57da 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -496,6 +496,9 @@ class TransitionController { if (mCollectingTransition != null && mCollectingTransition.isInTransientHide(task)) { return true; } + for (int i = mWaitingTransitions.size() - 1; i >= 0; --i) { + if (mWaitingTransitions.get(i).isInTransientHide(task)) return true; + } for (int i = mPlayingTransitions.size() - 1; i >= 0; --i) { if (mPlayingTransitions.get(i).isInTransientHide(task)) return true; } @@ -506,6 +509,9 @@ class TransitionController { if (mCollectingTransition != null && mCollectingTransition.isTransientVisible(task)) { return true; } + for (int i = mWaitingTransitions.size() - 1; i >= 0; --i) { + if (mWaitingTransitions.get(i).isTransientVisible(task)) return true; + } for (int i = mPlayingTransitions.size() - 1; i >= 0; --i) { if (mPlayingTransitions.get(i).isTransientVisible(task)) return true; } 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 51df1d4cb14d..7d8eb90ea79c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -1602,6 +1602,33 @@ public class TransitionTests extends WindowTestsBase { } @Test + public void testTransientWithParallelLaunch() { + final Task recentTask = mDisplayContent.getDefaultTaskDisplayArea().getRootHomeTask(); + final ActivityRecord recent = new ActivityBuilder(mAtm).setTask(recentTask) + .setVisible(false).build(); + final ActivityRecord app = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final Task appTask = app.getTask(); + registerTestTransitionPlayer(); + final TransitionController controller = mRootWindowContainer.mTransitionController; + final Transition transition = createTestTransition(TRANSIT_OPEN, controller); + transition.mParallelCollectType = Transition.PARALLEL_TYPE_RECENTS; + controller.moveToCollecting(transition); + transition.collect(recentTask); + transition.collect(appTask); + transition.setTransientLaunch(recent, appTask); + recentTask.moveToFront("move-recent-to-front"); + transition.setAllReady(); + transition.start(); + // Assume that the app starts another activity in its task. + final Transition newTransition = controller.createAndStartCollecting(TRANSIT_OPEN); + + assertEquals(newTransition, controller.getCollectingTransition()); + assertTrue(controller.mWaitingTransitions.contains(transition)); + assertTrue(controller.isTransientHide(appTask)); + assertTrue(controller.isTransientVisible(appTask)); + } + + @Test public void testNotReadyPushPop() { final TransitionController controller = new TestTransitionController(mAtm); controller.setSyncEngine(mWm.mSyncEngine); |