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

Commit c993b031 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Log the application uid in PipUiEventLogger

Regression from ag/12132203, we should log the application uid instead
of the running user id.

Bug: 168342514
Test: $ANDROID_HOST_OUT/bin/statsd_testdrive -terse 90
Change-Id: If5d1bfe9ce38ea21bb9e5e13f51622f732dd85b9
parent e9897deb
Loading
Loading
Loading
Loading
+28 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.pip;

import android.app.TaskInfo;
import android.content.pm.PackageManager;

import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
@@ -28,26 +29,48 @@ import com.android.systemui.dagger.SysUISingleton;
@SysUISingleton
public class PipUiEventLogger {

    private static final int INVALID_PACKAGE_UID = -1;

    private final UiEventLogger mUiEventLogger;
    private final PackageManager mPackageManager;

    private TaskInfo mTaskInfo;
    private String mPackageName;
    private int mPackageUid = INVALID_PACKAGE_UID;

    public PipUiEventLogger(UiEventLogger uiEventLogger) {
    public PipUiEventLogger(UiEventLogger uiEventLogger, PackageManager packageManager) {
        mUiEventLogger = uiEventLogger;
        mPackageManager = packageManager;
    }

    public void setTaskInfo(TaskInfo taskInfo) {
        mTaskInfo = taskInfo;
        if (taskInfo == null) {
            mPackageName = null;
            mPackageUid = INVALID_PACKAGE_UID;
        } else {
            mPackageName = taskInfo.topActivity.getPackageName();
            mPackageUid = getUid(mPackageName, taskInfo.userId);
        }
    }

    /**
     * Sends log via UiEvent, reference go/uievent for how to debug locally
     */
    public void log(PipUiEventEnum event) {
        if (mTaskInfo == null) {
        if (mPackageName == null || mPackageUid == INVALID_PACKAGE_UID) {
            return;
        }
        mUiEventLogger.log(event, mTaskInfo.userId, mTaskInfo.topActivity.getPackageName());
        mUiEventLogger.log(event, mPackageUid, mPackageName);
    }

    private int getUid(String packageName, int userId) {
        int uid = INVALID_PACKAGE_UID;
        try {
            uid = mPackageManager.getApplicationInfoAsUser(
                    packageName, 0 /* ApplicationInfoFlags */, userId).uid;
        } catch (PackageManager.NameNotFoundException e) {
            // do nothing.
        }
        return uid;
    }

    /**
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.wmshell;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.view.IWindowManager;
@@ -76,8 +77,9 @@ public abstract class WMShellBaseModule {

    @SysUISingleton
    @Provides
    static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger) {
        return new PipUiEventLogger(uiEventLogger);
    static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger,
            PackageManager packageManager) {
        return new PipUiEventLogger(uiEventLogger, packageManager);
    }

    @SysUISingleton