diff options
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 { |