[pm/metrics] fix test on user 10

InstallRequest.mUid is actually appId. Renaming to reflect that. Compute
the actual UID in the metrics class.

RemovedInfo.mUid is also appId, except in one place where it's used
outside the installation flow. That will be fixed in a separate CL.

BUG: 262710779
Test: atest com.android.cts.packagemanager.stats.host.PackageInstallationSessionReportedStatsTests
Change-Id: I6284f381b5760d14b4913ace5183a5b6f32db9b4
This commit is contained in:
Songchun Fan
2023-01-10 18:25:10 -08:00
parent 42806530e1
commit 680f3503d8
4 changed files with 30 additions and 20 deletions

View File

@@ -2252,7 +2252,7 @@ final class InstallPackageHelper {
}
}
installRequest.setName(pkgName);
installRequest.setUid(pkg.getUid());
installRequest.setAppId(pkg.getUid());
installRequest.setPkg(pkg);
installRequest.setReturnCode(PackageManager.INSTALL_SUCCEEDED);
//to update install status
@@ -2737,7 +2737,7 @@ final class InstallPackageHelper {
}
Bundle extras = new Bundle();
extras.putInt(Intent.EXTRA_UID, request.getUid());
extras.putInt(Intent.EXTRA_UID, request.getAppId());
if (update) {
extras.putBoolean(Intent.EXTRA_REPLACING, true);
}
@@ -2760,7 +2760,7 @@ final class InstallPackageHelper {
// Send PACKAGE_ADDED broadcast for users that see the package for the first time
// sendPackageAddedForNewUsers also deals with system apps
int appId = UserHandle.getAppId(request.getUid());
int appId = UserHandle.getAppId(request.getAppId());
boolean isSystem = request.isInstallSystem();
mPm.sendPackageAddedForNewUsers(mPm.snapshotComputer(), packageName,
isSystem || virtualPreload, virtualPreload /*startReceiver*/, appId,
@@ -2905,9 +2905,9 @@ final class InstallPackageHelper {
}
if (allNewUsers && !update) {
mPm.notifyPackageAdded(packageName, request.getUid());
mPm.notifyPackageAdded(packageName, request.getAppId());
} else {
mPm.notifyPackageChanged(packageName, request.getUid());
mPm.notifyPackageChanged(packageName, request.getAppId());
}
// Log current value of "unknown sources" setting

View File

@@ -81,7 +81,7 @@ final class InstallRequest {
/** Package Installed Info */
@Nullable
private String mName;
private int mUid = INVALID_UID;
private int mAppId = INVALID_UID;
// The set of users that originally had this package installed.
@Nullable
private int[] mOrigUsers;
@@ -158,7 +158,7 @@ final class InstallRequest {
mUserId = user.getIdentifier();
} else {
// APEX
mUserId = INVALID_UID;
mUserId = UserHandle.USER_SYSTEM;
}
mInstallArgs = null;
mParsedPackage = parsedPackage;
@@ -367,8 +367,8 @@ final class InstallRequest {
return mOrigUsers;
}
public int getUid() {
return mUid;
public int getAppId() {
return mAppId;
}
@Nullable
@@ -648,8 +648,8 @@ final class InstallRequest {
mPkg = pkg;
}
public void setUid(int uid) {
mUid = uid;
public void setAppId(int appId) {
mAppId = appId;
}
public void setNewUsers(int[] newUsers) {
@@ -773,10 +773,10 @@ final class InstallRequest {
}
}
public void onInstallCompleted(int userId) {
public void onInstallCompleted() {
if (getReturnCode() == INSTALL_SUCCEEDED) {
if (mPackageMetrics != null) {
mPackageMetrics.onInstallSucceed(userId);
mPackageMetrics.onInstallSucceed();
}
}
}

View File

@@ -535,7 +535,7 @@ class InstallingSession {
mInstallPackageHelper.installPackagesTraced(installRequests);
for (InstallRequest request : installRequests) {
request.onInstallCompleted(mUser.getIdentifier());
request.onInstallCompleted();
doPostInstall(request);
}
}

View File

@@ -19,9 +19,11 @@ package com.android.server.pm;
import static android.os.Process.INVALID_UID;
import android.annotation.IntDef;
import android.app.ActivityManager;
import android.app.admin.SecurityLog;
import android.content.pm.PackageManager;
import android.content.pm.parsing.ApkLiteParseUtils;
import android.os.UserHandle;
import android.util.Pair;
import android.util.SparseArray;
@@ -68,8 +70,8 @@ final class PackageMetrics {
mInstallRequest = installRequest;
}
public void onInstallSucceed(int userId) {
reportInstallationToSecurityLog(userId);
public void onInstallSucceed() {
reportInstallationToSecurityLog(mInstallRequest.getUserId());
reportInstallationStats(true /* success */);
}
@@ -110,10 +112,11 @@ final class PackageMetrics {
}
}
FrameworkStatsLog.write(FrameworkStatsLog.PACKAGE_INSTALLATION_SESSION_REPORTED,
mInstallRequest.getSessionId() /* session_id */,
packageName /* package_name */,
mInstallRequest.getUid() /* uid */,
getUid(mInstallRequest.getAppId(), mInstallRequest.getUserId()) /* uid */,
newUsers /* user_ids */,
userManagerInternal.getUserTypesForStatsd(newUsers) /* user_types */,
originalUsers /* original_user_ids */,
@@ -140,6 +143,13 @@ final class PackageMetrics {
);
}
private static int getUid(int appId, int userId) {
if (userId == UserHandle.USER_ALL) {
userId = ActivityManager.getCurrentUser();
}
return UserHandle.getUid(userId, appId);
}
private long getApksSize(File apkDir) {
// TODO(b/249294752): also count apk sizes for failed installs
final AtomicLong apksSize = new AtomicLong();
@@ -218,9 +228,9 @@ final class PackageMetrics {
final int[] originalUsers = info.mOrigUsers;
final int[] originalUserTypes = userManagerInternal.getUserTypesForStatsd(originalUsers);
FrameworkStatsLog.write(FrameworkStatsLog.PACKAGE_UNINSTALLATION_REPORTED,
info.mUid, removedUsers, removedUserTypes, originalUsers, originalUserTypes,
deleteFlags, PackageManager.DELETE_SUCCEEDED, info.mIsRemovedPackageSystemUpdate,
!info.mRemovedForAllUsers);
getUid(info.mUid, userId), removedUsers, removedUserTypes, originalUsers,
originalUserTypes, deleteFlags, PackageManager.DELETE_SUCCEEDED,
info.mIsRemovedPackageSystemUpdate, !info.mRemovedForAllUsers);
final String packageName = info.mRemovedPackage;
final long versionCode = info.mRemovedPackageVersionCode;
reportUninstallationToSecurityLog(packageName, versionCode, userId);