Revert "Remove pip resize flicks" DO NOT MERGE
This reverts commit a0253fb493.
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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user