From 98b9b4e03ca97562e244a2ad91e6bef3ca34e383 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Wed, 7 Jul 2021 20:28:51 -0700 Subject: [PATCH] MediaMetricsManager: Authorize log session ids Send log session ids generated by MediaMetricsManager to the MediaMetricsService, to restrict communicated log session ids. Test: atest AudioTrackTest#testSetLogSessionId Test: adb shell dumpsys media.metrics Bug: 193265974 Change-Id: I1ea10cec4d8b744d44c4e98b2013328e0dd173e1 --- media/java/android/media/MediaMetrics.java | 10 ++++++---- .../media/metrics/MediaMetricsManagerService.java | 9 +++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/media/java/android/media/MediaMetrics.java b/media/java/android/media/MediaMetrics.java index 3a5216e1c4e72..6eb1af8ac980e 100644 --- a/media/java/android/media/MediaMetrics.java +++ b/media/java/android/media/MediaMetrics.java @@ -53,6 +53,7 @@ public class MediaMetrics { public static final String AUDIO_VOLUME = AUDIO + SEPARATOR + "volume"; public static final String AUDIO_VOLUME_EVENT = AUDIO_VOLUME + SEPARATOR + "event"; public static final String AUDIO_MODE = AUDIO + SEPARATOR + "mode"; + public static final String METRICS_MANAGER = "metrics" + SEPARATOR + "manager"; } /** @@ -120,10 +121,11 @@ public class MediaMetrics { createKey("gainDb", Double.class); public static final Key GROUP = createKey("group", String.class); - // For volume - public static final Key INDEX = createKey("index", Integer.class); - public static final Key MAX_INDEX = createKey("maxIndex", Integer.class); - public static final Key MIN_INDEX = createKey("minIndex", Integer.class); + + public static final Key INDEX = createKey("index", Integer.class); // volume + public static final Key LOG_SESSION_ID = createKey("logSessionId", String.class); + public static final Key MAX_INDEX = createKey("maxIndex", Integer.class); // vol + public static final Key MIN_INDEX = createKey("minIndex", Integer.class); // vol public static final Key MODE = createKey("mode", String.class); // audio_mode public static final Key MUTE = diff --git a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java index 2519bbf389bab..8e7c4ff3e11c6 100644 --- a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java +++ b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java @@ -18,6 +18,7 @@ package com.android.server.media.metrics; import android.content.Context; import android.content.pm.PackageManager; +import android.media.MediaMetrics; import android.media.metrics.IMediaMetricsManager; import android.media.metrics.NetworkEvent; import android.media.metrics.PlaybackErrorEvent; @@ -65,6 +66,8 @@ public final class MediaMetricsManagerService extends SystemService { private static final int LOGGING_LEVEL_NO_UID = 1000; private static final int LOGGING_LEVEL_BLOCKED = 99999; + private static final String mMetricsId = MediaMetrics.Name.METRICS_MANAGER; + private static final String FAILED_TO_GET = "failed_to_get"; private final SecureRandom mSecureRandom; @GuardedBy("mLock") @@ -199,6 +202,12 @@ public final class MediaMetricsManagerService extends SystemService { mSecureRandom.nextBytes(byteId); String id = Base64.encodeToString( byteId, Base64.NO_PADDING | Base64.NO_WRAP | Base64.URL_SAFE); + + // Authorize these session ids in the native mediametrics service. + new MediaMetrics.Item(mMetricsId) + .set(MediaMetrics.Property.EVENT, "create") + .set(MediaMetrics.Property.LOG_SESSION_ID, id) + .record(); return id; }