Freeze insets position for shell transition rotation

The insets-freeze should be enabled for all types of shell transition,
e.g. change/open/close. Otherwise if the app changes insets flags and
requests different orientation at the same time, the position of the
insets provider (e.g. navigation bar) will show at a rotated position.

Fixes: 237599512
Test: atest TransitionTests#testDisplayRotationChange

Change-Id: I5723c8082f6c9d658f83c0e5064463870870283f
This commit is contained in:
Riddle Hsu
2022-06-30 17:00:32 +08:00
parent f2ec759eac
commit 2503213450
2 changed files with 2 additions and 1 deletions

View File

@@ -357,7 +357,7 @@ class AsyncRotationController extends FadeAnimationController implements Consume
* or seamless transformation in a rotated display.
*/
boolean shouldFreezeInsetsPosition(WindowState w) {
return mTransitionOp == OP_APP_SWITCH && w.mTransitionController.inTransition()
return mTransitionOp != OP_LEGACY && w.mTransitionController.inTransition()
&& isTargetToken(w.mToken);
}

View File

@@ -683,6 +683,7 @@ public class TransitionTests extends WindowTestsBase {
assertTrue(ime.mToken.inTransition());
assertTrue(task.inTransition());
assertTrue(asyncRotationController.isTargetToken(decorToken));
assertTrue(asyncRotationController.shouldFreezeInsetsPosition(navBar));
screenDecor.setOrientationChanging(false);
// Status bar finishes drawing before the start transaction. Its fade-in animation will be