Loading libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading services/core/java/com/android/server/wm/BackNavigationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -1851,7 +1851,7 @@ class BackNavigationController { tc.requestStartTransition(prepareOpen, null /*startTask */, null /* remoteTransition */, null /* displayChange */); prepareOpen.setReady(makeVisibles.get(0), true); prepareOpen.setReady(mCloseTarget, true); return prepareOpen; } else if (mSnapshot == null) { return setLaunchBehind(visibleOpenActivities); Loading services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.TRANSIT_PREPARE_BACK_NAVIGATION; import static android.window.BackNavigationInfo.typeToString; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; Loading Loading @@ -103,6 +104,13 @@ public class BackNavigationControllerTests extends WindowTestsBase { @Before public void setUp() throws Exception { final TransitionController transitionController = mAtm.getTransitionController(); final Transition fakeTransition = new Transition(TRANSIT_PREPARE_BACK_NAVIGATION, 0 /* flag */, transitionController, transitionController.mSyncEngine); spyOn(transitionController); doReturn(fakeTransition).when(transitionController) .createTransition(anyInt(), anyInt()); final BackNavigationController original = new BackNavigationController(); original.setWindowManager(mWm); mBackNavigationController = Mockito.spy(original); Loading @@ -111,6 +119,7 @@ public class BackNavigationControllerTests extends WindowTestsBase { LocalServices.addService(WindowManagerInternal.class, mWindowManagerInternal); mBackAnimationAdapter = mock(BackAnimationAdapter.class); doReturn(true).when(mBackAnimationAdapter).isAnimatable(anyInt()); Mockito.doNothing().when(mBackNavigationController).startAnimation(); mNavigationMonitor = mock(BackNavigationController.NavigationMonitor.class); mRootHomeTask = initHomeActivity(); } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading
services/core/java/com/android/server/wm/BackNavigationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -1851,7 +1851,7 @@ class BackNavigationController { tc.requestStartTransition(prepareOpen, null /*startTask */, null /* remoteTransition */, null /* displayChange */); prepareOpen.setReady(makeVisibles.get(0), true); prepareOpen.setReady(mCloseTarget, true); return prepareOpen; } else if (mSnapshot == null) { return setLaunchBehind(visibleOpenActivities); Loading
services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.TRANSIT_PREPARE_BACK_NAVIGATION; import static android.window.BackNavigationInfo.typeToString; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; Loading Loading @@ -103,6 +104,13 @@ public class BackNavigationControllerTests extends WindowTestsBase { @Before public void setUp() throws Exception { final TransitionController transitionController = mAtm.getTransitionController(); final Transition fakeTransition = new Transition(TRANSIT_PREPARE_BACK_NAVIGATION, 0 /* flag */, transitionController, transitionController.mSyncEngine); spyOn(transitionController); doReturn(fakeTransition).when(transitionController) .createTransition(anyInt(), anyInt()); final BackNavigationController original = new BackNavigationController(); original.setWindowManager(mWm); mBackNavigationController = Mockito.spy(original); Loading @@ -111,6 +119,7 @@ public class BackNavigationControllerTests extends WindowTestsBase { LocalServices.addService(WindowManagerInternal.class, mWindowManagerInternal); mBackAnimationAdapter = mock(BackAnimationAdapter.class); doReturn(true).when(mBackAnimationAdapter).isAnimatable(anyInt()); Mockito.doNothing().when(mBackNavigationController).startAnimation(); mNavigationMonitor = mock(BackNavigationController.NavigationMonitor.class); mRootHomeTask = initHomeActivity(); } Loading