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

Commit 680f3503 authored by Songchun Fan's avatar Songchun Fan
Browse files

[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
parent 42806530
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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
+8 −8
Original line number Diff line number Diff line
@@ -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();
            }
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -535,7 +535,7 @@ class InstallingSession {
            mInstallPackageHelper.installPackagesTraced(installRequests);

            for (InstallRequest request : installRequests) {
                request.onInstallCompleted(mUser.getIdentifier());
                request.onInstallCompleted();
                doPostInstall(request);
            }
        }
+16 −6
Original line number Diff line number Diff line
@@ -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);