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

Commit 5679a841 authored by jorgegil@google.com's avatar jorgegil@google.com
Browse files

Allow reentry bounds to be overriden before saving

Allows subclasses to use something other than the
normal bounds as the reentry bounds when re-entering
PIP mode.

Bug: 160799929
Test: atest SystemUITests
Change-Id: I050403ca3a5c2dc44c04cca741ac71bdc4f12b8a
parent e9a117eb
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -356,17 +356,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
    @Override
    public void onPipTransitionStarted(ComponentName activity, int direction) {
        if (isOutPipDirection(direction)) {
            // On phones, the expansion animation that happens on pip tap before restoring
            // to fullscreen makes it so that the bounds received here are the expanded
            // bounds. We want to restore to the unexpanded bounds when re-entering pip,
            // so we save the bounds before expansion (normal) instead of the current
            // bounds.
            mReentryBounds.set(mTouchHandler.getNormalBounds());
            // Apply the snap fraction of the current bounds to the normal bounds.
            final Rect bounds = mPipTaskOrganizer.getLastReportedBounds();
            float snapFraction = mPipBoundsHandler.getSnapFraction(bounds);
            mPipBoundsHandler.applySnapFraction(mReentryBounds, snapFraction);
            // Save reentry bounds (normal non-expand bounds with current position applied).
            // Exiting PIP, save the reentry bounds to restore to when re-entering.
            updateReentryBounds();
            mPipBoundsHandler.onSaveReentryBounds(activity, mReentryBounds);
        }
        // Disable touches while the animation is running
@@ -380,6 +371,23 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
        }
    }

    /**
     * Update the bounds used to save the re-entry size and snap fraction when exiting PIP.
     */
    public void updateReentryBounds() {
        // On phones, the expansion animation that happens on pip tap before restoring
        // to fullscreen makes it so that the last reported bounds are the expanded
        // bounds. We want to restore to the unexpanded bounds when re-entering pip,
        // so we use the bounds before expansion (normal) instead of the reported
        // bounds.
        Rect reentryBounds = mTouchHandler.getNormalBounds();
        // Apply the snap fraction of the current bounds to the normal bounds.
        final Rect bounds = mPipTaskOrganizer.getLastReportedBounds();
        float snapFraction = mPipBoundsHandler.getSnapFraction(bounds);
        mPipBoundsHandler.applySnapFraction(reentryBounds, snapFraction);
        mReentryBounds.set(reentryBounds);
    }

    @Override
    public void onPipTransitionFinished(ComponentName activity, int direction) {
        onPipTransitionFinishedOrCanceled(direction);