Updating pip transition calls with shared lib
Bug: 143965596
Change-Id: I761726ca9666689d4359240b065997e3342eab65
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 132f71a..a1988a1 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -1062,8 +1062,10 @@
mIsSwipingPipToHome = homeAnimFactory.supportSwipePipToHome()
&& runningTaskTarget != null
&& runningTaskTarget.pictureInPictureParams != null
- && runningTaskTarget.pictureInPictureParams.isAutoEnterEnabled()
- && runningTaskTarget.pictureInPictureParams.getSourceRectHint() != null;
+ && TaskInfoCompat.isAutoEnterPipEnabled(
+ runningTaskTarget.pictureInPictureParams)
+ && TaskInfoCompat.getPipSourceRectHint(
+ runningTaskTarget.pictureInPictureParams) != null;
if (mIsSwipingPipToHome) {
mSwipePipToHomeAnimator = getSwipePipToHomeAnimator(
homeAnimFactory, runningTaskTarget);
@@ -1141,7 +1143,8 @@
final ActivityManager.RunningTaskInfo taskInfo = mGestureState.getRunningTask();
final RecentsOrientedState orientationState = mTaskViewSimulator.getOrientationState();
final Rect destinationBounds = SystemUiProxy.INSTANCE.get(mContext)
- .startSwipePipToHome(taskInfo.topActivity, taskInfo.topActivityInfo,
+ .startSwipePipToHome(taskInfo.topActivity,
+ TaskInfoCompat.getTopActivityInfo(taskInfo),
runningTaskTarget.pictureInPictureParams,
orientationState.getRecentsActivityRotation(),
mDp.hotseatBarSizePx);
@@ -1149,8 +1152,8 @@
runningTaskTarget.taskId,
taskInfo.topActivity,
runningTaskTarget.leash.getSurfaceControl(),
- runningTaskTarget.pictureInPictureParams.getSourceRectHint(),
- taskInfo.configuration.windowConfiguration.getBounds(),
+ TaskInfoCompat.getPipSourceRectHint(runningTaskTarget.pictureInPictureParams),
+ TaskInfoCompat.getWindowConfigurationBounds(taskInfo),
destinationBounds);
swipePipToHomeAnimator.addListener(new AnimatorListenerAdapter() {
@Override
diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
index 02b5dfe..87fee79 100644
--- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
@@ -21,13 +21,13 @@
import android.animation.RectEvaluator;
import android.animation.ValueAnimator;
import android.content.ComponentName;
-import android.graphics.Matrix;
import android.graphics.Rect;
-import android.graphics.RectF;
import android.view.SurfaceControl;
import androidx.annotation.NonNull;
+import com.android.systemui.shared.pip.PipSurfaceTransactionHelper;
+
/**
* An {@link Animator} that animates an Activity to PiP (picture-in-picture) window when
* swiping up (in gesture navigation mode). Note that this class is derived from
@@ -44,7 +44,7 @@
private final SurfaceControl mLeash;
private final Rect mStartBounds = new Rect();
private final Rect mDestinationBounds = new Rect();
- private final SurfaceTransactionHelper mSurfaceTransactionHelper;
+ private final PipSurfaceTransactionHelper mSurfaceTransactionHelper;
/** for calculating the transform in {@link #onAnimationUpdate(ValueAnimator)} */
private final RectEvaluator mRectEvaluator = new RectEvaluator(new Rect());
@@ -69,7 +69,7 @@
mLeash = leash;
mStartBounds.set(startBounds);
mDestinationBounds.set(destinationBounds);
- mSurfaceTransactionHelper = new SurfaceTransactionHelper();
+ mSurfaceTransactionHelper = new PipSurfaceTransactionHelper();
mSourceHintRectInsets.set(sourceRectHint.left - startBounds.left,
sourceRectHint.top - startBounds.top,
@@ -95,7 +95,8 @@
mSourceHintRectInsets);
final SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
mSurfaceTransactionHelper.scaleAndCrop(tx, mLeash, mStartBounds, bounds, insets);
- tx.setCornerRadius(mLeash, 0).apply();
+ mSurfaceTransactionHelper.resetCornerRadius(tx, mLeash);
+ tx.apply();
}
public int getTaskId() {
@@ -114,49 +115,8 @@
if (mHasAnimationEnded) return;
final SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
- mSurfaceTransactionHelper.resetScale(tx, mLeash, mDestinationBounds);
- mSurfaceTransactionHelper.crop(tx, mLeash, mDestinationBounds);
- tx.setCornerRadius(mLeash, 0).apply();
+ mSurfaceTransactionHelper.reset(tx, mLeash, mDestinationBounds);
+ tx.apply();
mHasAnimationEnded = true;
}
-
- /**
- * Slim version of {@link com.android.wm.shell.pip.PipSurfaceTransactionHelper}
- */
- private static final class SurfaceTransactionHelper {
- private final Matrix mTmpTransform = new Matrix();
- private final float[] mTmpFloat9 = new float[9];
- private final RectF mTmpSourceRectF = new RectF();
- private final Rect mTmpDestinationRect = new Rect();
-
- private void scaleAndCrop(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect sourceBounds, Rect destinationBounds, Rect insets) {
- mTmpSourceRectF.set(sourceBounds);
- mTmpDestinationRect.set(sourceBounds);
- mTmpDestinationRect.inset(insets);
- // Scale by the shortest edge and offset such that the top/left of the scaled inset
- // source rect aligns with the top/left of the destination bounds
- final float scale = sourceBounds.width() <= sourceBounds.height()
- ? (float) destinationBounds.width() / sourceBounds.width()
- : (float) destinationBounds.height() / sourceBounds.height();
- final float left = destinationBounds.left - insets.left * scale;
- final float top = destinationBounds.top - insets.top * scale;
- mTmpTransform.setScale(scale, scale);
- tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
- .setWindowCrop(leash, mTmpDestinationRect)
- .setPosition(leash, left, top);
- }
-
- private void resetScale(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect destinationBounds) {
- tx.setMatrix(leash, Matrix.IDENTITY_MATRIX, mTmpFloat9)
- .setPosition(leash, destinationBounds.left, destinationBounds.top);
- }
-
- private void crop(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect destinationBounds) {
- tx.setWindowCrop(leash, destinationBounds.width(), destinationBounds.height())
- .setPosition(leash, destinationBounds.left, destinationBounds.top);
- }
- }
}