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

Commit 97062db0 authored by Bishoy Gendy's avatar Bishoy Gendy Committed by Android (Google) Code Review
Browse files

Merge "Refactor report user interaction in MediaSessionService" into main

parents b80207f6 04dbbab7
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
@@ -154,7 +153,7 @@ public class MediaSessionService extends SystemService implements Monitor {
    private UsageStatsManagerInternal mUsageStatsManagerInternal;

    /* Maps uid with all user engaging session tokens associated to it */
    private final Map<Integer, Set<MediaSession.Token>> mUserEngagingSessions = new HashMap<>();
    private final SparseArray<Set<MediaSession.Token>> mUserEngagingSessions = new SparseArray<>();

    // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile)
    // It's always not null after the MediaSessionService is started.
@@ -625,29 +624,27 @@ public class MediaSessionService extends SystemService implements Monitor {

        String packageName = record.getPackageName();
        int sessionUid = record.getUid();
        String actionToLog = null;
        MediaSession.Token token = ((MediaSessionRecord) record).getSessionToken();
        if (userEngaged) {
            if (!mUserEngagingSessions.containsKey(sessionUid)) {
            if (!mUserEngagingSessions.contains(sessionUid)) {
                mUserEngagingSessions.put(sessionUid, new HashSet<>());
                actionToLog = "start";
                reportUserInteractionEvent(/* action= */ "start", record.getUserId(), packageName);
            }
            mUserEngagingSessions.get(sessionUid).add(token);
        } else if (mUserEngagingSessions.containsKey(sessionUid)) {
        } else if (mUserEngagingSessions.contains(sessionUid)) {
            mUserEngagingSessions.get(sessionUid).remove(token);
            if (mUserEngagingSessions.get(sessionUid).isEmpty()) {
                actionToLog = "stop";
                reportUserInteractionEvent(/* action= */ "stop", record.getUserId(), packageName);
                mUserEngagingSessions.remove(sessionUid);
            }
        }
    }

        if (actionToLog != null) {
    private void reportUserInteractionEvent(String action, int userId, String packageName) {
        PersistableBundle extras = new PersistableBundle();
        extras.putString(UsageStatsManager.EXTRA_EVENT_CATEGORY, "android.media");
            extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, actionToLog);
            mUsageStatsManagerInternal.reportUserInteractionEvent(
                    packageName, record.getUserId(), extras);
        }
        extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, action);
        mUsageStatsManagerInternal.reportUserInteractionEvent(packageName, userId, extras);
    }

    void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage,