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

Commit f45c791e authored by wilsonshih's avatar wilsonshih
Browse files

Also track PB transition token in startAnimation

In case other transition handler take the transition request, then when
transition start in BackTransitionHandler, it won't know it should
create close_PB_transition.

Flag: EXEMPT bugfix
Bug: 381380912
Test: atest BackAnimationControllerTest
Change-Id: Idd7ce3028f43363f0f20c77447dbd5c7a535a3ae
parent d17175f6
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1314,7 +1314,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
                }
            }

            if (handlePrepareTransition(info, st, ft, finishCallback)) {
            if (handlePrepareTransition(transition, info, st, ft, finishCallback)) {
                if (checkTakeoverFlags()) {
                    mTakeoverHandler = mTransitions.getHandlerForTakeover(transition, info);
                }
@@ -1630,7 +1630,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
         * happen when core make an activity become visible.
         */
        @VisibleForTesting
        boolean handlePrepareTransition(
        boolean handlePrepareTransition(@NonNull IBinder transition,
                @NonNull TransitionInfo info,
                @NonNull SurfaceControl.Transaction st,
                @NonNull SurfaceControl.Transaction ft,
@@ -1678,6 +1678,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
                }
            }
            st.apply();
            // In case other transition handler took the handleRequest before this class.
            mPrepareOpenTransition = transition;
            mFinishOpenTransaction = ft;
            mFinishOpenTransitionCallback = finishCallback;
            mOpenTransitionInfo = info;
+4 −4
Original line number Diff line number Diff line
@@ -718,7 +718,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
        tInfo = createTransitionInfo(TRANSIT_PREPARE_BACK_NAVIGATION, open);
        callback = mock(Transitions.TransitionFinishCallback.class);
        mBackTransitionHandler.startAnimation(mockBinder, tInfo, st, ft, callback);
        verify(mBackTransitionHandler).handlePrepareTransition(
        verify(mBackTransitionHandler).handlePrepareTransition(eq(mockBinder),
                eq(tInfo), eq(st), eq(ft), eq(callback));
        mBackTransitionHandler.mCloseTransitionRequested = true;
        TransitionInfo tInfo2 = createTransitionInfo(TRANSIT_CLOSE, close);
@@ -750,7 +750,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
                null /* remoteTransition */);
        mBackTransitionHandler.handleRequest(mockBinder, requestInfo);
        mBackTransitionHandler.startAnimation(mockBinder, tInfo, st, ft, callback);
        verify(mBackTransitionHandler).handlePrepareTransition(
        verify(mBackTransitionHandler).handlePrepareTransition(eq(mockBinder),
                eq(tInfo), eq(st), eq(ft), eq(callback));

        mBackTransitionHandler.onAnimationFinished();
@@ -801,7 +801,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
        canHandle = mBackTransitionHandler.startAnimation(mockBinder,
                prepareInfo, st, ft, callback2);
        assertTrue("Handle prepare transition" , canHandle);
        verify(mBackTransitionHandler).handlePrepareTransition(
        verify(mBackTransitionHandler).handlePrepareTransition(eq(mockBinder),
                eq(prepareInfo), eq(st), eq(ft), eq(callback2));
        final TransitionInfo closeInfo = createTransitionInfo(TRANSIT_CLOSE, close);
        Transitions.TransitionFinishCallback mergeCallback =
@@ -819,7 +819,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
        canHandle = mBackTransitionHandler.startAnimation(
                mockBinder, prepareInfo, st, ft, callback3);
        assertTrue("Handle prepare transition" , canHandle);
        verify(mBackTransitionHandler).handlePrepareTransition(
        verify(mBackTransitionHandler).handlePrepareTransition(eq(mockBinder),
                eq(prepareInfo), eq(st), eq(ft), eq(callback3));
        final TransitionInfo.Change open2 = createAppChange(
                openTaskId2, TRANSIT_OPEN, FLAG_MOVED_TO_TOP);