diff options
| author | 2024-10-31 02:47:22 +0000 | |
|---|---|---|
| committer | 2024-11-01 02:13:06 +0000 | |
| commit | a4c760944bb853e7203f4cc22248d0ec95b6d6a7 (patch) | |
| tree | 019251fe59badd737fd9624136a5e7f3c3ed37bf /libs | |
| parent | 428aef405975f5e07e8e47afaf91823ea3c338a4 (diff) | |
Fix test fail after force trigger predictive back transition.
Add mock for start transition.
Also fix the flicker issue since the original top window will
participant predictive back transition, it will be reparent back
to original position in finish transaction, which can cause flicker
because the finish transaction of second transition is applied
separately from it.
Bug: 376538259
Bug: 372230928
Flag: com.android.window.flags.unify_back_navigation_transition
Test: atest BackNavigationControllerTests
Change-Id: I3a73be6e6e360588ddb263ff1fd85f08cf3347da
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java | 8 |
1 files changed, 8 insertions, 0 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 ae0485f0ad07..dae0142c55d5 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 @@ -29,6 +29,7 @@ import static android.window.TransitionInfo.FLAG_SHOW_WALLPAPER; import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_HOME; import static com.android.window.flags.Flags.migratePredictiveBackTransition; import static com.android.window.flags.Flags.predictiveBackSystemAnims; +import static com.android.window.flags.Flags.unifyBackNavigationTransition; import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BACK_PREVIEW; import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION; @@ -1279,6 +1280,13 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont if (transition == mClosePrepareTransition && aborted) { mClosePrepareTransition = null; applyFinishOpenTransition(); + } else if (!aborted && unifyBackNavigationTransition()) { + // Since the closing target participates in the predictive back transition, the + // merged transition must be applied with the first transition to ensure a seamless + // animation. + if (mFinishOpenTransaction != null && finishTransaction != null) { + mFinishOpenTransaction.merge(finishTransaction); + } } } |