diff options
| author | 2024-12-09 11:27:03 +0000 | |
|---|---|---|
| committer | 2024-12-09 11:31:11 +0000 | |
| commit | f45c791ec77a66e70bec33e194f11c3a6a93f3f4 (patch) | |
| tree | dea89ef4f59721e2192e4fd813025b9b0d9ffc6e | |
| parent | d17175f6670b2454cdadb341a9cb383bfc2ca356 (diff) | |
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
2 files changed, 8 insertions, 6 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java index 60a52a808a54..56efdb885512 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java @@ -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; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java index a2afd2c92d3d..47ee7bb20199 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java @@ -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);  |