Revert "Revert "Correct ⭕ ⛶  🕳️ 👊👊👊👊👊👊""

This reverts commit 33226ec0e183b1162d18c0e02543db0fa31bcf45.

Reason for revert: Most test devices have the platform changes

Change-Id: Ic3f1c144537d127c690c7949f7144dedf0611c49
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index d78ba9c..16f5fa1 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -553,7 +553,8 @@
                 public void finish() { }
 
                 @Override
-                public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect) { }
+                public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+                        float cornerRadius) { }
             };
         }
 
@@ -631,7 +632,8 @@
 
         void finish();
 
-        void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect);
+        void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+                float cornerRadius);
     }
 
     interface ActivityInitListener {
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f4b2feb..78a2055 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -601,7 +601,8 @@
     private void updateFinalShiftUi() {
         if (mRecentsAnimationWrapper.getController() != null && mLayoutListener != null) {
             mLayoutListener.update(mCurrentShift.value > 1, mUiLongSwipeMode,
-                    mClipAnimationHelper.getCurrentRectWithInsets());
+                    mClipAnimationHelper.getCurrentRectWithInsets(),
+                    mClipAnimationHelper.getCurrentCornerRadius());
         }
 
         final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
diff --git a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
index f254244..8c9cead 100644
--- a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
+++ b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
@@ -88,6 +88,8 @@
     // Corner radius of windows when they're in overview mode.
     private final float mTaskCornerRadius;
 
+    // Corner radius currently applied to transformed window.
+    private float mCurrentCornerRadius;
     private float mTargetScale = 1f;
     private float mOffsetScale = 1f;
     private Interpolator mInterpolator = LINEAR;
@@ -179,14 +181,15 @@
             float alpha = 1f;
             int layer;
             float cornerRadius = 0f;
+            float scale = currentRect.width() / crop.width();
             if (app.mode == targetSet.targetMode) {
                 if (app.activityType != RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
                     mTmpMatrix.setRectToRect(mSourceRect, currentRect, ScaleToFit.FILL);
                     mTmpMatrix.postTranslate(app.position.x, app.position.y);
                     mClipRectF.roundOut(crop);
-                    float scale = crop.width() / currentRect.width();
                     cornerRadius = Utilities.mapRange(progress, mWindowCornerRadius,
-                            mTaskCornerRadius * scale);
+                            mTaskCornerRadius);
+                    mCurrentCornerRadius = cornerRadius;
                 }
 
                 if (app.isNotInRecents
@@ -200,7 +203,11 @@
                 crop = null;
                 layer = Integer.MAX_VALUE;
             }
-            params[i] = new SurfaceParams(app.leash, alpha, mTmpMatrix, crop, layer, cornerRadius);
+
+            // Since radius is in Surface space, but we draw the rounded corners in screen space, we
+            // have to undo the scale.
+            params[i] = new SurfaceParams(app.leash, alpha, mTmpMatrix, crop, layer,
+                    cornerRadius / scale);
         }
         applyParams(syncTransactionApplier, params);
         return currentRect;
@@ -339,4 +346,8 @@
     public RectF getSourceRect() {
         return mSourceRect;
     }
+
+    public float getCurrentCornerRadius() {
+        return mCurrentCornerRadius;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java b/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
index c12a579..8ec5361 100644
--- a/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
+++ b/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
@@ -43,6 +43,7 @@
     private final Paint mPaint = new Paint();
     private WindowTransformSwipeHandler mHandler;
     private RectF mCurrentRect;
+    private float mCornerRadius;
 
     public LauncherLayoutListener(Launcher launcher) {
         super(launcher, null);
@@ -52,13 +53,15 @@
     }
 
     @Override
-    public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect) {
+    public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+            float cornerRadius) {
         if (shouldFinish) {
             finish();
             return;
         }
 
         mCurrentRect = currentRect;
+        mCornerRadius = cornerRadius;
 
         setWillNotDraw(mCurrentRect == null || isLongSwipe);
         invalidate();
@@ -121,6 +124,6 @@
 
     @Override
     protected void onDraw(Canvas canvas) {
-        canvas.drawRect(mCurrentRect, mPaint);
+        canvas.drawRoundRect(mCurrentRect, mCornerRadius, mCornerRadius, mPaint);
     }
 }