Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98b9b4e0 authored by Andy Hung's avatar Andy Hung
Browse files

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
parent 2f7eef82
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -53,6 +53,7 @@ public class MediaMetrics {
        public static final String AUDIO_VOLUME = AUDIO + SEPARATOR + "volume";
        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_VOLUME_EVENT = AUDIO_VOLUME + SEPARATOR + "event";
        public static final String AUDIO_MODE = AUDIO + SEPARATOR + "mode";
        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);
                createKey("gainDb", Double.class);
        public static final Key<String> GROUP =
        public static final Key<String> GROUP =
                createKey("group", String.class);
                createKey("group", String.class);
        // For volume

        public static final Key<Integer> INDEX = createKey("index", Integer.class);
        public static final Key<Integer> INDEX = createKey("index", Integer.class); // volume
        public static final Key<Integer> MAX_INDEX = createKey("maxIndex", Integer.class);
        public static final Key<String> LOG_SESSION_ID = createKey("logSessionId", String.class);
        public static final Key<Integer> MIN_INDEX = createKey("minIndex", Integer.class);
        public static final Key<Integer> MAX_INDEX = createKey("maxIndex", Integer.class); // vol
        public static final Key<Integer> MIN_INDEX = createKey("minIndex", Integer.class); // vol
        public static final Key<String> MODE =
        public static final Key<String> MODE =
                createKey("mode", String.class); // audio_mode
                createKey("mode", String.class); // audio_mode
        public static final Key<String> MUTE =
        public static final Key<String> MUTE =
+9 −0
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.media.metrics;


import android.content.Context;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.media.MediaMetrics;
import android.media.metrics.IMediaMetricsManager;
import android.media.metrics.IMediaMetricsManager;
import android.media.metrics.NetworkEvent;
import android.media.metrics.NetworkEvent;
import android.media.metrics.PlaybackErrorEvent;
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_NO_UID = 1000;
    private static final int LOGGING_LEVEL_BLOCKED = 99999;
    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 static final String FAILED_TO_GET = "failed_to_get";
    private final SecureRandom mSecureRandom;
    private final SecureRandom mSecureRandom;
    @GuardedBy("mLock")
    @GuardedBy("mLock")
@@ -199,6 +202,12 @@ public final class MediaMetricsManagerService extends SystemService {
            mSecureRandom.nextBytes(byteId);
            mSecureRandom.nextBytes(byteId);
            String id = Base64.encodeToString(
            String id = Base64.encodeToString(
                    byteId, Base64.NO_PADDING | Base64.NO_WRAP | Base64.URL_SAFE);
                    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;
            return id;
        }
        }