diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt index 05afc57fbb596..22bbb81b44e60 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt @@ -25,6 +25,8 @@ import android.util.DisplayMetrics import android.view.View import android.view.WindowManager import com.android.internal.annotations.VisibleForTesting +import com.android.internal.logging.UiEvent +import com.android.internal.logging.UiEventLogger import com.android.settingslib.Utils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.FeatureFlags @@ -55,7 +57,8 @@ class WiredChargingRippleController @Inject constructor( featureFlags: FeatureFlags, private val context: Context, private val windowManager: WindowManager, - private val systemClock: SystemClock + private val systemClock: SystemClock, + private val uiEventLogger: UiEventLogger ) { private var pluggedIn: Boolean? = null private val rippleEnabled: Boolean = featureFlags.isChargingRippleEnabled && @@ -164,6 +167,7 @@ class WiredChargingRippleController @Inject constructor( } }) windowManager.addView(rippleView, windowLayoutParams) + uiEventLogger.log(WiredChargingRippleEvent.CHARGING_RIPPLE_PLAYED) } private fun layoutRipple() { @@ -203,4 +207,11 @@ class WiredChargingRippleController @Inject constructor( pw.println("Usage: adb shell cmd statusbar charging-ripple") } } + + enum class WiredChargingRippleEvent(private val _id: Int) : UiEventLogger.UiEventEnum { + @UiEvent(doc = "Wired charging ripple effect played") + CHARGING_RIPPLE_PLAYED(829); + + override fun getId() = _id + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt index 03744b78e8d5c..85ec3faa40138 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt @@ -20,6 +20,7 @@ import android.testing.AndroidTestingRunner import android.view.View import android.view.WindowManager import androidx.test.filters.SmallTest +import com.android.internal.logging.UiEventLogger import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.commandline.CommandRegistry @@ -50,6 +51,7 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { @Mock private lateinit var configurationController: ConfigurationController @Mock private lateinit var rippleView: ChargingRippleView @Mock private lateinit var windowManager: WindowManager + @Mock private lateinit var uiEventLogger: UiEventLogger private val systemClock = FakeSystemClock() @Before @@ -58,7 +60,7 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { `when`(featureFlags.isChargingRippleEnabled).thenReturn(true) controller = WiredChargingRippleController( commandRegistry, batteryController, configurationController, - featureFlags, context, windowManager, systemClock) + featureFlags, context, windowManager, systemClock, uiEventLogger) controller.rippleView = rippleView // Replace the real ripple view with a mock instance } @@ -87,6 +89,10 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { // Verify ripple removed runnableCaptor.value.run() verify(windowManager).removeView(rippleView) + + // Verify event logged + verify(uiEventLogger).log( + WiredChargingRippleController.WiredChargingRippleEvent.CHARGING_RIPPLE_PLAYED) } @Test