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

Commit 93b36475 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

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

Change-Id: I038bc71ccf0dfc23cd1bbf3c8dc7a316de13665a
parents 356cb9d2 ebdb47c1
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();