Loading services/core/java/com/android/server/wm/DisplayContent.java +2 −1 Original line number Diff line number Diff line Loading @@ -5467,7 +5467,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return; } if (animatingRecents != null && animatingRecents == mFixedRotationLaunchingApp) { if (animatingRecents != null && animatingRecents == mFixedRotationLaunchingApp && animatingRecents.isVisible()) { // The recents activity should be going to be invisible (switch to another app or // return to original top). Only clear the top launching record without finishing // the transform immediately because it won't affect display orientation. And before Loading services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,21 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { // The rotation transform should be cleared after updating orientation with display. assertFalse(activity.hasFixedRotationTransform()); assertFalse(mDefaultDisplay.hasTopFixedRotationLaunchingApp()); // Simulate swiping up recents (home) in different rotation. final ActivityRecord home = mDefaultDisplay.getDefaultTaskDisplayArea().getHomeActivity(); mDefaultDisplay.setFixedRotationLaunchingApp(home, (mDefaultDisplay.getRotation() + 1) % 4); mController = new RecentsAnimationController(mWm, mMockRunner, mAnimationCallbacks, mDefaultDisplay.getDisplayId()); initializeRecentsAnimationController(mController, home); assertTrue(home.hasFixedRotationTransform()); // Assume recents activity becomes invisible for some reason (e.g. screen off). home.setVisible(false); mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION); // Although there won't be a transition finish callback, the fixed rotation must be cleared. assertFalse(home.hasFixedRotationTransform()); assertFalse(mDefaultDisplay.hasTopFixedRotationLaunchingApp()); } @Test Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +2 −1 Original line number Diff line number Diff line Loading @@ -5467,7 +5467,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return; } if (animatingRecents != null && animatingRecents == mFixedRotationLaunchingApp) { if (animatingRecents != null && animatingRecents == mFixedRotationLaunchingApp && animatingRecents.isVisible()) { // The recents activity should be going to be invisible (switch to another app or // return to original top). Only clear the top launching record without finishing // the transform immediately because it won't affect display orientation. And before Loading
services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,21 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { // The rotation transform should be cleared after updating orientation with display. assertFalse(activity.hasFixedRotationTransform()); assertFalse(mDefaultDisplay.hasTopFixedRotationLaunchingApp()); // Simulate swiping up recents (home) in different rotation. final ActivityRecord home = mDefaultDisplay.getDefaultTaskDisplayArea().getHomeActivity(); mDefaultDisplay.setFixedRotationLaunchingApp(home, (mDefaultDisplay.getRotation() + 1) % 4); mController = new RecentsAnimationController(mWm, mMockRunner, mAnimationCallbacks, mDefaultDisplay.getDisplayId()); initializeRecentsAnimationController(mController, home); assertTrue(home.hasFixedRotationTransform()); // Assume recents activity becomes invisible for some reason (e.g. screen off). home.setVisible(false); mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION); // Although there won't be a transition finish callback, the fixed rotation must be cleared. assertFalse(home.hasFixedRotationTransform()); assertFalse(mDefaultDisplay.hasTopFixedRotationLaunchingApp()); } @Test Loading