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

Commit 052ffcf8 authored by Mateusz Cicheński's avatar Mateusz Cicheński Committed by Android (Google) Code Review
Browse files

Merge "Revert "Remove pip resize flicks" DO NOT MERGE" into tm-qpr-dev

parents 27f7b26e ce1ef55f
Loading
Loading
Loading
Loading
+1 −34
Original line number Diff line number Diff line
@@ -73,7 +73,6 @@ import android.window.TaskOrganizer;
import android.window.TaskSnapshot;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransactionCallback;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.common.ProtoLog;
@@ -145,23 +144,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
    protected final ShellTaskOrganizer mTaskOrganizer;
    protected final ShellExecutor mMainExecutor;

    // the runnable to execute after WindowContainerTransactions is applied to finish resizing pip
    private Runnable mPipFinishResizeWCTRunnable;

    private final WindowContainerTransactionCallback mPipFinishResizeWCTCallback =
            new WindowContainerTransactionCallback() {
        @Override
        public void onTransactionReady(int id, SurfaceControl.Transaction t) {
            t.apply();

            // execute the runnable if non-null after WCT is applied to finish resizing pip
            if (mPipFinishResizeWCTRunnable != null) {
                mPipFinishResizeWCTRunnable.run();
                mPipFinishResizeWCTRunnable = null;
            }
        }
    };

    // These callbacks are called on the update thread
    private final PipAnimationController.PipAnimationCallback mPipAnimationCallback =
            new PipAnimationController.PipAnimationCallback() {
@@ -1278,23 +1260,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
    /**
     * Animates resizing of the pinned stack given the duration and start bounds.
     * This is used when the starting bounds is not the current PiP bounds.
     *
     * @param pipFinishResizeWCTRunnable callback to run after window updates are complete
     */
    public void scheduleAnimateResizePip(Rect fromBounds, Rect toBounds, int duration,
            float startingAngle, Consumer<Rect> updateBoundsCallback,
            Runnable pipFinishResizeWCTRunnable) {
        mPipFinishResizeWCTRunnable = pipFinishResizeWCTRunnable;
        if (mPipFinishResizeWCTRunnable != null) {
            ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
                    "mPipFinishResizeWCTRunnable is set to be called once window updates");
        }

        scheduleAnimateResizePip(fromBounds, toBounds, duration, startingAngle,
                updateBoundsCallback);
    }

    private void scheduleAnimateResizePip(Rect fromBounds, Rect toBounds, int duration,
            float startingAngle, Consumer<Rect> updateBoundsCallback) {
        if (mWaitForFixedRotation) {
            ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
@@ -1599,7 +1566,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
            mSplitScreenOptional.ifPresent(splitScreenController ->
                    splitScreenController.enterSplitScreen(mTaskInfo.taskId, wasPipTopLeft, wct));
        } else {
            mTaskOrganizer.applySyncTransaction(wct, mPipFinishResizeWCTCallback);
            mTaskOrganizer.applyTransaction(wct);
        }
    }

+1 −9
Original line number Diff line number Diff line
@@ -580,16 +580,8 @@ public class PipResizeGestureHandler {
                final float snapFraction = mPipBoundsAlgorithm.getSnapFraction(
                        mLastResizeBounds, movementBounds);
                mPipBoundsAlgorithm.applySnapFraction(mLastResizeBounds, snapFraction);

                // disable the pinch resizing until the final bounds are updated
                final boolean prevEnablePinchResize = mEnablePinchResize;
                mEnablePinchResize = false;

                mPipTaskOrganizer.scheduleAnimateResizePip(startBounds, mLastResizeBounds,
                        PINCH_RESIZE_SNAP_DURATION, mAngle, mUpdateResizeBoundsCallback, () -> {
                            // reset the pinch resizing to its default state
                            mEnablePinchResize = prevEnablePinchResize;
                        });
                        PINCH_RESIZE_SNAP_DURATION, mAngle, mUpdateResizeBoundsCallback);
            } else {
                mPipTaskOrganizer.scheduleFinishResizePip(mLastResizeBounds,
                        PipAnimationController.TRANSITION_DIRECTION_USER_RESIZE,
+2 −2
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ public class PipResizeGestureHandlerTest extends ShellTestCase {
        mPipResizeGestureHandler.onPinchResize(upEvent);

        verify(mPipTaskOrganizer, times(1))
                .scheduleAnimateResizePip(any(), any(), anyInt(), anyFloat(), any(), any());
                .scheduleAnimateResizePip(any(), any(), anyInt(), anyFloat(), any());

        assertTrue("The new size should be bigger than the original PiP size.",
                mPipResizeGestureHandler.getLastResizeBounds().width()
@@ -194,7 +194,7 @@ public class PipResizeGestureHandlerTest extends ShellTestCase {
        mPipResizeGestureHandler.onPinchResize(upEvent);

        verify(mPipTaskOrganizer, times(1))
                .scheduleAnimateResizePip(any(), any(), anyInt(), anyFloat(), any(), any());
                .scheduleAnimateResizePip(any(), any(), anyInt(), anyFloat(), any());

        assertTrue("The new size should be smaller than the original PiP size.",
                mPipResizeGestureHandler.getLastResizeBounds().width()