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

Commit 047a509c authored by Songchun Fan's avatar Songchun Fan
Browse files

[pm/metrics][4/n] pass sessionId and requireUserAction to metrics

BUG: 249294752
Test: atest com.android.cts.packagemanager.stats.host.PackageInstallationSessionReportedStatsTests
Change-Id: I0255598b730e29915501a0def868ad6c34349de4
parent cbadbbfa
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.pm;

import static android.content.pm.PackageInstaller.SessionParams.USER_ACTION_UNSPECIFIED;
import static android.content.pm.PackageManager.INSTALL_REASON_UNKNOWN;
import static android.content.pm.PackageManager.INSTALL_SCENARIO_DEFAULT;
import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
@@ -114,6 +115,8 @@ final class InstallRequest {

    @Nullable
    private final PackageMetrics mPackageMetrics;
    private final int mSessionId;
    private final int mRequireUserAction;

    // New install
    InstallRequest(InstallingSession params) {
@@ -128,6 +131,8 @@ final class InstallRequest {
                params.mDataLoaderType, params.mPackageSource);
        mPackageMetrics = new PackageMetrics(this);
        mIsInstallInherit = params.mIsInherit;
        mSessionId = params.mSessionId;
        mRequireUserAction = params.mRequireUserAction;
    }

    // Install existing package as user
@@ -141,6 +146,8 @@ final class InstallRequest {
        mPostInstallRunnable = runnable;
        mPackageMetrics = new PackageMetrics(this);
        mIsInstallForUsers = true;
        mSessionId = -1;
        mRequireUserAction = USER_ACTION_UNSPECIFIED;
    }

    // addForInit
@@ -158,6 +165,8 @@ final class InstallRequest {
        mScanFlags = scanFlags;
        mScanResult = scanResult;
        mPackageMetrics = null; // No logging from this code path
        mSessionId = -1;
        mRequireUserAction = USER_ACTION_UNSPECIFIED;
    }

    @Nullable
@@ -565,6 +574,14 @@ final class InstallRequest {
        }
    }

    public int getSessionId() {
        return mSessionId;
    }

    public int getRequireUserAction() {
        return mRequireUserAction;
    }

    public void setScanFlags(int scanFlags) {
        mScanFlags = scanFlags;
    }
+9 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.pm;

import static android.app.AppOpsManager.MODE_DEFAULT;
import static android.content.pm.PackageInstaller.SessionParams.MODE_INHERIT_EXISTING;
import static android.content.pm.PackageInstaller.SessionParams.USER_ACTION_UNSPECIFIED;
import static android.content.pm.PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
import static android.content.pm.PackageManager.INSTALL_STAGED;
import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
@@ -95,7 +96,10 @@ class InstallingSession {
    final InstallPackageHelper mInstallPackageHelper;
    final RemovePackageHelper mRemovePackageHelper;
    final boolean mIsInherit;
    final int mSessionId;
    final int mRequireUserAction;

    // For move install
    InstallingSession(OriginInfo originInfo, MoveInfo moveInfo, IPackageInstallObserver2 observer,
            int installFlags, InstallSource installSource, String volumeUuid,
            UserHandle user, String packageAbiOverride, int packageSource,
@@ -124,9 +128,11 @@ class InstallingSession {
        mPackageSource = packageSource;
        mPackageLite = packageLite;
        mIsInherit = false;
        mSessionId = -1;
        mRequireUserAction = USER_ACTION_UNSPECIFIED;
    }

    InstallingSession(File stagedDir, IPackageInstallObserver2 observer,
    InstallingSession(int sessionId, File stagedDir, IPackageInstallObserver2 observer,
            PackageInstaller.SessionParams sessionParams, InstallSource installSource,
            UserHandle user, SigningDetails signingDetails, int installerUid,
            PackageLite packageLite, PackageManagerService pm) {
@@ -155,6 +161,8 @@ class InstallingSession {
        mPackageSource = sessionParams.packageSource;
        mPackageLite = packageLite;
        mIsInherit = sessionParams.mode == MODE_INHERIT_EXISTING;
        mSessionId = sessionId;
        mRequireUserAction = sessionParams.requireUserAction;
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -2566,8 +2566,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        }

        synchronized (mLock) {
            return new InstallingSession(stageDir, localObserver, params, mInstallSource, user,
                    mSigningDetails, mInstallerUid, mPackageLite, mPm);
            return new InstallingSession(sessionId, stageDir, localObserver, params, mInstallSource,
                    user, mSigningDetails, mInstallerUid, mPackageLite, mPm);
        }
    }

+2 −2
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ final class PackageMetrics {
        final long apksSize = getApksSize(ps.getPath());

        FrameworkStatsLog.write(FrameworkStatsLog.PACKAGE_INSTALLATION_SESSION_REPORTED,
                0 /* session_id */,
                mInstallRequest.getSessionId() /* session_id */,
                success ? null : packageName /* not report package_name on success */,
                mInstallRequest.getUid() /* uid */,
                newUsers /* user_ids */,
@@ -110,7 +110,7 @@ final class PackageMetrics {
                installerUid /* installer_package_uid */,
                -1 /* original_installer_package_uid */,
                mInstallRequest.getDataLoaderType() /* data_loader_type */,
                0 /* user_action_required_type */,
                mInstallRequest.getRequireUserAction() /* user_action_required_type */,
                mInstallRequest.isInstantInstall() /* is_instant */,
                mInstallRequest.isInstallReplace() /* is_replace */,
                mInstallRequest.isInstallSystem() /* is_system */,