From 047a509cbadea8a3445fcf9d2a79dc704a014a6c Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Mon, 14 Nov 2022 10:06:49 -0800 Subject: [PATCH] [pm/metrics][4/n] pass sessionId and requireUserAction to metrics BUG: 249294752 Test: atest com.android.cts.packagemanager.stats.host.PackageInstallationSessionReportedStatsTests Change-Id: I0255598b730e29915501a0def868ad6c34349de4 --- .../com/android/server/pm/InstallRequest.java | 17 +++++++++++++++++ .../android/server/pm/InstallingSession.java | 10 +++++++++- .../server/pm/PackageInstallerSession.java | 4 ++-- .../com/android/server/pm/PackageMetrics.java | 4 ++-- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstallRequest.java b/services/core/java/com/android/server/pm/InstallRequest.java index 01a8bd0a42253..4e5a6f9fa2b5c 100644 --- a/services/core/java/com/android/server/pm/InstallRequest.java +++ b/services/core/java/com/android/server/pm/InstallRequest.java @@ -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; } diff --git a/services/core/java/com/android/server/pm/InstallingSession.java b/services/core/java/com/android/server/pm/InstallingSession.java index e4a0a3ab8dfa7..d8494dbaa827f 100644 --- a/services/core/java/com/android/server/pm/InstallingSession.java +++ b/services/core/java/com/android/server/pm/InstallingSession.java @@ -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 diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 5d13a45e03e31..02a3b036e6267 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -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); } } diff --git a/services/core/java/com/android/server/pm/PackageMetrics.java b/services/core/java/com/android/server/pm/PackageMetrics.java index cb87ff5467a80..0574f737a54b6 100644 --- a/services/core/java/com/android/server/pm/PackageMetrics.java +++ b/services/core/java/com/android/server/pm/PackageMetrics.java @@ -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 */,