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

Commit ce1ef55f authored by Mateusz Cicheński's avatar Mateusz Cicheński
Browse files

Revert "Remove pip resize flicks" DO NOT MERGE

This reverts commit a0253fb4.

Reason for revert: The original CL introduced regressions on QPR3 http://b/276806110 and http://b/277677631, and the bug it fixed was present in prior releases e.g. TQ2A.230405.002 (9662652). This will be fixed for U, hence the "do not merge" at the top of revert.

Change-Id: I4abd2c5b66d837b73f210a85b62ca65bb6aa1f77
parent a0253fb4
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() {
@@ -1265,23 +1247,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,
@@ -1586,7 +1553,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()