Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 730bb132 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Make test transition ready by sync engine

If Transition's onTransactionReady is invoked directly, it won't
remove the sync set from BLASTSyncEngine#mActiveSyncs. Then if
timeout happens on a finished sync set, it won't be skipped that
leads to throw exception "Trying to move non-collecting transition".

This makes the tests closer to real process.

Fix: 397533893
Flag: EXEMPT TEST_ONLY
Test: atest DisplayContentTests#testRespectNonTopVisibleFixedOrientation
            TransitionTests
Change-Id: I3cf2bba1c08d2807d1d13fca6f9ac536a718dd54
parent 80f15bd5
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -683,7 +683,7 @@ public class TransitionTests extends WindowTestsBase {
        app.onStartingWindowDrawn();
        // The task appeared event should be deferred until transition ready.
        assertFalse(task.taskAppearedReady());
        testPlayer.onTransactionReady(app.getSyncTransaction());
        testPlayer.onTransactionReady();
        assertTrue(task.taskAppearedReady());
        assertTrue(playerProc.isRunningRemoteTransition());
        assertTrue(controller.mRemotePlayer.reportRunning(delegateProc.getThread()));
@@ -1162,7 +1162,8 @@ public class TransitionTests extends WindowTestsBase {
        screenDecor.updateSurfacePosition(mMockT);
        assertEquals(prevPos, screenDecor.mLastSurfacePosition);

        final SurfaceControl.Transaction startTransaction = mock(SurfaceControl.Transaction.class);
        final SurfaceControl.Transaction startTransaction = mTransaction;
        clearInvocations(startTransaction);
        final SurfaceControl.TransactionCommittedListener transactionCommittedListener =
                onRotationTransactionReady(player, startTransaction);

@@ -1213,7 +1214,8 @@ public class TransitionTests extends WindowTestsBase {
        assertFalse(statusBar.mToken.inTransition());
        assertTrue(app.getTask().inTransition());

        final SurfaceControl.Transaction startTransaction = mock(SurfaceControl.Transaction.class);
        final SurfaceControl.Transaction startTransaction = mTransaction;
        clearInvocations(startTransaction);
        final SurfaceControl leash = statusBar.mToken.getAnimationLeash();
        doReturn(true).when(leash).isValid();
        final SurfaceControl.TransactionCommittedListener transactionCommittedListener =
@@ -1287,7 +1289,8 @@ public class TransitionTests extends WindowTestsBase {
        // Avoid DeviceStateController disturbing the test by triggering another rotation change.
        doReturn(false).when(mDisplayContent).updateRotationUnchecked();

        onRotationTransactionReady(player, mWm.mTransactionFactory.get()).onTransactionCommitted();
        clearInvocations(mTransaction);
        onRotationTransactionReady(player, mTransaction).onTransactionCommitted();
        assertEquals(ROTATION_ANIMATION_SEAMLESS, player.mLastReady.getChange(
                mDisplayContent.mRemoteToken.toWindowContainerToken()).getRotationAnimation());
        spyOn(navBarInsetsProvider);
@@ -1350,7 +1353,7 @@ public class TransitionTests extends WindowTestsBase {
        mDisplayContent.setFixedRotationLaunchingAppUnchecked(home);
        doReturn(true).when(home).hasFixedRotationTransform(any());
        player.startTransition();
        player.onTransactionReady(mDisplayContent.getSyncTransaction());
        player.onTransactionReady();

        final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation();
        final RemoteDisplayChangeController displayChangeController = mDisplayContent
@@ -3071,8 +3074,11 @@ public class TransitionTests extends WindowTestsBase {
            TestTransitionPlayer player, SurfaceControl.Transaction startTransaction) {
        final ArgumentCaptor<SurfaceControl.TransactionCommittedListener> listenerCaptor =
                ArgumentCaptor.forClass(SurfaceControl.TransactionCommittedListener.class);
        player.onTransactionReady(startTransaction);
        verify(startTransaction).addTransactionCommittedListener(any(), listenerCaptor.capture());
        player.onTransactionReady();
        // The startTransaction is from mWm.mTransactionFactory.get() in SyncGroup#finishNow.
        // 2 times are from SyncGroup#finishNow and AsyncRotationController#setupStartTransaction.
        verify(startTransaction, times(2)).addTransactionCommittedListener(
                any(), listenerCaptor.capture());
        return listenerCaptor.getValue();
    }
}
+4 −3
Original line number Diff line number Diff line
@@ -2161,13 +2161,14 @@ public class WindowTestsBase extends SystemServiceTestsBase {
            mOrganizer.startTransition(mLastTransit.getToken(), null);
        }

        void onTransactionReady(SurfaceControl.Transaction t) {
            mLastTransit.onTransactionReady(mLastTransit.getSyncId(), t);
        void onTransactionReady() {
            // SyncGroup#finishNow -> Transition#onTransactionReady.
            mController.mSyncEngine.abort(mLastTransit.getSyncId());
        }

        void start() {
            startTransition();
            onTransactionReady(mock(SurfaceControl.Transaction.class));
            onTransactionReady();
        }

        public void finish() {