summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author wilsonshih <wilsonshih@google.com> 2024-12-09 11:27:03 +0000
committer wilsonshih <wilsonshih@google.com> 2024-12-09 11:31:11 +0000
commitf45c791ec77a66e70bec33e194f11c3a6a93f3f4 (patch)
treedea89ef4f59721e2192e4fd813025b9b0d9ffc6e
parentd17175f6670b2454cdadb341a9cb383bfc2ca356 (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
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java6
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java8
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);