diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 12 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index f8086615b7d1..4dd950ba6ee9 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -2908,6 +2908,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp && !mDisplayRotation.isRotatingSeamlessly()) { clearFixedRotationLaunchingApp(); } + // If there won't be a transition to notify the launch is done, then it should be ready to + // update with display orientation. E.g. a translucent activity enters pip from a task which + // contains another opaque activity. + if (mFixedRotationLaunchingApp != null && mFixedRotationLaunchingApp.isVisible() + && !mTransitionController.isCollecting() + && !mAtmService.mBackNavigationController.isMonitoringFinishTransition()) { + final Transition finishTransition = mTransitionController.mFinishingTransition; + if (finishTransition == null || !finishTransition.mParticipants.contains( + mFixedRotationLaunchingApp)) { + continueUpdateOrientationForDiffOrienLaunchingApp(); + } + } } /** diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index a0a6622f4240..57aacd36b16b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -1877,6 +1877,11 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals("Display must be portrait after closing the translucent activity", Configuration.ORIENTATION_PORTRAIT, mDisplayContent.getConfiguration().orientation); + + mDisplayContent.setFixedRotationLaunchingAppUnchecked(nonTopVisible); + mDisplayContent.onTransitionFinished(); + assertFalse("Complete fixed rotation if not in a transition", + mDisplayContent.hasTopFixedRotationLaunchingApp()); } @Test |