Merge "Disable freeze insets for non blast sync shell transition" into tm-qpr-dev

This commit is contained in:
Riddle Hsu
2022-09-16 14:02:29 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 4 deletions

View File

@@ -357,7 +357,12 @@ class AsyncRotationController extends FadeAnimationController implements Consume
* or seamless transformation in a rotated display. * or seamless transformation in a rotated display.
*/ */
boolean shouldFreezeInsetsPosition(WindowState w) { boolean shouldFreezeInsetsPosition(WindowState w) {
return mTransitionOp != OP_LEGACY && w.mTransitionController.inTransition() if (TransitionController.SYNC_METHOD != BLASTSyncEngine.METHOD_BLAST) {
// Expect a screenshot layer has covered the screen, so it is fine to let client side
// insets animation runner update the position directly.
return false;
}
return mTransitionOp != OP_LEGACY && !mIsStartTransactionCommitted
&& isTargetToken(w.mToken); && isTargetToken(w.mToken);
} }

View File

@@ -729,7 +729,7 @@ public class TransitionTests extends WindowTestsBase {
assertTrue(ime.mToken.inTransition()); assertTrue(ime.mToken.inTransition());
assertTrue(task.inTransition()); assertTrue(task.inTransition());
assertTrue(asyncRotationController.isTargetToken(decorToken)); assertTrue(asyncRotationController.isTargetToken(decorToken));
assertTrue(asyncRotationController.shouldFreezeInsetsPosition(navBar)); assertShouldFreezeInsetsPosition(asyncRotationController, statusBar, true);
screenDecor.setOrientationChanging(false); screenDecor.setOrientationChanging(false);
// Status bar finishes drawing before the start transaction. Its fade-in animation will be // Status bar finishes drawing before the start transaction. Its fade-in animation will be
@@ -744,6 +744,7 @@ public class TransitionTests extends WindowTestsBase {
// The transaction is committed, so fade-in animation for status bar is consumed. // The transaction is committed, so fade-in animation for status bar is consumed.
transactionCommittedListener.onTransactionCommitted(); transactionCommittedListener.onTransactionCommitted();
assertFalse(asyncRotationController.isTargetToken(statusBar.mToken)); assertFalse(asyncRotationController.isTargetToken(statusBar.mToken));
assertShouldFreezeInsetsPosition(asyncRotationController, navBar, false);
// Navigation bar finishes drawing after the start transaction, so its fade-in animation // Navigation bar finishes drawing after the start transaction, so its fade-in animation
// can execute directly. // can execute directly.
@@ -779,7 +780,7 @@ public class TransitionTests extends WindowTestsBase {
final AsyncRotationController asyncRotationController = final AsyncRotationController asyncRotationController =
mDisplayContent.getAsyncRotationController(); mDisplayContent.getAsyncRotationController();
assertNotNull(asyncRotationController); assertNotNull(asyncRotationController);
assertTrue(asyncRotationController.shouldFreezeInsetsPosition(statusBar)); assertShouldFreezeInsetsPosition(asyncRotationController, statusBar, true);
statusBar.setOrientationChanging(true); statusBar.setOrientationChanging(true);
player.startTransition(); player.startTransition();
@@ -825,7 +826,7 @@ public class TransitionTests extends WindowTestsBase {
final AsyncRotationController asyncRotationController = final AsyncRotationController asyncRotationController =
mDisplayContent.getAsyncRotationController(); mDisplayContent.getAsyncRotationController();
assertNotNull(asyncRotationController); assertNotNull(asyncRotationController);
assertTrue(asyncRotationController.shouldFreezeInsetsPosition(statusBar)); assertShouldFreezeInsetsPosition(asyncRotationController, statusBar, true);
assertTrue(app.getTask().inTransition()); assertTrue(app.getTask().inTransition());
player.start(); player.start();
@@ -860,6 +861,15 @@ public class TransitionTests extends WindowTestsBase {
assertNull(mDisplayContent.getAsyncRotationController()); assertNull(mDisplayContent.getAsyncRotationController());
} }
private static void assertShouldFreezeInsetsPosition(AsyncRotationController controller,
WindowState w, boolean freeze) {
if (TransitionController.SYNC_METHOD != BLASTSyncEngine.METHOD_BLAST) {
// Non blast sync should never freeze insets position.
freeze = false;
}
assertEquals(freeze, controller.shouldFreezeInsetsPosition(w));
}
@Test @Test
public void testDeferRotationForTransientLaunch() { public void testDeferRotationForTransientLaunch() {
final TestTransitionPlayer player = registerTestTransitionPlayer(); final TestTransitionPlayer player = registerTestTransitionPlayer();