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

Commit acb3987a authored by Shawn Lin's avatar Shawn Lin Committed by Automerger Merge Worker
Browse files

Merge "Support nav fade anim for the case of swiping left/right to a new task"...

Merge "Support nav fade anim for the case of swiping left/right to a new task" into sc-dev am: 33f631ad am: ebdb47c1 am: 93b36475

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14495880

Change-Id: I86f02bf85e9ae9f2e3d8aa9263ab6fa03f377f3d
parents 5628c01e 93b36475
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -151,6 +151,8 @@ public class RecentsAnimationController implements DeathRecipient {
    // Whether to take a screenshot when handling a deferred cancel
    private boolean mCancelDeferredWithScreenshot;

    @VisibleForTesting
    boolean mIsAddingTaskToTargets;
    @VisibleForTesting
    boolean mShouldAttachNavBarToAppDuringTransition;
    private boolean mNavigationBarAttachedToApp;
@@ -375,7 +377,8 @@ public class RecentsAnimationController implements DeathRecipient {
            final long token = Binder.clearCallingIdentity();
            try {
                synchronized (mService.getWindowManagerLock()) {
                    restoreNavigationBarFromApp(moveHomeToTop);
                    restoreNavigationBarFromApp(
                            moveHomeToTop || mIsAddingTaskToTargets /* animate */);
                    mService.mWindowPlacerLocked.requestTraversal();
                }
            } finally {
@@ -685,6 +688,7 @@ public class RecentsAnimationController implements DeathRecipient {

    void addTaskToTargets(Task task, OnAnimationFinishedCallback finishedCallback) {
        if (mRunner != null) {
            mIsAddingTaskToTargets = task != null;
            // No need to send task appeared when the task target already exists, or when the
            // task is being managed as a multi-window mode outside of recents (e.g. bubbles).
            if (isAnimatingTask(task) || skipAnimation(task)) {
@@ -901,7 +905,8 @@ public class RecentsAnimationController implements DeathRecipient {
            removeWallpaperAnimation(wallpaperAdapter);
        }

        restoreNavigationBarFromApp(reorderMode == REORDER_MOVE_TO_TOP);
        restoreNavigationBarFromApp(
                reorderMode == REORDER_MOVE_TO_TOP || mIsAddingTaskToTargets /* animate */);

        // Clear any pending failsafe runnables
        mService.mH.removeCallbacks(mFailsafeRunnable);
+25 −0
Original line number Diff line number Diff line
@@ -552,6 +552,31 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
        verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
    }

    @Test
    public void testAddTaskToTargets_expectAnimation() {
        setupForShouldAttachNavBarDuringTransition();
        final ActivityRecord activity = createActivityRecord(mDefaultDisplay);
        final ActivityRecord homeActivity = createHomeActivity();
        initializeRecentsAnimationController(mController, homeActivity);

        final WindowToken navToken = mDefaultDisplay.getDisplayPolicy().getNavigationBar().mToken;
        final SurfaceControl.Transaction transaction = navToken.getPendingTransaction();

        verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                eq(mDefaultDisplay.mDisplayId), eq(false));
        verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
        verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);

        final WindowContainer parent = navToken.getParent();

        mController.addTaskToTargets(createTask(mDefaultDisplay), (type, anim) -> {});
        mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);
        verify(mController).restoreNavigationBarFromApp(eq(true));
        verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                eq(mDefaultDisplay.mDisplayId), eq(true));
        verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
    }

    @Test
    public void testNotAttachNavigationBar_controlledByFadeRotationAnimation() {
        setupForShouldAttachNavBarDuringTransition();