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
This commit is contained in:
Hongwei Wang
2020-09-11 17:03:03 -07:00
parent e9897deb31
commit c993b0314b
2 changed files with 32 additions and 7 deletions

View File

@@ -17,6 +17,7 @@
package com.android.systemui.pip; package com.android.systemui.pip;
import android.app.TaskInfo; import android.app.TaskInfo;
import android.content.pm.PackageManager;
import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
@@ -28,26 +29,48 @@ import com.android.systemui.dagger.SysUISingleton;
@SysUISingleton @SysUISingleton
public class PipUiEventLogger { public class PipUiEventLogger {
private static final int INVALID_PACKAGE_UID = -1;
private final UiEventLogger mUiEventLogger; 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; mUiEventLogger = uiEventLogger;
mPackageManager = packageManager;
} }
public void setTaskInfo(TaskInfo taskInfo) { 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 * Sends log via UiEvent, reference go/uievent for how to debug locally
*/ */
public void log(PipUiEventEnum event) { public void log(PipUiEventEnum event) {
if (mTaskInfo == null) { if (mPackageName == null || mPackageUid == INVALID_PACKAGE_UID) {
return; 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;
} }
/** /**

View File

@@ -17,6 +17,7 @@
package com.android.systemui.wmshell; package com.android.systemui.wmshell;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Handler; import android.os.Handler;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.IWindowManager; import android.view.IWindowManager;
@@ -76,8 +77,9 @@ public abstract class WMShellBaseModule {
@SysUISingleton @SysUISingleton
@Provides @Provides
static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger) { static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger,
return new PipUiEventLogger(uiEventLogger); PackageManager packageManager) {
return new PipUiEventLogger(uiEventLogger, packageManager);
} }
@SysUISingleton @SysUISingleton