diff options
| author | 2025-02-26 21:35:41 -0800 | |
|---|---|---|
| committer | 2025-02-26 21:35:41 -0800 | |
| commit | 124090d53f3b6ffae54f25f0cc3ade59c9f456cf (patch) | |
| tree | e83e85fa3d7cf99ced3aa6b72b8d32ba426fcec0 | |
| parent | 7e982833f8342e66d6a3bd8d8cb84d1d2c0bb354 (diff) | |
| parent | e41913e59e96c62488dde6e6428a1a22b0586e38 (diff) | |
Merge "Add metrics for waiting dexopt" into main
3 files changed, 19 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index f96846cdb2f4..acdc79fb9922 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -1067,6 +1067,9 @@ final class InstallPackageHelper { void doPostDexopt(List<ReconciledPackage> reconciledPackages, List<InstallRequest> requests, Map<String, Boolean> createdAppId, MoveInfo moveInfo, long acquireTime) { + for (InstallRequest request : requests) { + request.onWaitDexoptFinished(); + } boolean success = false; try { if (commitInstallPackages(reconciledPackages)) { @@ -1218,6 +1221,7 @@ final class InstallPackageHelper { CompletableFuture<Void> future = DexOptHelper.performDexoptIfNeededAsync(request, mDexManager); completableFutures.add(future); + request.onWaitDexoptStarted(); } if (!completableFutures.isEmpty()) { diff --git a/services/core/java/com/android/server/pm/InstallRequest.java b/services/core/java/com/android/server/pm/InstallRequest.java index fbf5db5d9635..734920435e26 100644 --- a/services/core/java/com/android/server/pm/InstallRequest.java +++ b/services/core/java/com/android/server/pm/InstallRequest.java @@ -1028,6 +1028,18 @@ final class InstallRequest { } } + public void onWaitDexoptStarted() { + if (mPackageMetrics != null) { + mPackageMetrics.onStepStarted(PackageMetrics.STEP_WAIT_DEXOPT); + } + } + + public void onWaitDexoptFinished() { + if (mPackageMetrics != null) { + mPackageMetrics.onStepFinished(PackageMetrics.STEP_WAIT_DEXOPT); + } + } + public void onDexoptFinished(DexoptResult dexoptResult) { // Only report external profile warnings when installing from adb. The goal is to warn app // developers if they have provided bad external profiles, so it's not beneficial to report diff --git a/services/core/java/com/android/server/pm/PackageMetrics.java b/services/core/java/com/android/server/pm/PackageMetrics.java index 994ee421790c..22da3b2e7636 100644 --- a/services/core/java/com/android/server/pm/PackageMetrics.java +++ b/services/core/java/com/android/server/pm/PackageMetrics.java @@ -73,6 +73,7 @@ final class PackageMetrics { public static final int STEP_DEXOPT = 5; public static final int STEP_FREEZE_INSTALL = 6; public static final int STEP_RESTORE = 7; + public static final int STEP_WAIT_DEXOPT = 8; @IntDef(prefix = {"STEP_"}, value = { STEP_PREPARE, @@ -81,7 +82,8 @@ final class PackageMetrics { STEP_COMMIT, STEP_DEXOPT, STEP_FREEZE_INSTALL, - STEP_RESTORE + STEP_RESTORE, + STEP_WAIT_DEXOPT }) @Retention(RetentionPolicy.SOURCE) public @interface StepInt { |