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
diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java
index 64ed376..1ee0b83 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.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 @@
}
}
- 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 @@
}
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 dfd305a..5b42a0b 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 @@
return mDexManager;
}
+ /*package*/ DexOptHelper getDexOptHelper() {
+ return mDexOptHelper;
+ }
+
/*package*/ DynamicCodeLogger getDynamicCodeLogger() {
return mDynamicCodeLogger;
}