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;
     }