Merge "Fix broken cuj instrumentation of CUJ_LOCKSCREEN_PIN_DISAPPEAR" into tm-dev
diff --git a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java
index 8a61e4e..fdc2469 100644
--- a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java
+++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java
@@ -16,6 +16,7 @@
 
 package com.android.settingslib.animation;
 
+import android.animation.AnimatorListenerAdapter;
 import android.view.animation.Interpolator;
 
 /**
@@ -23,7 +24,17 @@
  * {@link AppearAnimationUtils}
  */
 public interface AppearAnimationCreator<T> {
-     void createAnimation(T animatedObject, long delay, long duration,
-             float translationY, boolean appearing, Interpolator interpolator,
-             Runnable finishListener);
+    /**
+     * Create the appear / disappear animation.
+     */
+    void createAnimation(T animatedObject, long delay, long duration,
+            float translationY, boolean appearing, Interpolator interpolator,
+            Runnable endRunnable);
+
+    /**
+     * Create the animation with {@link AnimatorListenerAdapter}.
+     */
+    default void createAnimation(T animatedObject, long delay, long duration,
+            float translationY, boolean appearing, Interpolator interpolator,
+            Runnable endRunnable, AnimatorListenerAdapter animatorListener) {}
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
index d194695..b066d85 100644
--- a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
@@ -180,6 +180,14 @@
     @Override
     public void createAnimation(final View view, long delay, long duration, float translationY,
             boolean appearing, Interpolator interpolator, final Runnable endRunnable) {
+        createAnimation(
+                view, delay, duration, translationY, appearing, interpolator, endRunnable, null);
+    }
+
+    @Override
+    public void createAnimation(final View view, long delay,
+            long duration, float translationY, boolean appearing, Interpolator interpolator,
+            final Runnable endRunnable, final AnimatorListenerAdapter animatorListener) {
         if (view != null) {
             float targetAlpha = appearing ? 1f : 0f;
             float targetTranslationY = appearing ? 0 : translationY;
@@ -224,7 +232,7 @@
             });
             alphaAnim.start();
             startTranslationYAnimation(view, delay, duration, appearing ? 0 : translationY,
-                    interpolator);
+                    interpolator, animatorListener);
         }
     }
 
@@ -240,7 +248,7 @@
      * A static method to start translation y animation
      */
     public static void startTranslationYAnimation(View view, long delay, long duration,
-            float endTranslationY, Interpolator interpolator, Animator.AnimatorListener listener) {
+            float endTranslationY, Interpolator interpolator, AnimatorListenerAdapter listener) {
         Animator translationAnim;
         if (view.isHardwareAccelerated()) {
             RenderNodeAnimator translationAnimRt = new RenderNodeAnimator(
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
index 77044ed..6844b65 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
@@ -16,6 +16,8 @@
 
 package com.android.keyguard;
 
+import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_PIN_APPEAR;
+import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_PIN_DISAPPEAR;
 import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_HALF_OPENED;
 import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN;
 
@@ -28,7 +30,6 @@
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.constraintlayout.widget.ConstraintSet;
 
-import com.android.internal.jank.InteractionJankMonitor;
 import com.android.settingslib.animation.AppearAnimationUtils;
 import com.android.settingslib.animation.DisappearAnimationUtils;
 import com.android.systemui.R;
@@ -173,7 +174,7 @@
         setTranslationY(mAppearAnimationUtils.getStartTranslation());
         AppearAnimationUtils.startTranslationYAnimation(this, 0 /* delay */, 500 /* duration */,
                 0, mAppearAnimationUtils.getInterpolator(),
-                getAnimationListener(InteractionJankMonitor.CUJ_LOCKSCREEN_PIN_APPEAR));
+                getAnimationListener(CUJ_LOCKSCREEN_PIN_APPEAR));
         mAppearAnimationUtils.startAnimation2d(mViews,
                 new Runnable() {
                     @Override
@@ -194,12 +195,12 @@
         disappearAnimationUtils.createAnimation(
                 this, 0, 200, mDisappearYTranslation, false,
                 mDisappearAnimationUtils.getInterpolator(), () -> {
-                    getAnimationListener(InteractionJankMonitor.CUJ_LOCKSCREEN_PIN_DISAPPEAR);
                     enableClipping(true);
                     if (finishRunnable != null) {
                         finishRunnable.run();
                     }
-                });
+                },
+                getAnimationListener(CUJ_LOCKSCREEN_PIN_DISAPPEAR));
         return true;
     }