From 93111fee9454cd2ec22dfa54df9a8152af60130c Mon Sep 17 00:00:00 2001 From: Michael Mikhail Date: Wed, 23 Nov 2022 21:30:38 +0000 Subject: [PATCH] Add New UiEvents for media dashboard Adds two UiEvents when media session is added, the first one is logged when the carousel contains only one media player. The second event when the carousel has multiples, it is logged only once. Bug: 241485754 Test: Tried log.e() and checked that it is working as explained in the description. Change-Id: I8380bfd14cde5c38b2940023e7ddce01fe3128ad --- .../controls/pipeline/MediaDataManager.kt | 16 +++++++++++++ .../media/controls/util/MediaUiEventLogger.kt | 24 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt index 3012bb41445e6..2dd339d409a62 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt @@ -422,6 +422,7 @@ class MediaDataManager( appUid = appUid ) mediaEntries.put(packageName, resumeData) + logSingleVsMultipleMediaAdded(appUid, packageName, instanceId) logger.logResumeMediaAdded(appUid, packageName, instanceId) } backgroundExecutor.execute { @@ -812,6 +813,7 @@ class MediaDataManager( val appUid = appInfo?.uid ?: Process.INVALID_UID if (logEvent) { + logSingleVsMultipleMediaAdded(appUid, sbn.packageName, instanceId) logger.logActiveMediaAdded(appUid, sbn.packageName, instanceId, playbackLocation) } else if (playbackLocation != currentEntry?.playbackLocation) { logger.logPlaybackLocationChange(appUid, sbn.packageName, instanceId, playbackLocation) @@ -855,6 +857,20 @@ class MediaDataManager( } } + private fun logSingleVsMultipleMediaAdded( + appUid: Int, + packageName: String, + instanceId: InstanceId + ) { + if (mediaEntries.size == 1) { + logger.logSingleMediaPlayerInCarousel(appUid, packageName, instanceId) + } else if (mediaEntries.size == 2) { + // Since this method is only called when there is a new media session added. + // logging needed once there is more than one media session in carousel. + logger.logMultipleMediaPlayersInCarousel(appUid, packageName, instanceId) + } + } + private fun getAppInfoFromPackage(packageName: String): ApplicationInfo? { try { return context.packageManager.getApplicationInfo(packageName, 0) diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt index 3ad8c21e8a1ef..ea943be85f21d 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt @@ -213,6 +213,24 @@ class MediaUiEventLogger @Inject constructor(private val logger: UiEventLogger) instanceId ) } + + fun logSingleMediaPlayerInCarousel(uid: Int, packageName: String, instanceId: InstanceId) { + logger.logWithInstanceId( + MediaUiEvent.MEDIA_CAROUSEL_SINGLE_PLAYER, + uid, + packageName, + instanceId + ) + } + + fun logMultipleMediaPlayersInCarousel(uid: Int, packageName: String, instanceId: InstanceId) { + logger.logWithInstanceId( + MediaUiEvent.MEDIA_CAROUSEL_MULTIPLE_PLAYERS, + uid, + packageName, + instanceId + ) + } } enum class MediaUiEvent(val metricId: Int) : UiEventLogger.UiEventEnum { @@ -269,7 +287,11 @@ enum class MediaUiEvent(val metricId: Int) : UiEventLogger.UiEventEnum { @UiEvent(doc = "User tapped on a media recommendation card") MEDIA_RECOMMENDATION_CARD_TAP(1045), @UiEvent(doc = "User opened the broadcast dialog from a media control") - MEDIA_OPEN_BROADCAST_DIALOG(1079); + MEDIA_OPEN_BROADCAST_DIALOG(1079), + @UiEvent(doc = "The media carousel contains one media player card") + MEDIA_CAROUSEL_SINGLE_PLAYER(1244), + @UiEvent(doc = "The media carousel contains multiple media player cards") + MEDIA_CAROUSEL_MULTIPLE_PLAYERS(1245); override fun getId() = metricId }