Use Decelerate Interpolator for predictive back to home window scaling

Bug: 311365390
Flag: NONE
Test: Manual, i.e. verifying back to home behaviour on device
Change-Id: Ib26edc13d9573b9c7e23f23b3abe9cd7e19809e7
diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
index ed6f852..227cfba 100644
--- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
+++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
@@ -141,7 +141,8 @@
      * @param handler Handler to the thread to run the animations on.
      */
     public void registerBackCallbacks(Handler handler) {
-        mBackCallback = new OnBackInvokedCallbackStub(handler, mProgressAnimator, this);
+        mBackCallback = new OnBackInvokedCallbackStub(handler, mProgressAnimator,
+                mProgressInterpolator, this);
         SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback,
                 new RemoteAnimationRunnerStub(this));
     }
@@ -149,6 +150,7 @@
     private static class OnBackInvokedCallbackStub extends IOnBackInvokedCallback.Stub {
         private Handler mHandler;
         private BackProgressAnimator mProgressAnimator;
+        private final Interpolator mProgressInterpolator;
         // LauncherBackAnimationController has strong reference to Launcher activity, the binder
         // callback should not hold strong reference to it to avoid memory leak.
         private WeakReference<LauncherBackAnimationController> mControllerRef;
@@ -156,9 +158,11 @@
         private OnBackInvokedCallbackStub(
                 Handler handler,
                 BackProgressAnimator progressAnimator,
+                Interpolator progressInterpolator,
                 LauncherBackAnimationController controller) {
             mHandler = handler;
             mProgressAnimator = progressAnimator;
+            mProgressInterpolator = progressInterpolator;
             mControllerRef = new WeakReference<>(controller);
         }
 
@@ -206,10 +210,8 @@
                     controller.startBack(backEvent);
                     mProgressAnimator.onBackStarted(backEvent, event -> {
                         float backProgress = event.getProgress();
-                        // TODO: Update once the interpolation curve spec is finalized.
                         controller.mBackProgress =
-                                1 - (1 - backProgress) * (1 - backProgress) * (1
-                                        - backProgress);
+                                mProgressInterpolator.getInterpolation(backProgress);
                         controller.updateBackProgress(controller.mBackProgress, event);
                     });
                 }