From 82c70fb58cf3d9c7fe234345e8da5cd23d1446e8 Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Sat, 14 Jan 2023 18:40:36 +0000 Subject: [PATCH] Give access to the DexOptHelper object in the onDexoptDone callback. To make it easier to share data between methods. Test: m Bug: 251903639 Change-Id: Icaa3c885d8e0e5bf41c072e86f01ff331d20c493 --- .../java/com/android/server/pm/DexOptHelper.java | 16 +++++----------- .../android/server/pm/PackageManagerService.java | 4 ++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java index 64ed37690f8d2..1ee0b837c0062 100644 --- a/services/core/java/com/android/server/pm/DexOptHelper.java +++ b/services/core/java/com/android/server/pm/DexOptHelper.java @@ -86,7 +86,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -946,13 +945,10 @@ public final class DexOptHelper { } } - private static class DexoptDoneHandler implements ArtManagerLocal.DexoptDoneCallback { - @NonNull private final PackageManagerService mPm; - - DexoptDoneHandler(@NonNull PackageManagerService pm) { mPm = pm; } - + private class DexoptDoneHandler implements ArtManagerLocal.DexoptDoneCallback { /** - * Called after every package dexopt operation done by {@link ArtManagerLocal}. + * Called after every package dexopt operation done by {@link ArtManagerLocal} (when ART + * Service is in use). */ @Override public void onDexoptDone(@NonNull DexoptResult result) { @@ -983,10 +979,8 @@ public final class DexOptHelper { } ArtManagerLocal artManager = new ArtManagerLocal(systemContext); - // There doesn't appear to be any checks that @NonNull is heeded, so use requireNonNull - // below to ensure we don't store away a null that we'll fail on later. - artManager.addDexoptDoneCallback(false /* onlyIncludeUpdates */, - Runnable::run, new DexoptDoneHandler(Objects.requireNonNull(pm))); + artManager.addDexoptDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, + pm.getDexOptHelper().new DexoptDoneHandler()); LocalManagerRegistry.addManager(ArtManagerLocal.class, artManager); artManager.scheduleBackgroundDexoptJob(); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index dfd305add0747..5b42a0be6b58e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2997,6 +2997,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService return mDexManager; } + /*package*/ DexOptHelper getDexOptHelper() { + return mDexOptHelper; + } + /*package*/ DynamicCodeLogger getDynamicCodeLogger() { return mDynamicCodeLogger; }