Add logs and set visibility to gone on animation end

This CL adds logs and sets visibility of the ripple view to gone when
animation ends.

Flag: EXEMPT bugfix
Bug: 363403530
Test: build and checked UI, no crashes.
Change-Id: I869b19442c1f1e7562fa3f19b9fd297df3982287
diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt
index 1502df7..078d534 100644
--- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt
@@ -19,6 +19,7 @@
 import android.app.StatusBarManager
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.core.LogLevel
 import com.android.systemui.media.taptotransfer.common.MediaTttLoggerUtils
 import com.android.systemui.temporarydisplay.TemporaryViewLogger
 import javax.inject.Inject
@@ -50,6 +51,15 @@
         MediaTttLoggerUtils.logPackageNotFound(buffer, TAG, packageName)
     }
 
+    fun logRippleAnimationEnd(id: Int) {
+        buffer.log(
+            tag,
+            LogLevel.DEBUG,
+            { int1 = id },
+            { "ripple animation for view with id: $int1 is ended" }
+        )
+    }
+
     companion object {
         private const val TAG = "MediaTttReceiver"
     }
diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt
index fbd7fd3..a232971 100644
--- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt
@@ -32,6 +32,7 @@
 constructor(
     private val context: Context,
     private val windowManager: WindowManager,
+    private val mediaTttReceiverLogger: MediaTttReceiverLogger,
 ) {
 
     private var maxRippleWidth: Float = 0f
@@ -90,12 +91,12 @@
     /** Expands the ripple to cover the screen. */
     fun expandToSuccessState(rippleView: ReceiverChipRippleView, onAnimationEnd: Runnable?) {
         layoutRipple(rippleView, isFullScreen = true)
-        rippleView.expandToFull(maxRippleHeight, onAnimationEnd)
+        rippleView.expandToFull(maxRippleHeight, mediaTttReceiverLogger, onAnimationEnd)
     }
 
     /** Collapses the ripple. */
     fun collapseRipple(rippleView: ReceiverChipRippleView, onAnimationEnd: Runnable? = null) {
-        rippleView.collapseRipple(onAnimationEnd)
+        rippleView.collapseRipple(mediaTttReceiverLogger, onAnimationEnd)
     }
 
     private fun layoutRipple(rippleView: ReceiverChipRippleView, isFullScreen: Boolean = false) {
diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt
index 35018f1..81059e3 100644
--- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt
@@ -24,9 +24,7 @@
 import com.android.systemui.surfaceeffects.ripple.RippleView
 import kotlin.math.pow
 
-/**
- * An expanding ripple effect for the media tap-to-transfer receiver chip.
- */
+/** An expanding ripple effect for the media tap-to-transfer receiver chip. */
 class ReceiverChipRippleView(context: Context?, attrs: AttributeSet?) : RippleView(context, attrs) {
 
     // Indicates whether the ripple started expanding.
@@ -46,24 +44,34 @@
     }
 
     /** Used to animate out the ripple. No-op if the ripple was never started via [startRipple]. */
-    fun collapseRipple(onAnimationEnd: Runnable? = null) {
+    fun collapseRipple(logger: MediaTttReceiverLogger, onAnimationEnd: Runnable? = null) {
         if (!isStarted) {
             return // Ignore if ripple is not started yet.
         }
         duration = DEFAULT_DURATION
         // Reset all listeners to animator.
         animator.removeAllListeners()
-        animator.addListener(object : AnimatorListenerAdapter() {
-            override fun onAnimationEnd(animation: Animator) {
-                onAnimationEnd?.run()
-                isStarted = false
+        animator.addListener(
+            object : AnimatorListenerAdapter() {
+                override fun onAnimationEnd(animation: Animator) {
+                    animation?.let {
+                        visibility = GONE
+                        logger.logRippleAnimationEnd(id)
+                    }
+                    onAnimationEnd?.run()
+                    isStarted = false
+                }
             }
-        })
+        )
         animator.reverse()
     }
 
     // Expands the ripple to cover full screen.
-    fun expandToFull(newHeight: Float, onAnimationEnd: Runnable? = null) {
+    fun expandToFull(
+        newHeight: Float,
+        logger: MediaTttReceiverLogger,
+        onAnimationEnd: Runnable? = null
+    ) {
         if (!isStarted) {
             return
         }
@@ -85,13 +93,18 @@
             rippleShader.time = now.toFloat()
             invalidate()
         }
-        animator.addListener(object : AnimatorListenerAdapter() {
-            override fun onAnimationEnd(animation: Animator) {
-                animation?.let { visibility = GONE }
-                onAnimationEnd?.run()
-                isStarted = false
+        animator.addListener(
+            object : AnimatorListenerAdapter() {
+                override fun onAnimationEnd(animation: Animator) {
+                    animation?.let {
+                        visibility = GONE
+                        logger.logRippleAnimationEnd(id)
+                    }
+                    onAnimationEnd?.run()
+                    isStarted = false
+                }
             }
-        })
+        )
         animator.start()
     }