Consistently use the term "dexopt".

Terminology:
- "dexopt":
  - n. DEX optimization
  - v. to perform DEX optimization
- "dexopted": past tense and past participle of "dexopt"
- "dexopting": present participle of "dexopt"
- "dexoptable": can be dexopted

Bug: 265248684
Test: Presubmit
Ignore-AOSP-First: ART Services.
Change-Id: I35b2843cc357fee4aaf4845fb069a955b063f744
diff --git a/artd/artd.cc b/artd/artd.cc
index 47e0733..b6304d2 100644
--- a/artd/artd.cc
+++ b/artd/artd.cc
@@ -73,15 +73,15 @@
 
 namespace {
 
+using ::aidl::com::android::server::art::ArtdDexoptResult;
 using ::aidl::com::android::server::art::ArtifactsPath;
 using ::aidl::com::android::server::art::DexMetadataPath;
 using ::aidl::com::android::server::art::DexoptOptions;
-using ::aidl::com::android::server::art::DexoptResult;
 using ::aidl::com::android::server::art::DexoptTrigger;
 using ::aidl::com::android::server::art::FileVisibility;
 using ::aidl::com::android::server::art::FsPermission;
 using ::aidl::com::android::server::art::GetDexoptNeededResult;
-using ::aidl::com::android::server::art::GetOptimizationStatusResult;
+using ::aidl::com::android::server::art::GetDexoptStatusResult;
 using ::aidl::com::android::server::art::IArtdCancellationSignal;
 using ::aidl::com::android::server::art::MergeProfileOptions;
 using ::aidl::com::android::server::art::OutputArtifacts;
@@ -378,10 +378,10 @@
   return ScopedAStatus::ok();
 }
 
-ScopedAStatus Artd::getOptimizationStatus(const std::string& in_dexFile,
-                                          const std::string& in_instructionSet,
-                                          const std::string& in_classLoaderContext,
-                                          GetOptimizationStatusResult* _aidl_return) {
+ScopedAStatus Artd::getDexoptStatus(const std::string& in_dexFile,
+                                    const std::string& in_instructionSet,
+                                    const std::string& in_classLoaderContext,
+                                    GetDexoptStatusResult* _aidl_return) {
   Result<OatFileAssistantContext*> ofa_context = GetOatFileAssistantContext();
   if (!ofa_context.ok()) {
     return NonFatal("Failed to get runtime options: " + ofa_context.error().message());
@@ -763,7 +763,7 @@
     PriorityClass in_priorityClass,
     const DexoptOptions& in_dexoptOptions,
     const std::shared_ptr<IArtdCancellationSignal>& in_cancellationSignal,
-    DexoptResult* _aidl_return) {
+    ArtdDexoptResult* _aidl_return) {
   _aidl_return->cancelled = false;
 
   std::string oat_path = OR_RETURN_FATAL(BuildOatPath(in_outputArtifacts.artifactsPath));
diff --git a/artd/artd.h b/artd/artd.h
index f0288da..fbaaed0 100644
--- a/artd/artd.h
+++ b/artd/artd.h
@@ -85,11 +85,11 @@
       const aidl::com::android::server::art::ArtifactsPath& in_artifactsPath,
       int64_t* _aidl_return) override;
 
-  ndk::ScopedAStatus getOptimizationStatus(
+  ndk::ScopedAStatus getDexoptStatus(
       const std::string& in_dexFile,
       const std::string& in_instructionSet,
       const std::string& in_classLoaderContext,
-      aidl::com::android::server::art::GetOptimizationStatusResult* _aidl_return) override;
+      aidl::com::android::server::art::GetDexoptStatusResult* _aidl_return) override;
 
   ndk::ScopedAStatus isProfileUsable(const aidl::com::android::server::art::ProfilePath& in_profile,
                                      const std::string& in_dexFile,
@@ -152,7 +152,7 @@
       const aidl::com::android::server::art::DexoptOptions& in_dexoptOptions,
       const std::shared_ptr<aidl::com::android::server::art::IArtdCancellationSignal>&
           in_cancellationSignal,
-      aidl::com::android::server::art::DexoptResult* _aidl_return) override;
+      aidl::com::android::server::art::ArtdDexoptResult* _aidl_return) override;
 
   ndk::ScopedAStatus createCancellationSignal(
       std::shared_ptr<aidl::com::android::server::art::IArtdCancellationSignal>* _aidl_return)
diff --git a/artd/artd_test.cc b/artd/artd_test.cc
index ca1a136..8d03536 100644
--- a/artd/artd_test.cc
+++ b/artd/artd_test.cc
@@ -63,10 +63,10 @@
 namespace artd {
 namespace {
 
+using ::aidl::com::android::server::art::ArtdDexoptResult;
 using ::aidl::com::android::server::art::ArtifactsPath;
 using ::aidl::com::android::server::art::DexMetadataPath;
 using ::aidl::com::android::server::art::DexoptOptions;
-using ::aidl::com::android::server::art::DexoptResult;
 using ::aidl::com::android::server::art::FileVisibility;
 using ::aidl::com::android::server::art::FsPermission;
 using ::aidl::com::android::server::art::IArtdCancellationSignal;
@@ -380,7 +380,8 @@
   }
 
   void RunDexopt(binder_exception_t expected_status = EX_NONE,
-                 Matcher<DexoptResult> aidl_return_matcher = Field(&DexoptResult::cancelled, false),
+                 Matcher<ArtdDexoptResult> aidl_return_matcher = Field(&ArtdDexoptResult::cancelled,
+                                                                       false),
                  std::shared_ptr<IArtdCancellationSignal> cancellation_signal = nullptr) {
     RunDexopt(Property(&ndk::ScopedAStatus::getExceptionCode, expected_status),
               std::move(aidl_return_matcher),
@@ -388,13 +389,14 @@
   }
 
   void RunDexopt(Matcher<ndk::ScopedAStatus> status_matcher,
-                 Matcher<DexoptResult> aidl_return_matcher = Field(&DexoptResult::cancelled, false),
+                 Matcher<ArtdDexoptResult> aidl_return_matcher = Field(&ArtdDexoptResult::cancelled,
+                                                                       false),
                  std::shared_ptr<IArtdCancellationSignal> cancellation_signal = nullptr) {
     InitFilesBeforeDexopt();
     if (cancellation_signal == nullptr) {
       ASSERT_TRUE(artd_->createCancellationSignal(&cancellation_signal).isOk());
     }
-    DexoptResult aidl_return;
+    ArtdDexoptResult aidl_return;
     ndk::ScopedAStatus status = artd_->dexopt(output_artifacts_,
                                               dex_file_,
                                               isa_,
@@ -617,13 +619,14 @@
                       WithArg<0>(WriteToFdFlag("--app-image-fd=", "art")),
                       SetArgPointee<2>(ProcessStat{.wall_time_ms = 100, .cpu_time_ms = 400}),
                       Return(0)));
-  RunDexopt(EX_NONE,
-            AllOf(Field(&DexoptResult::cancelled, false),
-                  Field(&DexoptResult::wallTimeMs, 100),
-                  Field(&DexoptResult::cpuTimeMs, 400),
-                  Field(&DexoptResult::sizeBytes, strlen("art") + strlen("oat") + strlen("vdex")),
-                  Field(&DexoptResult::sizeBeforeBytes,
-                        strlen("old_art") + strlen("old_oat") + strlen("old_vdex"))));
+  RunDexopt(
+      EX_NONE,
+      AllOf(Field(&ArtdDexoptResult::cancelled, false),
+            Field(&ArtdDexoptResult::wallTimeMs, 100),
+            Field(&ArtdDexoptResult::cpuTimeMs, 400),
+            Field(&ArtdDexoptResult::sizeBytes, strlen("art") + strlen("oat") + strlen("vdex")),
+            Field(&ArtdDexoptResult::sizeBeforeBytes,
+                  strlen("old_art") + strlen("old_oat") + strlen("old_vdex"))));
 
   CheckContent(scratch_path_ + "/a/oat/arm64/b.odex", "oat");
   CheckContent(scratch_path_ + "/a/oat/arm64/b.vdex", "vdex");
@@ -762,7 +765,7 @@
   // `sizeBeforeBytes` should include the size of the old ART file even if no new ART file is
   // generated.
   RunDexopt(EX_NONE,
-            Field(&DexoptResult::sizeBeforeBytes,
+            Field(&ArtdDexoptResult::sizeBeforeBytes,
                   strlen("old_art") + strlen("old_oat") + strlen("old_vdex")));
 }
 
@@ -1032,8 +1035,9 @@
                         return 0;
                       }));
 
-  RunDexopt(EX_SERVICE_SPECIFIC,
-            AllOf(Field(&DexoptResult::sizeBytes, 0), Field(&DexoptResult::sizeBeforeBytes, 0)));
+  RunDexopt(
+      EX_SERVICE_SPECIFIC,
+      AllOf(Field(&ArtdDexoptResult::sizeBytes, 0), Field(&ArtdDexoptResult::sizeBeforeBytes, 0)));
 }
 
 TEST_F(ArtdTest, dexoptCancelledBeforeDex2oat) {
@@ -1052,7 +1056,7 @@
 
   cancellation_signal->cancel();
 
-  RunDexopt(EX_NONE, Field(&DexoptResult::cancelled, true), cancellation_signal);
+  RunDexopt(EX_NONE, Field(&ArtdDexoptResult::cancelled, true), cancellation_signal);
 
   CheckContent(scratch_path_ + "/a/oat/arm64/b.odex", "old_oat");
   CheckContent(scratch_path_ + "/a/oat/arm64/b.vdex", "old_vdex");
@@ -1091,8 +1095,9 @@
   {
     std::unique_lock<std::mutex> lock(mu);
     // Step 1.
-    t = std::thread(
-        [&] { RunDexopt(EX_NONE, Field(&DexoptResult::cancelled, true), cancellation_signal); });
+    t = std::thread([&] {
+      RunDexopt(EX_NONE, Field(&ArtdDexoptResult::cancelled, true), cancellation_signal);
+    });
     EXPECT_EQ(process_started_cv.wait_for(lock, kTimeout), std::cv_status::no_timeout);
     // Step 3.
     cancellation_signal->cancel();
@@ -1122,7 +1127,7 @@
                       }));
   EXPECT_CALL(mock_kill_, Call).Times(0);
 
-  RunDexopt(EX_NONE, Field(&DexoptResult::cancelled, false), cancellation_signal);
+  RunDexopt(EX_NONE, Field(&ArtdDexoptResult::cancelled, false), cancellation_signal);
 
   // This signal should be ignored.
   cancellation_signal->cancel();
diff --git a/artd/binder/com/android/server/art/DexoptResult.aidl b/artd/binder/com/android/server/art/ArtdDexoptResult.aidl
similarity index 79%
rename from artd/binder/com/android/server/art/DexoptResult.aidl
rename to artd/binder/com/android/server/art/ArtdDexoptResult.aidl
index 52df54d..6f031f2 100644
--- a/artd/binder/com/android/server/art/DexoptResult.aidl
+++ b/artd/binder/com/android/server/art/ArtdDexoptResult.aidl
@@ -21,7 +21,7 @@
  *
  * @hide
  */
-parcelable DexoptResult {
+parcelable ArtdDexoptResult {
     /** True if the operation is cancelled. */
     boolean cancelled;
     /**
@@ -35,13 +35,13 @@
      */
     long cpuTimeMs;
     /**
-     * The total size, in bytes, of the optimized artifacts, or 0 if dex2oat fails, is cancelled, or
+     * The total size, in bytes, of the dexopt artifacts, or 0 if dex2oat fails, is cancelled, or
      * is not run.
      */
     long sizeBytes;
     /**
-     * The total size, in bytes, of the previous optimized artifacts that have been replaced, or
-     * 0 if there were no previous optimized artifacts or dex2oat fails, is cancelled, or is not
+     * The total size, in bytes, of the previous dexopt artifacts that have been replaced, or
+     * 0 if there were no previous dexopt artifacts or dex2oat fails, is cancelled, or is not
      * run.
      */
     long sizeBeforeBytes;
diff --git a/artd/binder/com/android/server/art/ArtifactsPath.aidl b/artd/binder/com/android/server/art/ArtifactsPath.aidl
index f69b439..3122f0f 100644
--- a/artd/binder/com/android/server/art/ArtifactsPath.aidl
+++ b/artd/binder/com/android/server/art/ArtifactsPath.aidl
@@ -17,15 +17,15 @@
 package com.android.server.art;
 
 /**
- * Represents the path to the optimized artifacts of a dex file (i.e., ART, OAT, and VDEX files).
+ * Represents the path to the dexopt artifacts of a dex file (i.e., ART, OAT, and VDEX files).
  *
  * @hide
  */
 parcelable ArtifactsPath {
     /** The absolute path starting with '/' to the dex file (i.e., APK or JAR file). */
     @utf8InCpp String dexPath;
-    /** The instruction set of the optimized artifacts. */
+    /** The instruction set of the dexopt artifacts. */
     @utf8InCpp String isa;
-    /** Whether the optimized artifacts are in the dalvik-cache folder. */
+    /** Whether the dexopt artifacts are in the dalvik-cache folder. */
     boolean isInDalvikCache;
 }
diff --git a/artd/binder/com/android/server/art/GetOptimizationStatusResult.aidl b/artd/binder/com/android/server/art/GetDexoptStatusResult.aidl
similarity index 78%
rename from artd/binder/com/android/server/art/GetOptimizationStatusResult.aidl
rename to artd/binder/com/android/server/art/GetDexoptStatusResult.aidl
index 99a2e37..08786ca 100644
--- a/artd/binder/com/android/server/art/GetOptimizationStatusResult.aidl
+++ b/artd/binder/com/android/server/art/GetDexoptStatusResult.aidl
@@ -17,12 +17,12 @@
 package com.android.server.art;
 
 /**
- * The result of {@code IArtd.getOptimizationStatus}. Each field corresponds to a field in
- * {@code com.android.server.art.model.OptimizationStatus.DexFileOptimizationStatus}.
+ * The result of {@code IArtd.getDexoptStatus}. Each field corresponds to a field in
+ * {@code com.android.server.art.model.DexoptStatus.DexFileDexoptStatus}.
  *
  * @hide
  */
-parcelable GetOptimizationStatusResult {
+parcelable GetDexoptStatusResult {
     @utf8InCpp String compilerFilter;
     @utf8InCpp String compilationReason;
     @utf8InCpp String locationDebugString;
diff --git a/artd/binder/com/android/server/art/IArtd.aidl b/artd/binder/com/android/server/art/IArtd.aidl
index 4e45657..5121063 100644
--- a/artd/binder/com/android/server/art/IArtd.aidl
+++ b/artd/binder/com/android/server/art/IArtd.aidl
@@ -29,11 +29,11 @@
     long deleteArtifacts(in com.android.server.art.ArtifactsPath artifactsPath);
 
     /**
-     * Returns the optimization status of a dex file.
+     * Returns the dexopt status of a dex file.
      *
      * Throws fatal and non-fatal errors.
      */
-    com.android.server.art.GetOptimizationStatusResult getOptimizationStatus(
+    com.android.server.art.GetDexoptStatusResult getDexoptStatus(
             @utf8InCpp String dexFile, @utf8InCpp String instructionSet,
             @utf8InCpp String classLoaderContext);
 
@@ -140,7 +140,7 @@
      *
      * Throws fatal and non-fatal errors.
      */
-    com.android.server.art.DexoptResult dexopt(
+    com.android.server.art.ArtdDexoptResult dexopt(
             in com.android.server.art.OutputArtifacts outputArtifacts,
             @utf8InCpp String dexFile, @utf8InCpp String instructionSet,
             @nullable @utf8InCpp String classLoaderContext, @utf8InCpp String compilerFilter,
diff --git a/artd/binder/com/android/server/art/OutputArtifacts.aidl b/artd/binder/com/android/server/art/OutputArtifacts.aidl
index af3e3ce..9a53965 100644
--- a/artd/binder/com/android/server/art/OutputArtifacts.aidl
+++ b/artd/binder/com/android/server/art/OutputArtifacts.aidl
@@ -17,7 +17,7 @@
 package com.android.server.art;
 
 /**
- * Represents output optimized artifacts of a dex file (i.e., ART, OAT, and VDEX files).
+ * Represents output dexopt artifacts of a dex file (i.e., ART, OAT, and VDEX files).
  *
  * @hide
  */
diff --git a/libartservice/service/api/system-server-current.txt b/libartservice/service/api/system-server-current.txt
index cd56727..bd76173 100644
--- a/libartservice/service/api/system-server-current.txt
+++ b/libartservice/service/api/system-server-current.txt
@@ -4,26 +4,26 @@
   public final class ArtManagerLocal {
     ctor @Deprecated public ArtManagerLocal();
     ctor public ArtManagerLocal(@NonNull android.content.Context);
-    method public void addOptimizePackageDoneCallback(boolean, @NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.OptimizePackageDoneCallback);
+    method public void addDexoptDoneCallback(boolean, @NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.DexoptDoneCallback);
     method public void cancelBackgroundDexoptJob();
     method @NonNull public void clearAppProfiles(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
     method @NonNull public void clearAppProfiles(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
-    method public void clearOptimizePackagesCallback();
+    method public void clearBatchDexoptStartCallback();
     method public void clearScheduleBackgroundDexoptJobCallback();
-    method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
-    method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
+    method @NonNull public com.android.server.art.model.DeleteResult deleteDexoptArtifacts(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
+    method @NonNull public com.android.server.art.model.DeleteResult deleteDexoptArtifacts(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
+    method @NonNull public com.android.server.art.model.DexoptResult dexoptPackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.DexoptParams);
+    method @NonNull public com.android.server.art.model.DexoptResult dexoptPackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.DexoptParams, @NonNull android.os.CancellationSignal);
     method public void dump(@NonNull java.io.PrintWriter, @NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot);
     method public void dumpPackage(@NonNull java.io.PrintWriter, @NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
-    method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
-    method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
+    method @NonNull public com.android.server.art.model.DexoptStatus getDexoptStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
+    method @NonNull public com.android.server.art.model.DexoptStatus getDexoptStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
     method public int handleShellCommand(@NonNull android.os.Binder, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
     method public void onBoot(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<com.android.server.art.model.OperationProgress>);
-    method @NonNull public com.android.server.art.model.OptimizeResult optimizePackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.OptimizeParams);
-    method @NonNull public com.android.server.art.model.OptimizeResult optimizePackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.OptimizeParams, @NonNull android.os.CancellationSignal);
     method public void printShellCommandHelp(@NonNull java.io.PrintWriter);
-    method public void removeOptimizePackageDoneCallback(@NonNull com.android.server.art.ArtManagerLocal.OptimizePackageDoneCallback);
+    method public void removeDexoptDoneCallback(@NonNull com.android.server.art.ArtManagerLocal.DexoptDoneCallback);
     method public int scheduleBackgroundDexoptJob();
-    method public void setOptimizePackagesCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.OptimizePackagesCallback);
+    method public void setBatchDexoptStartCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.BatchDexoptStartCallback);
     method public void setScheduleBackgroundDexoptJobCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.ScheduleBackgroundDexoptJobCallback);
     method @NonNull public android.os.ParcelFileDescriptor snapshotAppProfile(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @Nullable String) throws com.android.server.art.ArtManagerLocal.SnapshotProfileException;
     method @NonNull public android.os.ParcelFileDescriptor snapshotBootImageProfile(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot) throws com.android.server.art.ArtManagerLocal.SnapshotProfileException;
@@ -31,12 +31,12 @@
     method public void unscheduleBackgroundDexoptJob();
   }
 
-  public static interface ArtManagerLocal.OptimizePackageDoneCallback {
-    method public void onOptimizePackageDone(@NonNull com.android.server.art.model.OptimizeResult);
+  public static interface ArtManagerLocal.BatchDexoptStartCallback {
+    method public void onBatchDexoptStart(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull com.android.server.art.model.BatchDexoptParams.Builder, @NonNull android.os.CancellationSignal);
   }
 
-  public static interface ArtManagerLocal.OptimizePackagesCallback {
-    method public void onOptimizePackagesStart(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull com.android.server.art.model.BatchOptimizeParams.Builder, @NonNull android.os.CancellationSignal);
+  public static interface ArtManagerLocal.DexoptDoneCallback {
+    method public void onDexoptDone(@NonNull com.android.server.art.model.DexoptResult);
   }
 
   public static interface ArtManagerLocal.ScheduleBackgroundDexoptJobCallback {
@@ -97,15 +97,15 @@
     field public static final int SCHEDULE_SUCCESS = 0; // 0x0
   }
 
-  public abstract class BatchOptimizeParams {
-    method @NonNull public abstract com.android.server.art.model.OptimizeParams getOptimizeParams();
+  public abstract class BatchDexoptParams {
+    method @NonNull public abstract com.android.server.art.model.DexoptParams getDexoptParams();
     method @NonNull public abstract java.util.List<java.lang.String> getPackages();
   }
 
-  public static final class BatchOptimizeParams.Builder {
-    method @NonNull public com.android.server.art.model.BatchOptimizeParams build();
-    method @NonNull public com.android.server.art.model.BatchOptimizeParams.Builder setOptimizeParams(@NonNull com.android.server.art.model.OptimizeParams);
-    method @NonNull public com.android.server.art.model.BatchOptimizeParams.Builder setPackages(@NonNull java.util.List<java.lang.String>);
+  public static final class BatchDexoptParams.Builder {
+    method @NonNull public com.android.server.art.model.BatchDexoptParams build();
+    method @NonNull public com.android.server.art.model.BatchDexoptParams.Builder setDexoptParams(@NonNull com.android.server.art.model.DexoptParams);
+    method @NonNull public com.android.server.art.model.BatchDexoptParams.Builder setPackages(@NonNull java.util.List<java.lang.String>);
   }
 
   public abstract class DeleteResult {
@@ -118,25 +118,7 @@
     method @NonNull public abstract android.os.UserHandle getUserHandle();
   }
 
-  public abstract class OperationProgress {
-    method public int getPercentage();
-  }
-
-  public abstract class OptimizationStatus {
-    method @NonNull public abstract java.util.List<com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus> getDexContainerFileOptimizationStatuses();
-  }
-
-  public abstract static class OptimizationStatus.DexContainerFileOptimizationStatus {
-    method @NonNull public abstract String getAbi();
-    method @NonNull public abstract String getCompilationReason();
-    method @NonNull public abstract String getCompilerFilter();
-    method @NonNull public abstract String getDexContainerFile();
-    method @NonNull public abstract String getLocationDebugString();
-    method public abstract boolean isPrimaryAbi();
-    method public abstract boolean isPrimaryDex();
-  }
-
-  public class OptimizeParams {
+  public class DexoptParams {
     method @NonNull public String getCompilerFilter();
     method public int getFlags();
     method public int getPriorityClass();
@@ -145,29 +127,29 @@
     field public static final String COMPILER_FILTER_NOOP = "skip";
   }
 
-  public static final class OptimizeParams.Builder {
-    ctor public OptimizeParams.Builder(@NonNull String);
-    ctor public OptimizeParams.Builder(@NonNull String, int);
-    method @NonNull public com.android.server.art.model.OptimizeParams build();
-    method @NonNull public com.android.server.art.model.OptimizeParams.Builder setCompilerFilter(@NonNull String);
-    method @NonNull public com.android.server.art.model.OptimizeParams.Builder setFlags(int);
-    method @NonNull public com.android.server.art.model.OptimizeParams.Builder setFlags(int, int);
-    method @NonNull public com.android.server.art.model.OptimizeParams.Builder setPriorityClass(int);
-    method @NonNull public com.android.server.art.model.OptimizeParams.Builder setSplitName(@Nullable String);
+  public static final class DexoptParams.Builder {
+    ctor public DexoptParams.Builder(@NonNull String);
+    ctor public DexoptParams.Builder(@NonNull String, int);
+    method @NonNull public com.android.server.art.model.DexoptParams build();
+    method @NonNull public com.android.server.art.model.DexoptParams.Builder setCompilerFilter(@NonNull String);
+    method @NonNull public com.android.server.art.model.DexoptParams.Builder setFlags(int);
+    method @NonNull public com.android.server.art.model.DexoptParams.Builder setFlags(int, int);
+    method @NonNull public com.android.server.art.model.DexoptParams.Builder setPriorityClass(int);
+    method @NonNull public com.android.server.art.model.DexoptParams.Builder setSplitName(@Nullable String);
   }
 
-  public abstract class OptimizeResult {
+  public abstract class DexoptResult {
     method public int getFinalStatus();
-    method @NonNull public abstract java.util.List<com.android.server.art.model.OptimizeResult.PackageOptimizeResult> getPackageOptimizeResults();
+    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptResult.PackageDexoptResult> getPackageDexoptResults();
     method @NonNull public abstract String getReason();
     method @NonNull public abstract String getRequestedCompilerFilter();
-    field public static final int OPTIMIZE_CANCELLED = 40; // 0x28
-    field public static final int OPTIMIZE_FAILED = 30; // 0x1e
-    field public static final int OPTIMIZE_PERFORMED = 20; // 0x14
-    field public static final int OPTIMIZE_SKIPPED = 10; // 0xa
+    field public static final int DEXOPT_CANCELLED = 40; // 0x28
+    field public static final int DEXOPT_FAILED = 30; // 0x1e
+    field public static final int DEXOPT_PERFORMED = 20; // 0x14
+    field public static final int DEXOPT_SKIPPED = 10; // 0xa
   }
 
-  public abstract static class OptimizeResult.DexContainerFileOptimizeResult {
+  public abstract static class DexoptResult.DexContainerFileDexoptResult {
     method @NonNull public abstract String getAbi();
     method @NonNull public abstract String getActualCompilerFilter();
     method public abstract long getDex2oatCpuTimeMillis();
@@ -179,12 +161,30 @@
     method public abstract boolean isPrimaryAbi();
   }
 
-  public abstract static class OptimizeResult.PackageOptimizeResult {
-    method @NonNull public abstract java.util.List<com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult> getDexContainerFileOptimizeResults();
+  public abstract static class DexoptResult.PackageDexoptResult {
+    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult> getDexContainerFileDexoptResults();
     method @NonNull public abstract String getPackageName();
     method public int getStatus();
     method public boolean hasUpdatedArtifacts();
   }
 
+  public abstract class DexoptStatus {
+    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus> getDexContainerFileDexoptStatuses();
+  }
+
+  public abstract static class DexoptStatus.DexContainerFileDexoptStatus {
+    method @NonNull public abstract String getAbi();
+    method @NonNull public abstract String getCompilationReason();
+    method @NonNull public abstract String getCompilerFilter();
+    method @NonNull public abstract String getDexContainerFile();
+    method @NonNull public abstract String getLocationDebugString();
+    method public abstract boolean isPrimaryAbi();
+    method public abstract boolean isPrimaryDex();
+  }
+
+  public abstract class OperationProgress {
+    method public int getPercentage();
+  }
+
 }
 
diff --git a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
index 12111c9..e904972 100644
--- a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
+++ b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
@@ -19,7 +19,7 @@
 import static com.android.server.art.DexUseManagerLocal.SecondaryDexInfo;
 import static com.android.server.art.PrimaryDexUtils.DetailedPrimaryDexInfo;
 import static com.android.server.art.PrimaryDexUtils.PrimaryDexInfo;
-import static com.android.server.art.ReasonMapping.BatchOptimizeReason;
+import static com.android.server.art.ReasonMapping.BatchDexoptReason;
 import static com.android.server.art.ReasonMapping.BootReason;
 import static com.android.server.art.Utils.Abi;
 import static com.android.server.art.model.ArtFlags.ClearProfileFlags;
@@ -27,7 +27,7 @@
 import static com.android.server.art.model.ArtFlags.GetStatusFlags;
 import static com.android.server.art.model.ArtFlags.ScheduleStatus;
 import static com.android.server.art.model.Config.Callback;
-import static com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus;
+import static com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus;
 
 import android.R;
 import android.annotation.CallbackExecutor;
@@ -54,13 +54,13 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.LocalManagerRegistry;
 import com.android.server.art.model.ArtFlags;
-import com.android.server.art.model.BatchOptimizeParams;
+import com.android.server.art.model.BatchDexoptParams;
 import com.android.server.art.model.Config;
 import com.android.server.art.model.DeleteResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
+import com.android.server.art.model.DexoptStatus;
 import com.android.server.art.model.OperationProgress;
-import com.android.server.art.model.OptimizationStatus;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.AndroidPackageSplit;
@@ -149,7 +149,7 @@
     }
 
     /**
-     * Deletes optimized artifacts of a package.
+     * Deletes dexopt artifacts of a package.
      *
      * Uses the default flags ({@link ArtFlags#defaultDeleteFlags()}).
      *
@@ -158,18 +158,18 @@
      *         (e.g., an internal logic error).
      */
     @NonNull
-    public DeleteResult deleteOptimizedArtifacts(
+    public DeleteResult deleteDexoptArtifacts(
             @NonNull PackageManagerLocal.FilteredSnapshot snapshot, @NonNull String packageName) {
-        return deleteOptimizedArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
+        return deleteDexoptArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
     }
 
     /**
      * Same as above, but allows to specify flags.
      *
-     * @see #deleteOptimizedArtifacts(PackageManagerLocal.FilteredSnapshot, String)
+     * @see #deleteDexoptArtifacts(PackageManagerLocal.FilteredSnapshot, String)
      */
     @NonNull
-    public DeleteResult deleteOptimizedArtifacts(
+    public DeleteResult deleteDexoptArtifacts(
             @NonNull PackageManagerLocal.FilteredSnapshot snapshot, @NonNull String packageName,
             @DeleteFlags int flags) {
         if ((flags & ArtFlags.FLAG_FOR_PRIMARY_DEX) == 0
@@ -215,7 +215,7 @@
     }
 
     /**
-     * Returns the optimization status of a package.
+     * Returns the dexopt status of a package.
      *
      * Uses the default flags ({@link ArtFlags#defaultGetStatusFlags()}).
      *
@@ -224,20 +224,19 @@
      *         (e.g., an internal logic error).
      */
     @NonNull
-    public OptimizationStatus getOptimizationStatus(
+    public DexoptStatus getDexoptStatus(
             @NonNull PackageManagerLocal.FilteredSnapshot snapshot, @NonNull String packageName) {
-        return getOptimizationStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
+        return getDexoptStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
     }
 
     /**
      * Same as above, but allows to specify flags.
      *
-     * @see #getOptimizationStatus(PackageManagerLocal.FilteredSnapshot, String)
+     * @see #getDexoptStatus(PackageManagerLocal.FilteredSnapshot, String)
      */
     @NonNull
-    public OptimizationStatus getOptimizationStatus(
-            @NonNull PackageManagerLocal.FilteredSnapshot snapshot, @NonNull String packageName,
-            @GetStatusFlags int flags) {
+    public DexoptStatus getDexoptStatus(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull String packageName, @GetStatusFlags int flags) {
         if ((flags & ArtFlags.FLAG_FOR_PRIMARY_DEX) == 0
                 && (flags & ArtFlags.FLAG_FOR_SECONDARY_DEX) == 0) {
             throw new IllegalArgumentException("Nothing to check");
@@ -247,7 +246,7 @@
         AndroidPackage pkg = Utils.getPackageOrThrow(pkgState);
 
         try {
-            List<DexContainerFileOptimizationStatus> statuses = new ArrayList<>();
+            List<DexContainerFileDexoptStatus> statuses = new ArrayList<>();
 
             if ((flags & ArtFlags.FLAG_FOR_PRIMARY_DEX) != 0) {
                 for (DetailedPrimaryDexInfo dexInfo :
@@ -257,17 +256,16 @@
                     }
                     for (Abi abi : Utils.getAllAbis(pkgState)) {
                         try {
-                            GetOptimizationStatusResult result =
-                                    mInjector.getArtd().getOptimizationStatus(dexInfo.dexPath(),
-                                            abi.isa(), dexInfo.classLoaderContext());
-                            statuses.add(DexContainerFileOptimizationStatus.create(
-                                    dexInfo.dexPath(), true /* isPrimaryDex */, abi.isPrimaryAbi(),
-                                    abi.name(), result.compilerFilter, result.compilationReason,
+                            GetDexoptStatusResult result = mInjector.getArtd().getDexoptStatus(
+                                    dexInfo.dexPath(), abi.isa(), dexInfo.classLoaderContext());
+                            statuses.add(DexContainerFileDexoptStatus.create(dexInfo.dexPath(),
+                                    true /* isPrimaryDex */, abi.isPrimaryAbi(), abi.name(),
+                                    result.compilerFilter, result.compilationReason,
                                     result.locationDebugString));
                         } catch (ServiceSpecificException e) {
-                            statuses.add(DexContainerFileOptimizationStatus.create(
-                                    dexInfo.dexPath(), true /* isPrimaryDex */, abi.isPrimaryAbi(),
-                                    abi.name(), "error", "error", e.getMessage()));
+                            statuses.add(DexContainerFileDexoptStatus.create(dexInfo.dexPath(),
+                                    true /* isPrimaryDex */, abi.isPrimaryAbi(), abi.name(),
+                                    "error", "error", e.getMessage()));
                         }
                     }
                 }
@@ -278,23 +276,22 @@
                         mInjector.getDexUseManager().getSecondaryDexInfo(packageName)) {
                     for (Abi abi : Utils.getAllAbisForNames(dexInfo.abiNames(), pkgState)) {
                         try {
-                            GetOptimizationStatusResult result =
-                                    mInjector.getArtd().getOptimizationStatus(dexInfo.dexPath(),
-                                            abi.isa(), dexInfo.classLoaderContext());
-                            statuses.add(DexContainerFileOptimizationStatus.create(
-                                    dexInfo.dexPath(), false /* isPrimaryDex */, abi.isPrimaryAbi(),
-                                    abi.name(), result.compilerFilter, result.compilationReason,
+                            GetDexoptStatusResult result = mInjector.getArtd().getDexoptStatus(
+                                    dexInfo.dexPath(), abi.isa(), dexInfo.classLoaderContext());
+                            statuses.add(DexContainerFileDexoptStatus.create(dexInfo.dexPath(),
+                                    false /* isPrimaryDex */, abi.isPrimaryAbi(), abi.name(),
+                                    result.compilerFilter, result.compilationReason,
                                     result.locationDebugString));
                         } catch (ServiceSpecificException e) {
-                            statuses.add(DexContainerFileOptimizationStatus.create(
-                                    dexInfo.dexPath(), false /* isPrimaryDex */, abi.isPrimaryAbi(),
-                                    abi.name(), "error", "error", e.getMessage()));
+                            statuses.add(DexContainerFileDexoptStatus.create(dexInfo.dexPath(),
+                                    false /* isPrimaryDex */, abi.isPrimaryAbi(), abi.name(),
+                                    "error", "error", e.getMessage()));
                         }
                     }
                 }
             }
 
-            return OptimizationStatus.create(statuses);
+            return DexoptStatus.create(statuses);
         } catch (RemoteException e) {
             throw new IllegalStateException("An error occurred when calling artd", e);
         }
@@ -365,53 +362,52 @@
     }
 
     /**
-     * Optimizes a package. The time this operation takes ranges from a few milliseconds to several
+     * Dexopts a package. The time this operation takes ranges from a few milliseconds to several
      * minutes, depending on the params and the code size of the package.
      *
      * When this operation ends (either completed or cancelled), callbacks added by {@link
-     * #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} are called.
+     * #addDexoptDoneCallback(Executor, DexoptDoneCallback)} are called.
      *
      * @throws IllegalArgumentException if the package is not found or the params are illegal
      * @throws IllegalStateException if the operation encounters an error that should never happen
      *         (e.g., an internal logic error).
      */
     @NonNull
-    public OptimizeResult optimizePackage(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-            @NonNull String packageName, @NonNull OptimizeParams params) {
+    public DexoptResult dexoptPackage(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull String packageName, @NonNull DexoptParams params) {
         var cancellationSignal = new CancellationSignal();
-        return optimizePackage(snapshot, packageName, params, cancellationSignal);
+        return dexoptPackage(snapshot, packageName, params, cancellationSignal);
     }
 
     /**
      * Same as above, but supports cancellation.
      *
-     * @see #optimizePackage(PackageManagerLocal.FilteredSnapshot, String, OptimizeParams)
+     * @see #dexoptPackage(PackageManagerLocal.FilteredSnapshot, String, DexoptParams)
      */
     @NonNull
-    public OptimizeResult optimizePackage(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-            @NonNull String packageName, @NonNull OptimizeParams params,
+    public DexoptResult dexoptPackage(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull String packageName, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         return mInjector.getDexOptHelper().dexopt(
                 snapshot, List.of(packageName), params, cancellationSignal, Runnable::run);
     }
 
     /**
-     * Resets the optimization state of the package as if the package is newly installed.
+     * Resets the dexopt state of the package as if the package is newly installed.
      *
      * More specifically, it clears reference profiles, current profiles, and any code compiled from
      * those local profiles. If there is an external profile (e.g., a cloud profile), the code
      * compiled from that profile will be kept.
      *
-     * For secondary dex files, it also clears all optimized artifacts.
+     * For secondary dex files, it also clears all dexopt artifacts.
      *
      * @hide
      */
     @NonNull
-    public OptimizeResult resetOptimizationStatus(
-            @NonNull PackageManagerLocal.FilteredSnapshot snapshot, @NonNull String packageName,
-            @NonNull CancellationSignal cancellationSignal) {
+    public DexoptResult resetDexoptStatus(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull String packageName, @NonNull CancellationSignal cancellationSignal) {
         // We must delete the artifacts for primary dex files beforehand rather than relying on
-        // `optimizePackage` to replace them because:
+        // `dexoptPackage` to replace them because:
         // - If dexopt is not needed after the deletion, then we shouldn't run dexopt at all. For
         //   example, when we have a DM file that contains a VDEX file but doesn't contain a cloud
         //   profile, this happens. Note that this is more about correctness rather than
@@ -419,27 +415,26 @@
         // - We don't want the existing artifacts to affect dexopt. For example, the existing VDEX
         //   file should not be an input VDEX.
         //
-        // We delete the artifacts for secondary dex files and `optimizePackage` won't re-generate
-        // them because `optimizePackage` for `REASON_INSTALL` is for primary dex only. This is
+        // We delete the artifacts for secondary dex files and `dexoptPackage` won't re-generate
+        // them because `dexoptPackage` for `REASON_INSTALL` is for primary dex only. This is
         // intentional because secondary dex files are supposed to be unknown at install time.
-        deleteOptimizedArtifacts(snapshot, packageName);
+        deleteDexoptArtifacts(snapshot, packageName);
         clearAppProfiles(snapshot, packageName);
 
         // Re-generate artifacts for primary dex files if needed.
-        return optimizePackage(snapshot, packageName,
-                new OptimizeParams.Builder(ReasonMapping.REASON_INSTALL).build(),
-                cancellationSignal);
+        return dexoptPackage(snapshot, packageName,
+                new DexoptParams.Builder(ReasonMapping.REASON_INSTALL).build(), cancellationSignal);
     }
 
     /**
-     * Runs batch optimization for the given reason.
+     * Runs batch dexopt for the given reason.
      *
      * This is called by ART Service automatically during boot / background dexopt.
      *
      * The list of packages and options are determined by {@code reason}, and can be overridden by
-     * {@link #setOptimizePackagesCallback(Executor, OptimizePackagesCallback)}.
+     * {@link #setBatchDexoptStartCallback(Executor, BatchDexoptStartCallback)}.
      *
-     * The optimization is done in a thread pool. The number of packages being optimized
+     * The dexopt is done in a thread pool. The number of packages being dexopted
      * simultaneously can be configured by system property {@code pm.dexopt.<reason>.concurrency}
      * (e.g., {@code pm.dexopt.bg-dexopt.concurrency=4}), and the number of threads for each {@code
      * dex2oat} invocation can be configured by system property {@code dalvik.vm.*dex2oat-threads}
@@ -449,7 +444,7 @@
      * threads.
      *
      * When this operation ends (either completed or cancelled), callbacks added by {@link
-     * #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} are called.
+     * #addDexoptDoneCallback(Executor, DexoptDoneCallback)} are called.
      *
      * If the storage is nearly low, and {@code reason} is {@link ReasonMapping#REASON_BG_DEXOPT},
      * it may also downgrade some inactive packages to a less optimized compiler filter, specified
@@ -459,7 +454,7 @@
      * is the Storage Manager's low space threshold plus {@link
      * #DOWNGRADE_THRESHOLD_ABOVE_LOW_BYTES}. The concurrency can be configured by system property
      * {@code pm.dexopt.inactive.concurrency}. The packages in the list provided by
-     * {@link OptimizePackagesCallback} for {@link ReasonMapping#REASON_BG_DEXOPT} are never
+     * {@link BatchDexoptStartCallback} for {@link ReasonMapping#REASON_BG_DEXOPT} are never
      * downgraded.
      *
      * @param snapshot the snapshot from {@link PackageManagerLocal} to operate on
@@ -469,31 +464,31 @@
      * @param progressCallback called repeatedly whenever there is an update on the progress
      * @throws IllegalStateException if the operation encounters an error that should never happen
      *         (e.g., an internal logic error), or the callback set by {@link
-     *         #setOptimizePackagesCallback(Executor, OptimizePackagesCallback)} provides invalid
+     *         #setBatchDexoptStartCallback(Executor, BatchDexoptStartCallback)} provides invalid
      *         params.
      *
      * @hide
      */
     @NonNull
-    public OptimizeResult optimizePackages(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-            @NonNull @BatchOptimizeReason String reason,
+    public DexoptResult dexoptPackages(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull @BatchDexoptReason String reason,
             @NonNull CancellationSignal cancellationSignal,
             @Nullable @CallbackExecutor Executor progressCallbackExecutor,
             @Nullable Consumer<OperationProgress> progressCallback) {
         List<String> defaultPackages =
                 Collections.unmodifiableList(getDefaultPackages(snapshot, reason));
-        OptimizeParams defaultOptimizeParams = new OptimizeParams.Builder(reason).build();
-        var builder = new BatchOptimizeParams.Builder(defaultPackages, defaultOptimizeParams);
-        Callback<OptimizePackagesCallback, Void> callback =
-                mInjector.getConfig().getOptimizePackagesCallback();
+        DexoptParams defaultDexoptParams = new DexoptParams.Builder(reason).build();
+        var builder = new BatchDexoptParams.Builder(defaultPackages, defaultDexoptParams);
+        Callback<BatchDexoptStartCallback, Void> callback =
+                mInjector.getConfig().getBatchDexoptStartCallback();
         if (callback != null) {
             Utils.executeAndWait(callback.executor(), () -> {
-                callback.get().onOptimizePackagesStart(
+                callback.get().onBatchDexoptStart(
                         snapshot, reason, defaultPackages, builder, cancellationSignal);
             });
         }
-        BatchOptimizeParams params = builder.build();
-        Utils.check(params.getOptimizeParams().getReason().equals(reason));
+        BatchDexoptParams params = builder.build();
+        Utils.check(params.getDexoptParams().getReason().equals(reason));
 
         ExecutorService dexoptExecutor =
                 Executors.newFixedThreadPool(ReasonMapping.getConcurrencyForReason(reason));
@@ -503,9 +498,9 @@
                         new HashSet<>(params.getPackages()) /* excludedPackages */,
                         cancellationSignal, dexoptExecutor);
             }
-            Log.i(TAG, "Optimizing packages");
+            Log.i(TAG, "Dexopting packages");
             return mInjector.getDexOptHelper().dexopt(snapshot, params.getPackages(),
-                    params.getOptimizeParams(), cancellationSignal, dexoptExecutor,
+                    params.getDexoptParams(), cancellationSignal, dexoptExecutor,
                     progressCallbackExecutor, progressCallback);
         } finally {
             dexoptExecutor.shutdown();
@@ -513,26 +508,26 @@
     }
 
     /**
-     * Overrides the default params for {@link #optimizePackages}. This method is thread-safe.
+     * Overrides the default params for {@link #dexoptPackages}. This method is thread-safe.
      *
-     * This method gives users the opportunity to change the behavior of {@link #optimizePackages},
+     * This method gives users the opportunity to change the behavior of {@link #dexoptPackages},
      * which is called by ART Service automatically during boot / background dexopt.
      *
      * If this method is not called, the default list of packages and options determined by {@code
      * reason} will be used.
      */
-    public void setOptimizePackagesCallback(@NonNull @CallbackExecutor Executor executor,
-            @NonNull OptimizePackagesCallback callback) {
-        mInjector.getConfig().setOptimizePackagesCallback(executor, callback);
+    public void setBatchDexoptStartCallback(@NonNull @CallbackExecutor Executor executor,
+            @NonNull BatchDexoptStartCallback callback) {
+        mInjector.getConfig().setBatchDexoptStartCallback(executor, callback);
     }
 
     /**
      * Clears the callback set by {@link
-     * #setOptimizePackagesCallback(Executor, OptimizePackagesCallback)}. This method is
+     * #setBatchDexoptStartCallback(Executor, BatchDexoptStartCallback)}. This method is
      * thread-safe.
      */
-    public void clearOptimizePackagesCallback() {
-        mInjector.getConfig().clearOptimizePackagesCallback();
+    public void clearBatchDexoptStartCallback() {
+        mInjector.getConfig().clearBatchDexoptStartCallback();
     }
 
     /**
@@ -560,10 +555,10 @@
      * window</i>. For information about <i>maintenance window</i>, see
      * https://developer.android.com/training/monitoring-device-state/doze-standby.
      *
-     * See {@link #optimizePackages} for how to customize the behavior of the job.
+     * See {@link #dexoptPackages} for how to customize the behavior of the job.
      *
      * When the job ends (either completed or cancelled), the result is sent to the callbacks added
-     * by {@link #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} with the
+     * by {@link #addDexoptDoneCallback(Executor, DexoptDoneCallback)} with the
      * reason {@link ReasonMapping#REASON_BG_DEXOPT}.
      */
     public @ScheduleStatus int scheduleBackgroundDexoptJob() {
@@ -578,8 +573,8 @@
      *
      * If the job is already started by the job scheduler and is running, it will be cancelled
      * immediately, and the result sent to the callbacks added by {@link
-     * #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} will contain {@link
-     * OptimizeResult#OPTIMIZE_CANCELLED}. Note that a job started by {@link
+     * #addDexoptDoneCallback(Executor, DexoptDoneCallback)} will contain {@link
+     * DexoptResult#DEXOPT_CANCELLED}. Note that a job started by {@link
      * #startBackgroundDexoptJob()} will not be cancelled by this method.
      */
     public void unscheduleBackgroundDexoptJob() {
@@ -611,10 +606,10 @@
      * constraints described in {@link #scheduleBackgroundDexoptJob()}, and hence will not be
      * cancelled when they aren't met.
      *
-     * See {@link #optimizePackages} for how to customize the behavior of the job.
+     * See {@link #dexoptPackages} for how to customize the behavior of the job.
      *
      * When the job ends (either completed or cancelled), the result is sent to the callbacks added
-     * by {@link #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} with the
+     * by {@link #addDexoptDoneCallback(Executor, DexoptDoneCallback)} with the
      * reason {@link ReasonMapping#REASON_BG_DEXOPT}.
      */
     public void startBackgroundDexoptJob() {
@@ -627,15 +622,15 @@
      * blocking.
      *
      * The result sent to the callbacks added by {@link
-     * #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)} will contain {@link
-     * OptimizeResult#OPTIMIZE_CANCELLED}.
+     * #addDexoptDoneCallback(Executor, DexoptDoneCallback)} will contain {@link
+     * DexoptResult#DEXOPT_CANCELLED}.
      */
     public void cancelBackgroundDexoptJob() {
         mInjector.getBackgroundDexOptJob().cancel();
     }
 
     /**
-     * Adds a global listener that listens to any result of optimizing package(s), no matter run
+     * Adds a global listener that listens to any result of dexopting package(s), no matter run
      * manually or automatically. Calling this method multiple times with different callbacks is
      * allowed. Callbacks are executed in the same order as the one in which they were added. This
      * method is thread-safe.
@@ -645,20 +640,18 @@
      *         don't have any update.
      * @throws IllegalStateException if the same callback instance is already added
      */
-    public void addOptimizePackageDoneCallback(boolean onlyIncludeUpdates,
-            @NonNull @CallbackExecutor Executor executor,
-            @NonNull OptimizePackageDoneCallback callback) {
-        mInjector.getConfig().addOptimizePackageDoneCallback(
-                onlyIncludeUpdates, executor, callback);
+    public void addDexoptDoneCallback(boolean onlyIncludeUpdates,
+            @NonNull @CallbackExecutor Executor executor, @NonNull DexoptDoneCallback callback) {
+        mInjector.getConfig().addDexoptDoneCallback(onlyIncludeUpdates, executor, callback);
     }
 
     /**
      * Removes the listener added by {@link
-     * #addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)}. Does nothing if the
+     * #addDexoptDoneCallback(Executor, DexoptDoneCallback)}. Does nothing if the
      * callback was not added. This method is thread-safe.
      */
-    public void removeOptimizePackageDoneCallback(@NonNull OptimizePackageDoneCallback callback) {
-        mInjector.getConfig().removeOptimizePackageDoneCallback(callback);
+    public void removeDexoptDoneCallback(@NonNull DexoptDoneCallback callback) {
+        mInjector.getConfig().removeDexoptDoneCallback(callback);
     }
 
     /**
@@ -753,7 +746,7 @@
         snapshot.getPackageStates().forEach((packageName, appPkgState) -> {
             // Hibernating apps can still provide useful profile contents, so skip the hibernation
             // check.
-            if (Utils.canOptimizePackage(appPkgState, null /* appHibernationManager */)) {
+            if (Utils.canDexoptPackage(appPkgState, null /* appHibernationManager */)) {
                 AndroidPackage appPkg = Utils.getPackageOrThrow(appPkgState);
                 for (PrimaryDexInfo appDexInfo : PrimaryDexUtils.getDexInfo(appPkg)) {
                     if (!appDexInfo.hasCode()) {
@@ -784,19 +777,19 @@
     /**
      * Notifies ART Service that this is a boot that falls into one of the categories listed in
      * {@link BootReason}. The current behavior is that ART Service goes through all recently used
-     * packages and optimizes those that are not optimized. This might change in the future.
+     * packages and dexopts those that are not dexopted. This might change in the future.
      *
      * This method is blocking. It takes about 30 seconds to a few minutes. During execution, {@code
      * progressCallback} is repeatedly called whenever there is an update on the progress.
      *
-     * See {@link #optimizePackages} for how to customize the behavior.
+     * See {@link #dexoptPackages} for how to customize the behavior.
      */
     public void onBoot(@NonNull @BootReason String bootReason,
             @Nullable @CallbackExecutor Executor progressCallbackExecutor,
             @Nullable Consumer<OperationProgress> progressCallback) {
         try (var snapshot = mInjector.getPackageManagerLocal().withFilteredSnapshot()) {
-            optimizePackages(snapshot, bootReason, new CancellationSignal(),
-                    progressCallbackExecutor, progressCallback);
+            dexoptPackages(snapshot, bootReason, new CancellationSignal(), progressCallbackExecutor,
+                    progressCallback);
         }
     }
 
@@ -829,12 +822,12 @@
     }
 
     /**
-     * Should be used by {@link BackgroundDexOptJobService} ONLY.
+     * Should be used by {@link BackgroundDexoptJobService} ONLY.
      *
      * @hide
      */
     @NonNull
-    BackgroundDexOptJob getBackgroundDexOptJob() {
+    BackgroundDexoptJob getBackgroundDexOptJob() {
         return mInjector.getBackgroundDexOptJob();
     }
 
@@ -849,7 +842,7 @@
             if (!packages.isEmpty()) {
                 Log.i(TAG, "Storage is low. Downgrading inactive packages");
                 mInjector.getDexOptHelper().dexopt(snapshot, packages,
-                        new OptimizeParams.Builder(ReasonMapping.REASON_INACTIVE).build(),
+                        new DexoptParams.Builder(ReasonMapping.REASON_INACTIVE).build(),
                         cancellationSignal, executor, null /* processCallbackExecutor */,
                         null /* progressCallback */);
             } else {
@@ -877,8 +870,7 @@
         // Filter out hibernating packages even if the reason is REASON_INACTIVE. This is because
         // artifacts for hibernating packages are already deleted.
         Stream<PackageState> packages = snapshot.getPackageStates().values().stream().filter(
-                pkgState
-                -> Utils.canOptimizePackage(pkgState, mInjector.getAppHibernationManager()));
+                pkgState -> Utils.canDexoptPackage(pkgState, mInjector.getAppHibernationManager()));
         switch (reason) {
             case ReasonMapping.REASON_BOOT_AFTER_MAINLINE_UPDATE:
                 packages = packages.filter(
@@ -901,7 +893,7 @@
     private Stream<PackageState> filterAndSortByLastActiveTime(
             @NonNull Stream<PackageState> packages, boolean keepRecent, boolean descending) {
         // "pm.dexopt.downgrade_after_inactive_days" is repurposed to also determine whether to
-        // optimize a package.
+        // dexopt a package.
         long inactiveMs = TimeUnit.DAYS.toMillis(SystemProperties.getInt(
                 "pm.dexopt.downgrade_after_inactive_days", Integer.MAX_VALUE /* def */));
         long currentTimeMs = mInjector.getCurrentTimeMillis();
@@ -954,19 +946,19 @@
 
     /** @hide */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-    public interface OptimizePackagesCallback {
+    public interface BatchDexoptStartCallback {
         /**
-         * Mutates {@code builder} to override the default params for {@link #optimizePackages}. It
+         * Mutates {@code builder} to override the default params for {@link #dexoptPackages}. It
          * must ignore unknown reasons because more reasons may be added in the future.
          *
-         * This is called before the start of any automatic package optimization (i.e., not
-         * including package optimization initiated by the {@link #optimizePackage} API call).
+         * This is called before the start of any automatic package dexopt (i.e., not
+         * including package dexopt initiated by the {@link #dexoptPackage} API call).
          *
          * If {@code builder.setPackages} is not called, {@code defaultPackages} will be used as the
-         * list of packages to optimize.
+         * list of packages to dexopt.
          *
-         * If {@code builder.setOptimizeParams} is not called, the default params built from {@code
-         * new OptimizeParams.Builder(reason)} will to used as the params for optimizing each
+         * If {@code builder.setDexoptParams} is not called, the default params built from {@code
+         * new DexoptParams.Builder(reason)} will to used as the params for dexopting each
          * package.
          *
          * Additionally, {@code cancellationSignal.cancel()} can be called to cancel this operation.
@@ -976,11 +968,11 @@
          * https://developer.android.com/training/monitoring-device-state/doze-standby.
          *
          * Changing the reason is not allowed. Doing so will result in {@link IllegalStateException}
-         * when {@link #optimizePackages} is called.
+         * when {@link #dexoptPackages} is called.
          */
-        void onOptimizePackagesStart(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-                @NonNull @BatchOptimizeReason String reason, @NonNull List<String> defaultPackages,
-                @NonNull BatchOptimizeParams.Builder builder,
+        void onBatchDexoptStart(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+                @NonNull @BatchDexoptReason String reason, @NonNull List<String> defaultPackages,
+                @NonNull BatchDexoptParams.Builder builder,
                 @NonNull CancellationSignal cancellationSignal);
     }
 
@@ -997,9 +989,9 @@
          * Setting {@link JobInfo.Builder#setRequiresStorageNotLow(boolean)} is not allowed. Doing
          * so will result in {@link IllegalStateException} when {@link
          * #scheduleBackgroundDexoptJob()} is called. ART Service has its own storage check, which
-         * skips package optimization when the storage is low. The storage check is enabled by
+         * skips package dexopt when the storage is low. The storage check is enabled by
          * default for background dexopt jobs. {@link
-         * #setOptimizePackagesCallback(Executor, OptimizePackagesCallback)} can be used to disable
+         * #setBatchDexoptStartCallback(Executor, BatchDexoptStartCallback)} can be used to disable
          * the storage check by clearing the {@link ArtFlags#FLAG_SKIP_IF_STORAGE_LOW} flag.
          */
         void onOverrideJobInfo(@NonNull JobInfo.Builder builder);
@@ -1007,8 +999,8 @@
 
     /** @hide */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-    public interface OptimizePackageDoneCallback {
-        void onOptimizePackageDone(@NonNull OptimizeResult result);
+    public interface DexoptDoneCallback {
+        void onDexoptDone(@NonNull DexoptResult result);
     }
 
     /**
@@ -1033,7 +1025,7 @@
         @Nullable private final Context mContext;
         @Nullable private final PackageManagerLocal mPackageManagerLocal;
         @Nullable private final Config mConfig;
-        @Nullable private final BackgroundDexOptJob mBgDexOptJob;
+        @Nullable private final BackgroundDexoptJob mBgDexOptJob;
 
         Injector(@NonNull ArtManagerLocal artManagerLocal, @Nullable Context context) {
             mContext = context;
@@ -1042,7 +1034,7 @@
                 mPackageManagerLocal = Objects.requireNonNull(
                         LocalManagerRegistry.getManager(PackageManagerLocal.class));
                 mConfig = new Config();
-                mBgDexOptJob = new BackgroundDexOptJob(context, artManagerLocal, mConfig);
+                mBgDexOptJob = new BackgroundDexoptJob(context, artManagerLocal, mConfig);
 
                 // Call the getters for various dependencies, to ensure correct initialization
                 // order.
@@ -1075,8 +1067,8 @@
         }
 
         @NonNull
-        public DexOptHelper getDexOptHelper() {
-            return new DexOptHelper(getContext(), getConfig());
+        public DexoptHelper getDexOptHelper() {
+            return new DexoptHelper(getContext(), getConfig());
         }
 
         @NonNull
@@ -1090,7 +1082,7 @@
         }
 
         @NonNull
-        public BackgroundDexOptJob getBackgroundDexOptJob() {
+        public BackgroundDexoptJob getBackgroundDexOptJob() {
             return Objects.requireNonNull(mBgDexOptJob);
         }
 
diff --git a/libartservice/service/java/com/android/server/art/ArtShellCommand.java b/libartservice/service/java/com/android/server/art/ArtShellCommand.java
index 923b404..79d5edb 100644
--- a/libartservice/service/java/com/android/server/art/ArtShellCommand.java
+++ b/libartservice/service/java/com/android/server/art/ArtShellCommand.java
@@ -20,11 +20,11 @@
 
 import static com.android.server.art.ArtManagerLocal.SnapshotProfileException;
 import static com.android.server.art.PrimaryDexUtils.PrimaryDexInfo;
-import static com.android.server.art.model.ArtFlags.OptimizeFlags;
-import static com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
-import static com.android.server.art.model.OptimizeResult.OptimizeStatus;
-import static com.android.server.art.model.OptimizeResult.PackageOptimizeResult;
+import static com.android.server.art.model.ArtFlags.DexoptFlags;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
+import static com.android.server.art.model.DexoptResult.DexoptResultStatus;
+import static com.android.server.art.model.DexoptResult.PackageDexoptResult;
+import static com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus;
 
 import android.annotation.NonNull;
 import android.os.Binder;
@@ -43,10 +43,10 @@
 import com.android.modules.utils.BasicShellCommandHandler;
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.DeleteResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
+import com.android.server.art.model.DexoptStatus;
 import com.android.server.art.model.OperationProgress;
-import com.android.server.art.model.OptimizationStatus;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
@@ -126,22 +126,22 @@
         enforceRoot();
         String subcmd = getNextArgRequired();
         switch (subcmd) {
-            case "delete-optimized-artifacts": {
-                DeleteResult result = mArtManagerLocal.deleteOptimizedArtifacts(
+            case "delete-dexopt-artifacts": {
+                DeleteResult result = mArtManagerLocal.deleteDexoptArtifacts(
                         snapshot, getNextArgRequired(), ArtFlags.defaultDeleteFlags());
                 pw.printf("Freed %d bytes\n", result.getFreedBytes());
                 return 0;
             }
-            case "get-optimization-status": {
-                OptimizationStatus optimizationStatus = mArtManagerLocal.getOptimizationStatus(
+            case "get-dexopt-status": {
+                DexoptStatus dexoptStatus = mArtManagerLocal.getDexoptStatus(
                         snapshot, getNextArgRequired(), ArtFlags.defaultGetStatusFlags());
-                pw.println(optimizationStatus);
+                pw.println(dexoptStatus);
                 return 0;
             }
-            case "optimize-package": {
-                var paramsBuilder = new OptimizeParams.Builder("cmdline");
+            case "dexopt-package": {
+                var paramsBuilder = new DexoptParams.Builder("cmdline");
                 String opt;
-                @OptimizeFlags int scopeFlags = 0;
+                @DexoptFlags int scopeFlags = 0;
                 boolean forSingleSplit = false;
                 boolean reset = false;
                 while ((opt = getNextOption()) != null) {
@@ -192,30 +192,30 @@
                                     | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES);
                 }
 
-                OptimizeResult result;
+                DexoptResult result;
                 try (var signal = new WithCancellationSignal(pw)) {
                     if (reset) {
-                        result = mArtManagerLocal.resetOptimizationStatus(
+                        result = mArtManagerLocal.resetDexoptStatus(
                                 snapshot, getNextArgRequired(), signal.get());
                     } else {
-                        result = mArtManagerLocal.optimizePackage(snapshot, getNextArgRequired(),
+                        result = mArtManagerLocal.dexoptPackage(snapshot, getNextArgRequired(),
                                 paramsBuilder.build(), signal.get());
                     }
                 }
-                printOptimizeResult(pw, result);
+                printDexoptResult(pw, result);
                 return 0;
             }
-            case "optimize-packages": {
-                OptimizeResult result;
+            case "dexopt-packages": {
+                DexoptResult result;
                 ExecutorService executor = Executors.newSingleThreadExecutor();
                 try (var signal = new WithCancellationSignal(pw)) {
-                    result = mArtManagerLocal.optimizePackages(
+                    result = mArtManagerLocal.dexoptPackages(
                             snapshot, getNextArgRequired(), signal.get(), executor, progress -> {
                                 pw.println(String.format(
-                                        "Optimizing apps: %d%%", progress.getPercentage()));
+                                        "Dexopting apps: %d%%", progress.getPercentage()));
                                 pw.flush();
                             });
-                    Utils.executeAndWait(executor, () -> printOptimizeResult(pw, result));
+                    Utils.executeAndWait(executor, () -> printDexoptResult(pw, result));
                 } finally {
                     executor.shutdown();
                 }
@@ -374,40 +374,40 @@
         pw.println("  no stability guarantees for them.");
         pw.println();
         pw.println("  Supported sub-commands:");
-        pw.println("  delete-optimized-artifacts PACKAGE_NAME");
-        pw.println("    Delete the optimized artifacts of both primary dex files and secondary");
+        pw.println("  delete-dexopt-artifacts PACKAGE_NAME");
+        pw.println("    Delete the dexopt artifacts of both primary dex files and secondary");
         pw.println("    dex files of a package.");
-        pw.println("  get-optimization-status PACKAGE_NAME");
-        pw.println("    Print the optimization status of both primary dex files and secondary dex");
+        pw.println("  get-dexopt-status PACKAGE_NAME");
+        pw.println("    Print the dexopt status of both primary dex files and secondary dex");
         pw.println("    files of a package.");
-        pw.println("  optimize-package [-m COMPILER_FILTER] [-f] [--primary-dex]");
+        pw.println("  dexopt-package [-m COMPILER_FILTER] [-f] [--primary-dex]");
         pw.println("      [--secondary-dex] [--include-dependencies] [--split SPLIT_NAME]");
         pw.println("      PACKAGE_NAME");
-        pw.println("    Optimize a package.");
+        pw.println("    Dexopt a package.");
         pw.println("    If none of '--primary-dex', '--secondary-dex', and");
-        pw.println("    '--include-dependencies' is set, the command optimizes all of them.");
+        pw.println("    '--include-dependencies' is set, the command dexopts all of them.");
         pw.println("    The command prints a job ID, which can be used to cancel the job using");
         pw.println("    the 'cancel' command.");
         pw.println("    Options:");
         pw.println("      -m Set the compiler filter.");
         pw.println("      -f Force compilation.");
-        pw.println("      --primary-dex Optimize primary dex files.");
-        pw.println("      --secondary-dex Optimize secondary dex files.");
+        pw.println("      --primary-dex Dexopt primary dex files.");
+        pw.println("      --secondary-dex Dexopt secondary dex files.");
         pw.println("      --include-dependencies Include dependencies.");
-        pw.println("      --split SPLIT_NAME Only optimize the given split. If SPLIT_NAME is an");
-        pw.println("        empty string, only optimize the base APK. When this option is set,");
+        pw.println("      --split SPLIT_NAME Only dexopt the given split. If SPLIT_NAME is an");
+        pw.println("        empty string, only dexopt the base APK. When this option is set,");
         pw.println("        '--primary-dex', '--secondary-dex', and '--include-dependencies' must");
         pw.println("        not be set.");
-        pw.println("      --reset Reset the optimization state of the package as if the package");
+        pw.println("      --reset Reset the dexopt state of the package as if the package");
         pw.println("        is newly installed.");
         pw.println("        More specifically, it clears reference profiles, current profiles,");
         pw.println("        and any code compiled from those local profiles. If there is an");
         pw.println("        external profile (e.g., a cloud profile), the code compiled from that");
         pw.println("        profile will be kept.");
-        pw.println("        For secondary dex files, it also clears all optimized artifacts.");
+        pw.println("        For secondary dex files, it also clears all dexopt artifacts.");
         pw.println("        When this flag is set, all the other flags are ignored.");
-        pw.println("  optimize-packages REASON");
-        pw.println("    Run batch optimization for the given reason.");
+        pw.println("  dexopt-packages REASON");
+        pw.println("    Run batch dexopt for the given reason.");
         pw.println("    The command prints a job ID, which can be used to cancel the job using");
         pw.println("    the 'cancel' command.");
         pw.println("  cancel JOB_ID");
@@ -463,26 +463,26 @@
     }
 
     @NonNull
-    private String optimizeStatusToString(@OptimizeStatus int status) {
+    private String dexoptResultStatusToString(@DexoptResultStatus int status) {
         switch (status) {
-            case OptimizeResult.OPTIMIZE_SKIPPED:
+            case DexoptResult.DEXOPT_SKIPPED:
                 return "SKIPPED";
-            case OptimizeResult.OPTIMIZE_PERFORMED:
+            case DexoptResult.DEXOPT_PERFORMED:
                 return "PERFORMED";
-            case OptimizeResult.OPTIMIZE_FAILED:
+            case DexoptResult.DEXOPT_FAILED:
                 return "FAILED";
-            case OptimizeResult.OPTIMIZE_CANCELLED:
+            case DexoptResult.DEXOPT_CANCELLED:
                 return "CANCELLED";
         }
-        throw new IllegalArgumentException("Unknown optimize status " + status);
+        throw new IllegalArgumentException("Unknown dexopt status " + status);
     }
 
-    private void printOptimizeResult(@NonNull PrintWriter pw, @NonNull OptimizeResult result) {
-        pw.println(optimizeStatusToString(result.getFinalStatus()));
-        for (PackageOptimizeResult packageResult : result.getPackageOptimizeResults()) {
+    private void printDexoptResult(@NonNull PrintWriter pw, @NonNull DexoptResult result) {
+        pw.println(dexoptResultStatusToString(result.getFinalStatus()));
+        for (PackageDexoptResult packageResult : result.getPackageDexoptResults()) {
             pw.printf("[%s]\n", packageResult.getPackageName());
-            for (DexContainerFileOptimizeResult fileResult :
-                    packageResult.getDexContainerFileOptimizeResults()) {
+            for (DexContainerFileDexoptResult fileResult :
+                    packageResult.getDexContainerFileDexoptResults()) {
                 pw.println(fileResult);
             }
         }
diff --git a/libartservice/service/java/com/android/server/art/BackgroundDexOptJob.java b/libartservice/service/java/com/android/server/art/BackgroundDexoptJob.java
similarity index 90%
rename from libartservice/service/java/com/android/server/art/BackgroundDexOptJob.java
rename to libartservice/service/java/com/android/server/art/BackgroundDexoptJob.java
index 0df9ace..9f03107 100644
--- a/libartservice/service/java/com/android/server/art/BackgroundDexOptJob.java
+++ b/libartservice/service/java/com/android/server/art/BackgroundDexoptJob.java
@@ -37,7 +37,7 @@
 import com.android.server.LocalManagerRegistry;
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.Config;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.pm.PackageManagerLocal;
 
 import com.google.auto.value.AutoValue;
@@ -47,8 +47,8 @@
 import java.util.concurrent.TimeUnit;
 
 /** @hide */
-public class BackgroundDexOptJob {
-    private static final String TAG = "BackgroundDexOptJob";
+public class BackgroundDexoptJob {
+    private static final String TAG = "BackgroundDexoptJob";
 
     /**
      * "android" is the package name for a <service> declared in
@@ -66,19 +66,19 @@
     @GuardedBy("this") @Nullable private CancellationSignal mCancellationSignal = null;
     @GuardedBy("this") @NonNull private Optional<Integer> mLastStopReason = Optional.empty();
 
-    public BackgroundDexOptJob(@NonNull Context context, @NonNull ArtManagerLocal artManagerLocal,
+    public BackgroundDexoptJob(@NonNull Context context, @NonNull ArtManagerLocal artManagerLocal,
             @NonNull Config config) {
         this(new Injector(context, artManagerLocal, config));
     }
 
     @VisibleForTesting
-    public BackgroundDexOptJob(@NonNull Injector injector) {
+    public BackgroundDexoptJob(@NonNull Injector injector) {
         mInjector = injector;
     }
 
-    /** Handles {@link BackgroundDexOptJobService#onStartJob(JobParameters)}. */
+    /** Handles {@link BackgroundDexoptJobService#onStartJob(JobParameters)}. */
     public boolean onStartJob(
-            @NonNull BackgroundDexOptJobService jobService, @NonNull JobParameters params) {
+            @NonNull BackgroundDexoptJobService jobService, @NonNull JobParameters params) {
         start().thenAcceptAsync(result -> {
             writeStats(result);
             // This is a periodic job, where the interval is specified in the `JobInfo`. "true"
@@ -88,14 +88,14 @@
             // This call will be ignored if `onStopJob` is called.
             boolean wantsReschedule = result instanceof CompletedResult
                     && ((CompletedResult) result).dexoptResult().getFinalStatus()
-                            == OptimizeResult.OPTIMIZE_CANCELLED;
+                            == DexoptResult.DEXOPT_CANCELLED;
             jobService.jobFinished(params, wantsReschedule);
         });
         // "true" means the job will continue running until `jobFinished` is called.
         return true;
     }
 
-    /** Handles {@link BackgroundDexOptJobService#onStopJob(JobParameters)}. */
+    /** Handles {@link BackgroundDexoptJobService#onStopJob(JobParameters)}. */
     public boolean onStopJob(@NonNull JobParameters params) {
         synchronized (this) {
             mLastStopReason = Optional.of(params.getStopReason());
@@ -108,7 +108,7 @@
 
     /** Handles {@link ArtManagerLocal#scheduleBackgroundDexoptJob()}. */
     public @ScheduleStatus int schedule() {
-        if (this != BackgroundDexOptJobService.getJob()) {
+        if (this != BackgroundDexoptJobService.getJob()) {
             throw new IllegalStateException("This job cannot be scheduled");
         }
 
@@ -121,7 +121,7 @@
                 new JobInfo
                         .Builder(JOB_ID,
                                 new ComponentName(
-                                        JOB_PKG_NAME, BackgroundDexOptJobService.class.getName()))
+                                        JOB_PKG_NAME, BackgroundDexoptJobService.class.getName()))
                         .setPeriodic(JOB_INTERVAL_MS)
                         .setRequiresDeviceIdle(true)
                         .setRequiresCharging(true)
@@ -148,7 +148,7 @@
 
     /** Handles {@link ArtManagerLocal#unscheduleBackgroundDexoptJob()}. */
     public void unschedule() {
-        if (this != BackgroundDexOptJobService.getJob()) {
+        if (this != BackgroundDexoptJobService.getJob()) {
             throw new IllegalStateException("This job cannot be unscheduled");
         }
 
@@ -197,9 +197,9 @@
         // TODO(b/254013427): Cleanup dex use info.
         // TODO(b/254013425): Cleanup unused secondary dex file artifacts.
         long startTimeMs = SystemClock.uptimeMillis();
-        OptimizeResult dexoptResult;
+        DexoptResult dexoptResult;
         try (var snapshot = mInjector.getPackageManagerLocal().withFilteredSnapshot()) {
-            dexoptResult = mInjector.getArtManagerLocal().optimizePackages(snapshot,
+            dexoptResult = mInjector.getArtManagerLocal().dexoptPackages(snapshot,
                     ReasonMapping.REASON_BG_DEXOPT, cancellationSignal,
                     null /* processCallbackExecutor */, null /* processCallback */);
         }
@@ -225,7 +225,7 @@
     }
 
     private int getStatusForStats(@NonNull CompletedResult result, Optional<Integer> stopReason) {
-        if (result.dexoptResult().getFinalStatus() == OptimizeResult.OPTIMIZE_CANCELLED) {
+        if (result.dexoptResult().getFinalStatus() == DexoptResult.DEXOPT_CANCELLED) {
             if (stopReason.isPresent()) {
                 return ArtStatsLog
                         .BACKGROUND_DEXOPT_JOB_ENDED__STATUS__STATUS_ABORT_BY_CANCELLATION;
@@ -236,10 +236,10 @@
 
         boolean isSkippedDueToStorageLow =
                 result.dexoptResult()
-                        .getPackageOptimizeResults()
+                        .getPackageDexoptResults()
                         .stream()
                         .flatMap(packageResult
-                                -> packageResult.getDexContainerFileOptimizeResults().stream())
+                                -> packageResult.getDexContainerFileDexoptResults().stream())
                         .anyMatch(fileResult -> fileResult.isSkippedDueToStorageLow());
         if (isSkippedDueToStorageLow) {
             return ArtStatsLog.BACKGROUND_DEXOPT_JOB_ENDED__STATUS__STATUS_ABORT_NO_SPACE_LEFT;
@@ -253,12 +253,12 @@
 
     @AutoValue
     static abstract class CompletedResult extends Result {
-        abstract @NonNull OptimizeResult dexoptResult();
+        abstract @NonNull DexoptResult dexoptResult();
         abstract long durationMs();
 
         @NonNull
-        static CompletedResult create(@NonNull OptimizeResult dexoptResult, long durationMs) {
-            return new AutoValue_BackgroundDexOptJob_CompletedResult(dexoptResult, durationMs);
+        static CompletedResult create(@NonNull DexoptResult dexoptResult, long durationMs) {
+            return new AutoValue_BackgroundDexoptJob_CompletedResult(dexoptResult, durationMs);
         }
     }
 
diff --git a/libartservice/service/java/com/android/server/art/BackgroundDexOptJobService.java b/libartservice/service/java/com/android/server/art/BackgroundDexoptJobService.java
similarity index 92%
rename from libartservice/service/java/com/android/server/art/BackgroundDexOptJobService.java
rename to libartservice/service/java/com/android/server/art/BackgroundDexoptJobService.java
index 5ab35d5..5da7279 100644
--- a/libartservice/service/java/com/android/server/art/BackgroundDexOptJobService.java
+++ b/libartservice/service/java/com/android/server/art/BackgroundDexoptJobService.java
@@ -28,7 +28,7 @@
  *
  * @hide
  */
-public class BackgroundDexOptJobService extends JobService {
+public class BackgroundDexoptJobService extends JobService {
     @Override
     public boolean onStartJob(@NonNull JobParameters params) {
         return getJob().onStartJob(this, params);
@@ -40,7 +40,7 @@
     }
 
     @NonNull
-    static BackgroundDexOptJob getJob() {
+    static BackgroundDexoptJob getJob() {
         return LocalManagerRegistry.getManager(ArtManagerLocal.class).getBackgroundDexOptJob();
     }
 }
diff --git a/libartservice/service/java/com/android/server/art/DexOptimizer.java b/libartservice/service/java/com/android/server/art/DexOptimizer.java
index b27a426..1cbe5db 100644
--- a/libartservice/service/java/com/android/server/art/DexOptimizer.java
+++ b/libartservice/service/java/com/android/server/art/DexOptimizer.java
@@ -20,8 +20,8 @@
 import static com.android.server.art.OutputArtifacts.PermissionSettings;
 import static com.android.server.art.ProfilePath.TmpProfilePath;
 import static com.android.server.art.Utils.Abi;
-import static com.android.server.art.model.ArtFlags.OptimizeFlags;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
+import static com.android.server.art.model.ArtFlags.DexoptFlags;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
 
 import android.R;
 import android.annotation.NonNull;
@@ -42,8 +42,8 @@
 import com.android.server.LocalManagerRegistry;
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.DetailedDexInfo;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
 
@@ -64,11 +64,11 @@
     @NonNull protected final PackageState mPkgState;
     /** This is always {@code mPkgState.getAndroidPackage()} and guaranteed to be non-null. */
     @NonNull protected final AndroidPackage mPkg;
-    @NonNull protected final OptimizeParams mParams;
+    @NonNull protected final DexoptParams mParams;
     @NonNull protected final CancellationSignal mCancellationSignal;
 
     protected DexOptimizer(@NonNull Injector injector, @NonNull PackageState pkgState,
-            @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+            @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         mInjector = injector;
         mPkgState = pkgState;
@@ -83,23 +83,23 @@
 
     /**
      * DO NOT use this method directly. Use {@link
-     * ArtManagerLocal#optimizePackage(PackageManagerLocal.FilteredSnapshot, String,
-     * OptimizeParams)}.
+     * ArtManagerLocal#dexoptPackage(PackageManagerLocal.FilteredSnapshot, String,
+     * DexoptParams)}.
      */
     @NonNull
-    public final List<DexContainerFileOptimizeResult> dexopt() throws RemoteException {
-        List<DexContainerFileOptimizeResult> results = new ArrayList<>();
+    public final List<DexContainerFileDexoptResult> dexopt() throws RemoteException {
+        List<DexContainerFileDexoptResult> results = new ArrayList<>();
 
         for (DexInfoType dexInfo : getDexInfoList()) {
             ProfilePath profile = null;
             boolean succeeded = true;
             try {
-                if (!isOptimizable(dexInfo)) {
+                if (!isDexoptable(dexInfo)) {
                     continue;
                 }
 
                 String compilerFilter = adjustCompilerFilter(mParams.getCompilerFilter(), dexInfo);
-                if (compilerFilter.equals(OptimizeParams.COMPILER_FILTER_NOOP)) {
+                if (compilerFilter.equals(DexoptParams.COMPILER_FILTER_NOOP)) {
                     continue;
                 }
 
@@ -127,7 +127,7 @@
                         }
                     }
                     if (profile == null) {
-                        // A profile guided optimization with no profile is essentially 'verify',
+                        // A profile guided dexopt with no profile is essentially 'verify',
                         // and dex2oat already makes this transformation. However, we need to
                         // explicitly make this transformation here to guide the later decisions
                         // such as whether the artifacts can be public and whether dexopt is needed.
@@ -149,7 +149,7 @@
                         getDexoptOptions(dexInfo, isProfileGuidedCompilerFilter);
 
                 for (Abi abi : getAllAbis(dexInfo)) {
-                    @OptimizeResult.OptimizeStatus int status = OptimizeResult.OPTIMIZE_SKIPPED;
+                    @DexoptResult.DexoptResultStatus int status = DexoptResult.DEXOPT_SKIPPED;
                     long wallTimeMs = 0;
                     long cpuTimeMs = 0;
                     long sizeBytes = 0;
@@ -204,17 +204,17 @@
                             }
                         });
 
-                        DexoptResult dexoptResult = dexoptFile(target, profile,
+                        ArtdDexoptResult dexoptResult = dexoptFile(target, profile,
                                 getDexoptNeededResult, permissionSettings,
                                 mParams.getPriorityClass(), dexoptOptions, artdCancellationSignal);
-                        status = dexoptResult.cancelled ? OptimizeResult.OPTIMIZE_CANCELLED
-                                                        : OptimizeResult.OPTIMIZE_PERFORMED;
+                        status = dexoptResult.cancelled ? DexoptResult.DEXOPT_CANCELLED
+                                                        : DexoptResult.DEXOPT_PERFORMED;
                         wallTimeMs = dexoptResult.wallTimeMs;
                         cpuTimeMs = dexoptResult.cpuTimeMs;
                         sizeBytes = dexoptResult.sizeBytes;
                         sizeBeforeBytes = dexoptResult.sizeBeforeBytes;
 
-                        if (status == OptimizeResult.OPTIMIZE_CANCELLED) {
+                        if (status == DexoptResult.DEXOPT_CANCELLED) {
                             return results;
                         }
                     } catch (ServiceSpecificException e) {
@@ -225,13 +225,13 @@
                                         mPkgState.getPackageName(), dexInfo.dexPath(), abi.isa(),
                                         dexInfo.classLoaderContext()),
                                 e);
-                        status = OptimizeResult.OPTIMIZE_FAILED;
+                        status = DexoptResult.DEXOPT_FAILED;
                     } finally {
-                        results.add(DexContainerFileOptimizeResult.create(dexInfo.dexPath(),
+                        results.add(DexContainerFileDexoptResult.create(dexInfo.dexPath(),
                                 abi.isPrimaryAbi(), abi.name(), compilerFilter, status, wallTimeMs,
                                 cpuTimeMs, sizeBytes, sizeBeforeBytes, isSkippedDueToStorageLow));
-                        if (status != OptimizeResult.OPTIMIZE_SKIPPED
-                                && status != OptimizeResult.OPTIMIZE_PERFORMED) {
+                        if (status != DexoptResult.DEXOPT_SKIPPED
+                                && status != DexoptResult.DEXOPT_PERFORMED) {
                             succeeded = false;
                         }
                         // Make sure artd does not leak even if the caller holds
@@ -428,7 +428,7 @@
         return dexoptTrigger;
     }
 
-    private DexoptResult dexoptFile(@NonNull DexoptTarget<DexInfoType> target,
+    private ArtdDexoptResult dexoptFile(@NonNull DexoptTarget<DexInfoType> target,
             @Nullable ProfilePath profile, @NonNull GetDexoptNeededResult getDexoptNeededResult,
             @NonNull PermissionSettings permissionSettings, @PriorityClass int priorityClass,
             @NonNull DexoptOptions dexoptOptions, IArtdCancellationSignal artdCancellationSignal)
@@ -543,8 +543,8 @@
     /** Returns information about all dex files. */
     @NonNull protected abstract List<DexInfoType> getDexInfoList();
 
-    /** Returns true if the given dex file should be optimized. */
-    protected abstract boolean isOptimizable(@NonNull DexInfoType dexInfo);
+    /** Returns true if the given dex file should be dexopted. */
+    protected abstract boolean isDexoptable(@NonNull DexInfoType dexInfo);
 
     /**
      * Returns true if the artifacts should be shared with other apps. Note that this must imply
@@ -619,7 +619,7 @@
 
     @AutoValue
     abstract static class GetDexoptNeededOptions {
-        abstract @OptimizeFlags int flags();
+        abstract @DexoptFlags int flags();
         abstract boolean profileMerged();
         abstract boolean needsToBePublic();
 
@@ -629,7 +629,7 @@
 
         @AutoValue.Builder
         abstract static class Builder {
-            abstract Builder setFlags(@OptimizeFlags int value);
+            abstract Builder setFlags(@DexoptFlags int value);
             abstract Builder setProfileMerged(boolean value);
             abstract Builder setNeedsToBePublic(boolean value);
             abstract GetDexoptNeededOptions build();
diff --git a/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java b/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java
index 14b7d03..996d087 100644
--- a/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java
+++ b/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java
@@ -321,7 +321,7 @@
                 } else if (distinctClcList.size() == 1) {
                     clc = distinctClcList.get(0);
                 } else {
-                    // If there are more than one class loader contexts, we can't optimize the dex
+                    // If there are more than one class loader contexts, we can't dexopt the dex
                     // file.
                     clc = SecondaryDexInfo.VARYING_CLASS_LOADER_CONTEXTS;
                 }
@@ -349,7 +349,7 @@
      * ART Service uses this information to:
      * <ul>
      *   <li>Determine whether an app is used by another app
-     *   <li>Record which secondary dex container files to optimize and how to optimize them
+     *   <li>Record which secondary dex container files to dexopt and how to dexopt them
      * </ul>
      *
      * @param loadingPackageName the name of the package who performs the load. ART Service assumes
@@ -571,7 +571,7 @@
             @NonNull DexLoader loader, @NonNull String owningPackageName) {
         // If the dex file is loaded by an isolated process of the same app, it can also be
         // considered as "used by other apps" because isolated processes are sandboxed and can only
-        // read world readable files, so they need the optimized artifacts to be world readable. An
+        // read world readable files, so they need the dexopt artifacts to be world readable. An
         // example of such a package is webview.
         return !loader.loadingPackageName().equals(owningPackageName) || loader.isolatedProcess();
     }
diff --git a/libartservice/service/java/com/android/server/art/DexOptHelper.java b/libartservice/service/java/com/android/server/art/DexoptHelper.java
similarity index 79%
rename from libartservice/service/java/com/android/server/art/DexOptHelper.java
rename to libartservice/service/java/com/android/server/art/DexoptHelper.java
index 51f4442..11faed2 100644
--- a/libartservice/service/java/com/android/server/art/DexOptHelper.java
+++ b/libartservice/service/java/com/android/server/art/DexoptHelper.java
@@ -16,10 +16,10 @@
 
 package com.android.server.art;
 
-import static com.android.server.art.ArtManagerLocal.OptimizePackageDoneCallback;
+import static com.android.server.art.ArtManagerLocal.DexoptDoneCallback;
 import static com.android.server.art.model.Config.Callback;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
-import static com.android.server.art.model.OptimizeResult.PackageOptimizeResult;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
+import static com.android.server.art.model.DexoptResult.PackageDexoptResult;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -34,9 +34,9 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.Config;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.model.OperationProgress;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
@@ -66,7 +66,7 @@
  *
  * @hide
  */
-public class DexOptHelper {
+public class DexoptHelper {
     private static final String TAG = "DexoptHelper";
 
     /**
@@ -77,34 +77,34 @@
 
     @NonNull private final Injector mInjector;
 
-    public DexOptHelper(@NonNull Context context, @NonNull Config config) {
+    public DexoptHelper(@NonNull Context context, @NonNull Config config) {
         this(new Injector(context, config));
     }
 
     @VisibleForTesting
-    public DexOptHelper(@NonNull Injector injector) {
+    public DexoptHelper(@NonNull Injector injector) {
         mInjector = injector;
     }
 
     /**
-     * DO NOT use this method directly. Use {@link ArtManagerLocal#optimizePackage} or {@link
-     * ArtManagerLocal#optimizePackages}.
+     * DO NOT use this method directly. Use {@link ArtManagerLocal#dexoptPackage} or {@link
+     * ArtManagerLocal#dexoptPackages}.
      */
     @NonNull
-    public OptimizeResult dexopt(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-            @NonNull List<String> packageNames, @NonNull OptimizeParams params,
+    public DexoptResult dexopt(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull List<String> packageNames, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal, @NonNull Executor dexoptExecutor) {
         return dexopt(snapshot, packageNames, params, cancellationSignal, dexoptExecutor,
                 null /* progressCallbackExecutor */, null /* progressCallback */);
     }
 
     /**
-     * DO NOT use this method directly. Use {@link ArtManagerLocal#optimizePackage} or {@link
-     * ArtManagerLocal#optimizePackages}.
+     * DO NOT use this method directly. Use {@link ArtManagerLocal#dexoptPackage} or {@link
+     * ArtManagerLocal#dexoptPackages}.
      */
     @NonNull
-    public OptimizeResult dexopt(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
-            @NonNull List<String> packageNames, @NonNull OptimizeParams params,
+    public DexoptResult dexopt(@NonNull PackageManagerLocal.FilteredSnapshot snapshot,
+            @NonNull List<String> packageNames, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal, @NonNull Executor dexoptExecutor,
             @Nullable Executor progressCallbackExecutor,
             @Nullable Consumer<OperationProgress> progressCallback) {
@@ -116,12 +116,12 @@
     }
 
     /**
-     * DO NOT use this method directly. Use {@link ArtManagerLocal#optimizePackage} or {@link
-     * ArtManagerLocal#optimizePackages}.
+     * DO NOT use this method directly. Use {@link ArtManagerLocal#dexoptPackage} or {@link
+     * ArtManagerLocal#dexoptPackages}.
      */
     @NonNull
-    private OptimizeResult dexoptPackages(@NonNull List<PackageState> pkgStates,
-            @NonNull OptimizeParams params, @NonNull CancellationSignal cancellationSignal,
+    private DexoptResult dexoptPackages(@NonNull List<PackageState> pkgStates,
+            @NonNull DexoptParams params, @NonNull CancellationSignal cancellationSignal,
             @NonNull Executor dexoptExecutor, @Nullable Executor progressCallbackExecutor,
             @Nullable Consumer<OperationProgress> progressCallback) {
         int callingUid = Binder.getCallingUid();
@@ -135,7 +135,7 @@
             wakeLock.setWorkSource(new WorkSource(callingUid));
             wakeLock.acquire(WAKE_LOCK_TIMEOUT_MS);
 
-            List<CompletableFuture<PackageOptimizeResult>> futures = new ArrayList<>();
+            List<CompletableFuture<PackageDexoptResult>> futures = new ArrayList<>();
             for (PackageState pkgState : pkgStates) {
                 futures.add(CompletableFuture.supplyAsync(
                         () -> dexoptPackage(pkgState, params, cancellationSignal), dexoptExecutor));
@@ -147,7 +147,7 @@
                             OperationProgress.create(0 /* current */, futures.size()));
                 }, progressCallbackExecutor);
                 AtomicInteger current = new AtomicInteger(0);
-                for (CompletableFuture<PackageOptimizeResult> future : futures) {
+                for (CompletableFuture<PackageDexoptResult> future : futures) {
                     future.thenRunAsync(() -> {
                         progressCallback.accept(OperationProgress.create(
                                 current.incrementAndGet(), futures.size()));
@@ -155,30 +155,30 @@
                 }
             }
 
-            List<PackageOptimizeResult> results =
+            List<PackageDexoptResult> results =
                     futures.stream().map(Utils::getFuture).collect(Collectors.toList());
 
             var result =
-                    OptimizeResult.create(params.getCompilerFilter(), params.getReason(), results);
+                    DexoptResult.create(params.getCompilerFilter(), params.getReason(), results);
 
-            for (Callback<OptimizePackageDoneCallback, Boolean> doneCallback :
-                    mInjector.getConfig().getOptimizePackageDoneCallbacks()) {
+            for (Callback<DexoptDoneCallback, Boolean> doneCallback :
+                    mInjector.getConfig().getDexoptDoneCallbacks()) {
                 boolean onlyIncludeUpdates = doneCallback.extra();
                 if (onlyIncludeUpdates) {
-                    List<PackageOptimizeResult> filteredResults =
+                    List<PackageDexoptResult> filteredResults =
                             results.stream()
-                                    .filter(PackageOptimizeResult::hasUpdatedArtifacts)
+                                    .filter(PackageDexoptResult::hasUpdatedArtifacts)
                                     .collect(Collectors.toList());
                     if (!filteredResults.isEmpty()) {
-                        var resultForCallback = OptimizeResult.create(
+                        var resultForCallback = DexoptResult.create(
                                 params.getCompilerFilter(), params.getReason(), filteredResults);
                         CompletableFuture.runAsync(() -> {
-                            doneCallback.get().onOptimizePackageDone(resultForCallback);
+                            doneCallback.get().onDexoptDone(resultForCallback);
                         }, doneCallback.executor());
                     }
                 } else {
                     CompletableFuture.runAsync(() -> {
-                        doneCallback.get().onOptimizePackageDone(result);
+                        doneCallback.get().onDexoptDone(result);
                     }, doneCallback.executor());
                 }
             }
@@ -193,20 +193,20 @@
     }
 
     /**
-     * DO NOT use this method directly. Use {@link ArtManagerLocal#optimizePackage} or {@link
-     * ArtManagerLocal#optimizePackages}.
+     * DO NOT use this method directly. Use {@link ArtManagerLocal#dexoptPackage} or {@link
+     * ArtManagerLocal#dexoptPackages}.
      */
     @NonNull
-    private PackageOptimizeResult dexoptPackage(@NonNull PackageState pkgState,
-            @NonNull OptimizeParams params, @NonNull CancellationSignal cancellationSignal) {
-        List<DexContainerFileOptimizeResult> results = new ArrayList<>();
-        Supplier<PackageOptimizeResult> createResult = ()
-                -> PackageOptimizeResult.create(
+    private PackageDexoptResult dexoptPackage(@NonNull PackageState pkgState,
+            @NonNull DexoptParams params, @NonNull CancellationSignal cancellationSignal) {
+        List<DexContainerFileDexoptResult> results = new ArrayList<>();
+        Supplier<PackageDexoptResult> createResult = ()
+                -> PackageDexoptResult.create(
                         pkgState.getPackageName(), results, cancellationSignal.isCanceled());
 
         AndroidPackage pkg = Utils.getPackageOrThrow(pkgState);
 
-        if (!canOptimizePackage(pkgState)) {
+        if (!canDexoptPackage(pkgState)) {
             return createResult.get();
         }
 
@@ -243,8 +243,8 @@
         return createResult.get();
     }
 
-    private boolean canOptimizePackage(@NonNull PackageState pkgState) {
-        return Utils.canOptimizePackage(pkgState, mInjector.getAppHibernationManager());
+    private boolean canDexoptPackage(@NonNull PackageState pkgState) {
+        return Utils.canDexoptPackage(pkgState, mInjector.getAppHibernationManager());
     }
 
     @NonNull
@@ -268,7 +268,7 @@
             PackageState pkgState = Utils.getPackageStateOrThrow(snapshot, packageName);
             Utils.getPackageOrThrow(pkgState);
             pkgStates.put(packageName, pkgState);
-            if (includeDependencies && canOptimizePackage(pkgState)) {
+            if (includeDependencies && canDexoptPackage(pkgState)) {
                 for (SharedLibrary library : pkgState.getUsesLibraries()) {
                     maybeEnqueue.accept(library);
                 }
@@ -279,7 +279,7 @@
         while ((library = queue.poll()) != null) {
             String packageName = library.getPackageName();
             PackageState pkgState = Utils.getPackageStateOrThrow(snapshot, packageName);
-            if (canOptimizePackage(pkgState)) {
+            if (canDexoptPackage(pkgState)) {
                 pkgStates.put(packageName, pkgState);
 
                 // Note that `library.getDependencies()` is different from
@@ -318,14 +318,14 @@
 
         @NonNull
         PrimaryDexOptimizer getPrimaryDexOptimizer(@NonNull PackageState pkgState,
-                @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+                @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
                 @NonNull CancellationSignal cancellationSignal) {
             return new PrimaryDexOptimizer(mContext, pkgState, pkg, params, cancellationSignal);
         }
 
         @NonNull
         SecondaryDexOptimizer getSecondaryDexOptimizer(@NonNull PackageState pkgState,
-                @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+                @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
                 @NonNull CancellationSignal cancellationSignal) {
             return new SecondaryDexOptimizer(mContext, pkgState, pkg, params, cancellationSignal);
         }
diff --git a/libartservice/service/java/com/android/server/art/DumpHelper.java b/libartservice/service/java/com/android/server/art/DumpHelper.java
index 6c01ab4..0de2c1b 100644
--- a/libartservice/service/java/com/android/server/art/DumpHelper.java
+++ b/libartservice/service/java/com/android/server/art/DumpHelper.java
@@ -18,7 +18,7 @@
 
 import static com.android.server.art.DexUseManagerLocal.DexLoader;
 import static com.android.server.art.DexUseManagerLocal.SecondaryDexInfo;
-import static com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus;
+import static com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus;
 
 import android.annotation.NonNull;
 
@@ -82,10 +82,10 @@
         String packageName = pkgState.getPackageName();
         ipw.printf("[%s]\n", packageName);
 
-        List<DexContainerFileOptimizationStatus> statuses =
+        List<DexContainerFileDexoptStatus> statuses =
                 mInjector.getArtManagerLocal()
-                        .getOptimizationStatus(snapshot, packageName)
-                        .getDexContainerFileOptimizationStatuses();
+                        .getDexoptStatus(snapshot, packageName)
+                        .getDexContainerFileDexoptStatuses();
         Map<String, SecondaryDexInfo> secondaryDexInfoByDexPath =
                 mInjector.getDexUseManager()
                         .getSecondaryDexInfo(packageName)
@@ -94,17 +94,17 @@
 
         // Use LinkedHashMap to keep the order.
         var primaryStatusesByDexPath =
-                new LinkedHashMap<String, List<DexContainerFileOptimizationStatus>>();
+                new LinkedHashMap<String, List<DexContainerFileDexoptStatus>>();
         var secondaryStatusesByDexPath =
-                new LinkedHashMap<String, List<DexContainerFileOptimizationStatus>>();
-        for (DexContainerFileOptimizationStatus fileStatus : statuses) {
+                new LinkedHashMap<String, List<DexContainerFileDexoptStatus>>();
+        for (DexContainerFileDexoptStatus fileStatus : statuses) {
             if (fileStatus.isPrimaryDex()) {
                 primaryStatusesByDexPath
                         .computeIfAbsent(fileStatus.getDexContainerFile(), k -> new ArrayList<>())
                         .add(fileStatus);
             } else if (secondaryDexInfoByDexPath.containsKey(fileStatus.getDexContainerFile())) {
                 // The condition above is false only if a change occurs between
-                // `getOptimizationStatus` and `getSecondaryDexInfo`, which is an edge case.
+                // `getDexoptStatus` and `getSecondaryDexInfo`, which is an edge case.
                 secondaryStatusesByDexPath
                         .computeIfAbsent(fileStatus.getDexContainerFile(), k -> new ArrayList<>())
                         .add(fileStatus);
@@ -112,14 +112,13 @@
         }
 
         ipw.increaseIndent();
-        for (List<DexContainerFileOptimizationStatus> fileStatuses :
-                primaryStatusesByDexPath.values()) {
+        for (List<DexContainerFileDexoptStatus> fileStatuses : primaryStatusesByDexPath.values()) {
             dumpPrimaryDex(ipw, fileStatuses, packageName);
         }
         if (!secondaryStatusesByDexPath.isEmpty()) {
             ipw.println("known secondary dex files:");
             ipw.increaseIndent();
-            for (Map.Entry<String, List<DexContainerFileOptimizationStatus>> entry :
+            for (Map.Entry<String, List<DexContainerFileDexoptStatus>> entry :
                     secondaryStatusesByDexPath.entrySet()) {
                 dumpSecondaryDex(ipw, entry.getValue(), packageName,
                         secondaryDexInfoByDexPath.get(entry.getKey()));
@@ -130,7 +129,7 @@
     }
 
     private void dumpPrimaryDex(@NonNull IndentingPrintWriter ipw,
-            List<DexContainerFileOptimizationStatus> fileStatuses, @NonNull String packageName) {
+            List<DexContainerFileDexoptStatus> fileStatuses, @NonNull String packageName) {
         String dexPath = fileStatuses.get(0).getDexContainerFile();
         ipw.printf("path: %s\n", dexPath);
         ipw.increaseIndent();
@@ -142,7 +141,7 @@
     }
 
     private void dumpSecondaryDex(@NonNull IndentingPrintWriter ipw,
-            List<DexContainerFileOptimizationStatus> fileStatuses, @NonNull String packageName,
+            List<DexContainerFileDexoptStatus> fileStatuses, @NonNull String packageName,
             @NonNull SecondaryDexInfo info) {
         String dexPath = fileStatuses.get(0).getDexContainerFile();
         ipw.println(dexPath);
@@ -153,9 +152,9 @@
         ipw.decreaseIndent();
     }
 
-    private void dumpFileStatuses(@NonNull IndentingPrintWriter ipw,
-            List<DexContainerFileOptimizationStatus> fileStatuses) {
-        for (DexContainerFileOptimizationStatus fileStatus : fileStatuses) {
+    private void dumpFileStatuses(
+            @NonNull IndentingPrintWriter ipw, List<DexContainerFileDexoptStatus> fileStatuses) {
+        for (DexContainerFileDexoptStatus fileStatus : fileStatuses) {
             ipw.printf("%s: [status=%s] [reason=%s]\n",
                     VMRuntime.getInstructionSet(fileStatus.getAbi()),
                     fileStatus.getCompilerFilter(), fileStatus.getCompilationReason());
diff --git a/libartservice/service/java/com/android/server/art/PrimaryDexOptimizer.java b/libartservice/service/java/com/android/server/art/PrimaryDexOptimizer.java
index 55d92c6..635fe8b 100644
--- a/libartservice/service/java/com/android/server/art/PrimaryDexOptimizer.java
+++ b/libartservice/service/java/com/android/server/art/PrimaryDexOptimizer.java
@@ -34,8 +34,8 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.art.model.ArtFlags;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
@@ -55,14 +55,14 @@
     private final int mSharedGid;
 
     public PrimaryDexOptimizer(@NonNull Context context, @NonNull PackageState pkgState,
-            @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+            @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         this(new Injector(context), pkgState, pkg, params, cancellationSignal);
     }
 
     @VisibleForTesting
     public PrimaryDexOptimizer(@NonNull Injector injector, @NonNull PackageState pkgState,
-            @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+            @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         super(injector, pkgState, pkg, params, cancellationSignal);
 
@@ -86,7 +86,7 @@
     }
 
     @Override
-    protected boolean isOptimizable(@NonNull DetailedPrimaryDexInfo dexInfo) {
+    protected boolean isDexoptable(@NonNull DetailedPrimaryDexInfo dexInfo) {
         if (!dexInfo.hasCode()) {
             return false;
         }
diff --git a/libartservice/service/java/com/android/server/art/ReasonMapping.java b/libartservice/service/java/com/android/server/art/ReasonMapping.java
index 0a44fa9..ca9b9ed 100644
--- a/libartservice/service/java/com/android/server/art/ReasonMapping.java
+++ b/libartservice/service/java/com/android/server/art/ReasonMapping.java
@@ -42,15 +42,15 @@
 public class ReasonMapping {
     private ReasonMapping() {}
 
-    /** Optimizing apps on the first boot after flashing or factory resetting the device. */
+    /** Dexopting apps on the first boot after flashing or factory resetting the device. */
     public static final String REASON_FIRST_BOOT = "first-boot";
-    /** Optimizing apps on the next boot after an OTA. */
+    /** Dexopting apps on the next boot after an OTA. */
     public static final String REASON_BOOT_AFTER_OTA = "boot-after-ota";
-    /** Optimizing apps on the next boot after a mainline update. */
+    /** Dexopting apps on the next boot after a mainline update. */
     public static final String REASON_BOOT_AFTER_MAINLINE_UPDATE = "boot-after-mainline-update";
     /** Installing an app after user presses the "install"/"update" button. */
     public static final String REASON_INSTALL = "install";
-    /** Optimizing apps in the background. */
+    /** Dexopting apps in the background. */
     public static final String REASON_BG_DEXOPT = "bg-dexopt";
     /** Invoked by cmdline. */
     public static final String REASON_CMDLINE = "cmdline";
@@ -71,7 +71,7 @@
             REASON_INSTALL_BULK_DOWNGRADED, REASON_INSTALL_BULK_SECONDARY_DOWNGRADED);
 
     /**
-     * Reasons for {@link ArtManagerLocal#optimizePackages}.
+     * Reasons for {@link ArtManagerLocal#dexoptPackages}.
      *
      * @hide
      */
@@ -84,7 +84,7 @@
     })
     // clang-format on
     @Retention(RetentionPolicy.SOURCE)
-    public @interface BatchOptimizeReason {}
+    public @interface BatchDexoptReason {}
 
     /**
      * Reasons for {@link ArtManagerLocal#onBoot(String, Executor, Consumer<OperationProgress>)}.
@@ -176,13 +176,13 @@
     }
 
     /**
-     * Loads the concurrency from the system property, for batch optimization ({@link
-     * ArtManagerLocal#optimizePackages}), or 1 if the system property is not found or cannot be
+     * Loads the concurrency from the system property, for batch dexopt ({@link
+     * ArtManagerLocal#dexoptPackages}), or 1 if the system property is not found or cannot be
      * parsed.
      *
      * @hide
      */
-    public static int getConcurrencyForReason(@NonNull @BatchOptimizeReason String reason) {
+    public static int getConcurrencyForReason(@NonNull @BatchDexoptReason String reason) {
         return SystemProperties.getInt("pm.dexopt." + reason + ".concurrency", 1 /* def */);
     }
 }
diff --git a/libartservice/service/java/com/android/server/art/SecondaryDexOptimizer.java b/libartservice/service/java/com/android/server/art/SecondaryDexOptimizer.java
index 2f79a21..5d5a227 100644
--- a/libartservice/service/java/com/android/server/art/SecondaryDexOptimizer.java
+++ b/libartservice/service/java/com/android/server/art/SecondaryDexOptimizer.java
@@ -27,7 +27,7 @@
 import android.os.CancellationSignal;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.art.model.OptimizeParams;
+import com.android.server.art.model.DexoptParams;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
 
@@ -38,14 +38,14 @@
     private static final String TAG = "SecondaryDexOptimizer";
 
     public SecondaryDexOptimizer(@NonNull Context context, @NonNull PackageState pkgState,
-            @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+            @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         this(new Injector(context), pkgState, pkg, params, cancellationSignal);
     }
 
     @VisibleForTesting
     public SecondaryDexOptimizer(@NonNull Injector injector, @NonNull PackageState pkgState,
-            @NonNull AndroidPackage pkg, @NonNull OptimizeParams params,
+            @NonNull AndroidPackage pkg, @NonNull DexoptParams params,
             @NonNull CancellationSignal cancellationSignal) {
         super(injector, pkgState, pkg, params, cancellationSignal);
     }
@@ -65,7 +65,7 @@
     }
 
     @Override
-    protected boolean isOptimizable(@NonNull DetailedSecondaryDexInfo dexInfo) {
+    protected boolean isDexoptable(@NonNull DetailedSecondaryDexInfo dexInfo) {
         return true;
     }
 
diff --git a/libartservice/service/java/com/android/server/art/Utils.java b/libartservice/service/java/com/android/server/art/Utils.java
index 9e6ca85..341c741 100644
--- a/libartservice/service/java/com/android/server/art/Utils.java
+++ b/libartservice/service/java/com/android/server/art/Utils.java
@@ -26,7 +26,7 @@
 import android.util.Log;
 import android.util.SparseArray;
 
-import com.android.server.art.model.OptimizeParams;
+import com.android.server.art.model.DexoptParams;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
@@ -166,7 +166,7 @@
 
     /** Returns true if the given string is a valid compiler filter. */
     public static boolean isValidArtServiceCompilerFilter(@NonNull String compilerFilter) {
-        if (compilerFilter.equals(OptimizeParams.COMPILER_FILTER_NOOP)) {
+        if (compilerFilter.equals(DexoptParams.COMPILER_FILTER_NOOP)) {
             return true;
         }
         return DexFile.isValidCompilerFilter(compilerFilter);
@@ -241,12 +241,12 @@
     }
 
     /**
-     * Returns true if the given package is optimizable.
+     * Returns true if the given package is dexoptable.
      *
      * @param appHibernationManager the {@link AppHibernationManager} instance for checking
      *         hibernation status, or null to skip the check
      */
-    public static boolean canOptimizePackage(
+    public static boolean canDexoptPackage(
             @NonNull PackageState pkgState, @Nullable AppHibernationManager appHibernationManager) {
         // An APEX has a uid of -1.
         // TODO(b/256637152): Consider using `isApex` instead.
diff --git a/libartservice/service/java/com/android/server/art/model/ArtFlags.java b/libartservice/service/java/com/android/server/art/model/ArtFlags.java
index f0e3b24..aa8e53c 100644
--- a/libartservice/service/java/com/android/server/art/model/ArtFlags.java
+++ b/libartservice/service/java/com/android/server/art/model/ArtFlags.java
@@ -39,32 +39,32 @@
     /** Whether the operation is applied for secondary dex'es. */
     public static final int FLAG_FOR_SECONDARY_DEX = 1 << 1;
 
-    // Flags specific to `optimizePackage`.
+    // Flags specific to `dexoptPackage`.
 
-    /** Whether to optimize dependency libraries as well. */
+    /** Whether to dexopt dependency libraries as well. */
     public static final int FLAG_SHOULD_INCLUDE_DEPENDENCIES = 1 << 2;
     /**
-     * Whether the intention is to downgrade the compiler filter. If true, the optimization will
+     * Whether the intention is to downgrade the compiler filter. If true, the dexopt will
      * be skipped if the target compiler filter is better than or equal to the compiler filter
-     * of the existing optimized artifacts, or optimized artifacts do not exist.
+     * of the existing dexopt artifacts, or dexopt artifacts do not exist.
      */
     public static final int FLAG_SHOULD_DOWNGRADE = 1 << 3;
     /**
-     * Whether to force optimization. If true, the optimization will be performed regardless of
-     * any existing optimized artifacts.
+     * Whether to force dexopt. If true, the dexopt will be performed regardless of
+     * any existing dexopt artifacts.
      */
     public static final int FLAG_FORCE = 1 << 4;
     /**
-     * If set, the optimization will be performed for a single split. Otherwise, the optimization
-     * will be performed for all splits. {@link OptimizeParams.Builder#setSplitName()} can be used
-     * to specify the split to optimize.
+     * If set, the dexopt will be performed for a single split. Otherwise, the dexopt
+     * will be performed for all splits. {@link DexoptParams.Builder#setSplitName()} can be used
+     * to specify the split to dexopt.
      *
      * When this flag is set, {@link #FLAG_FOR_PRIMARY_DEX} must be set, and {@link
      * #FLAG_FOR_SECONDARY_DEX} and {@link #FLAG_SHOULD_INCLUDE_DEPENDENCIES} must not be set.
      */
     public static final int FLAG_FOR_SINGLE_SPLIT = 1 << 5;
     /**
-     * If set, skips the optimization if the remaining storage space is low. The threshold is
+     * If set, skips the dexopt if the remaining storage space is low. The threshold is
      * controlled by the global settings {@code sys_storage_threshold_percentage} and {@code
      * sys_storage_threshold_max_bytes}.
      */
@@ -72,7 +72,7 @@
 
     /**
      * Flags for {@link
-     * ArtManagerLocal#deleteOptimizedArtifacts(PackageManagerLocal.FilteredSnapshot, String, int)}.
+     * ArtManagerLocal#deleteDexoptArtifacts(PackageManagerLocal.FilteredSnapshot, String, int)}.
      *
      * @hide
      */
@@ -87,7 +87,7 @@
 
     /**
      * Default flags that are used when {@link
-     * ArtManagerLocal#deleteOptimizedArtifacts(PackageManagerLocal.FilteredSnapshot, String)} is
+     * ArtManagerLocal#deleteDexoptArtifacts(PackageManagerLocal.FilteredSnapshot, String)} is
      * called.
      * Value: {@link #FLAG_FOR_PRIMARY_DEX}, {@link #FLAG_FOR_SECONDARY_DEX}.
      */
@@ -97,7 +97,7 @@
 
     /**
      * Flags for {@link
-     * ArtManagerLocal#getOptimizationStatus(PackageManagerLocal.FilteredSnapshot, String, int)}.
+     * ArtManagerLocal#getDexoptStatus(PackageManagerLocal.FilteredSnapshot, String, int)}.
      *
      * @hide
      */
@@ -112,7 +112,7 @@
 
     /**
      * Default flags that are used when {@link
-     * ArtManagerLocal#getOptimizationStatus(PackageManagerLocal.FilteredSnapshot, String)} is
+     * ArtManagerLocal#getDexoptStatus(PackageManagerLocal.FilteredSnapshot, String)} is
      * called.
      * Value: {@link #FLAG_FOR_PRIMARY_DEX}, {@link #FLAG_FOR_SECONDARY_DEX}.
      */
@@ -137,7 +137,7 @@
 
     /**
      * Default flags that are used when {@link
-     * ArtManagerLocal#getOptimizationStatus(PackageManagerLocal.FilteredSnapshot, String)} is
+     * ArtManagerLocal#getDexoptStatus(PackageManagerLocal.FilteredSnapshot, String)} is
      * called.
      * Value: {@link #FLAG_FOR_PRIMARY_DEX}, {@link #FLAG_FOR_SECONDARY_DEX}.
      */
@@ -146,7 +146,7 @@
     }
 
     /**
-     * Flags for {@link OptimizeParams}.
+     * Flags for {@link DexoptParams}.
      *
      * @hide
      */
@@ -162,15 +162,15 @@
     })
     // clang-format on
     @Retention(RetentionPolicy.SOURCE)
-    public @interface OptimizeFlags {}
+    public @interface DexoptFlags {}
 
     /**
      * Default flags that are used when
-     * {@link OptimizeParams.Builder#Builder(String)} is called.
+     * {@link DexoptParams.Builder#Builder(String)} is called.
      *
      * @hide
      */
-    public static @OptimizeFlags int defaultOptimizeFlags(@NonNull String reason) {
+    public static @DexoptFlags int defaultDexoptFlags(@NonNull String reason) {
         switch (reason) {
             case ReasonMapping.REASON_INSTALL:
             case ReasonMapping.REASON_INSTALL_FAST:
diff --git a/libartservice/service/java/com/android/server/art/model/BatchOptimizeParams.java b/libartservice/service/java/com/android/server/art/model/BatchDexoptParams.java
similarity index 65%
rename from libartservice/service/java/com/android/server/art/model/BatchOptimizeParams.java
rename to libartservice/service/java/com/android/server/art/model/BatchDexoptParams.java
index 6869bb5..ffe5500 100644
--- a/libartservice/service/java/com/android/server/art/model/BatchOptimizeParams.java
+++ b/libartservice/service/java/com/android/server/art/model/BatchDexoptParams.java
@@ -31,22 +31,22 @@
 @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 @Immutable
 @AutoValue
-public abstract class BatchOptimizeParams {
+public abstract class BatchDexoptParams {
     /** @hide */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public static final class Builder {
         private @NonNull List<String> mPackageNames; // This is assumed immutable.
-        private @NonNull OptimizeParams mOptimizeParams;
+        private @NonNull DexoptParams mDexoptParams;
 
         /** @hide */
-        public Builder(@NonNull List<String> defaultPackages,
-                @NonNull OptimizeParams defaultOptimizeParams) {
+        public Builder(
+                @NonNull List<String> defaultPackages, @NonNull DexoptParams defaultDexoptParams) {
             mPackageNames = defaultPackages; // The argument is assumed immutable.
-            mOptimizeParams = defaultOptimizeParams;
+            mDexoptParams = defaultDexoptParams;
         }
 
         /**
-         * Sets the list of packages to optimize. The optimization will be scheduled in the given
+         * Sets the list of packages to dexopt. The dexopt will be scheduled in the given
          * order.
          *
          * If not called, the default list will be used.
@@ -58,30 +58,30 @@
         }
 
         /**
-         * Sets the params for optimizing each package.
+         * Sets the params for dexopting each package.
          *
-         * If not called, the default params built from {@link OptimizeParams#Builder(String)} will
+         * If not called, the default params built from {@link DexoptParams#Builder(String)} will
          * be used.
          */
         @NonNull
-        public Builder setOptimizeParams(@NonNull OptimizeParams optimizeParams) {
-            mOptimizeParams = optimizeParams;
+        public Builder setDexoptParams(@NonNull DexoptParams dexoptParams) {
+            mDexoptParams = dexoptParams;
             return this;
         }
 
         /** Returns the built object. */
         @NonNull
-        public BatchOptimizeParams build() {
-            return new AutoValue_BatchOptimizeParams(mPackageNames, mOptimizeParams);
+        public BatchDexoptParams build() {
+            return new AutoValue_BatchDexoptParams(mPackageNames, mDexoptParams);
         }
     }
 
     /** @hide */
-    protected BatchOptimizeParams() {}
+    protected BatchDexoptParams() {}
 
-    /** The ordered list of packages to optimize. */
+    /** The ordered list of packages to dexopt. */
     public abstract @NonNull List<String> getPackages();
 
-    /** The params for optimizing each package. */
-    public abstract @NonNull OptimizeParams getOptimizeParams();
+    /** The params for dexopting each package. */
+    public abstract @NonNull DexoptParams getDexoptParams();
 }
diff --git a/libartservice/service/java/com/android/server/art/model/Config.java b/libartservice/service/java/com/android/server/art/model/Config.java
index 7d9704e..49bc930 100644
--- a/libartservice/service/java/com/android/server/art/model/Config.java
+++ b/libartservice/service/java/com/android/server/art/model/Config.java
@@ -16,8 +16,8 @@
 
 package com.android.server.art.model;
 
-import static com.android.server.art.ArtManagerLocal.OptimizePackageDoneCallback;
-import static com.android.server.art.ArtManagerLocal.OptimizePackagesCallback;
+import static com.android.server.art.ArtManagerLocal.BatchDexoptStartCallback;
+import static com.android.server.art.ArtManagerLocal.DexoptDoneCallback;
 import static com.android.server.art.ArtManagerLocal.ScheduleBackgroundDexoptJobCallback;
 
 import android.annotation.NonNull;
@@ -40,10 +40,10 @@
  * @hide
  */
 public class Config {
-    /** @see ArtManagerLocal#setOptimizePackagesCallback(Executor, OptimizePackagesCallback) */
+    /** @see ArtManagerLocal#setBatchDexoptStartCallback(Executor, BatchDexoptStartCallback) */
     @GuardedBy("this")
     @Nullable
-    private Callback<OptimizePackagesCallback, Void> mOptimizePackagesCallback = null;
+    private Callback<BatchDexoptStartCallback, Void> mBatchDexoptStartCallback = null;
 
     /**
      * @see ArtManagerLocal#setScheduleBackgroundDexoptJobCallback(Executor,
@@ -55,26 +55,25 @@
             mScheduleBackgroundDexoptJobCallback = null;
 
     /**
-     * @see ArtManagerLocal#addOptimizePackageDoneCallback(Executor, OptimizePackageDoneCallback)
+     * @see ArtManagerLocal#addDexoptDoneCallback(Executor, DexoptDoneCallback)
      */
     @GuardedBy("this")
     @NonNull
-    private LinkedHashMap<OptimizePackageDoneCallback,
-            Callback<OptimizePackageDoneCallback, Boolean>> mOptimizePackageDoneCallbacks =
-            new LinkedHashMap<>();
+    private LinkedHashMap<DexoptDoneCallback, Callback<DexoptDoneCallback, Boolean>>
+            mDexoptDoneCallbacks = new LinkedHashMap<>();
 
-    public synchronized void setOptimizePackagesCallback(
-            @NonNull Executor executor, @NonNull OptimizePackagesCallback callback) {
-        mOptimizePackagesCallback = Callback.create(callback, executor);
+    public synchronized void setBatchDexoptStartCallback(
+            @NonNull Executor executor, @NonNull BatchDexoptStartCallback callback) {
+        mBatchDexoptStartCallback = Callback.create(callback, executor);
     }
 
-    public synchronized void clearOptimizePackagesCallback() {
-        mOptimizePackagesCallback = null;
+    public synchronized void clearBatchDexoptStartCallback() {
+        mBatchDexoptStartCallback = null;
     }
 
     @Nullable
-    public synchronized Callback<OptimizePackagesCallback, Void> getOptimizePackagesCallback() {
-        return mOptimizePackagesCallback;
+    public synchronized Callback<BatchDexoptStartCallback, Void> getBatchDexoptStartCallback() {
+        return mBatchDexoptStartCallback;
     }
 
     public synchronized void setScheduleBackgroundDexoptJobCallback(
@@ -92,24 +91,22 @@
         return mScheduleBackgroundDexoptJobCallback;
     }
 
-    public synchronized void addOptimizePackageDoneCallback(boolean onlyIncludeUpdates,
-            @NonNull Executor executor, @NonNull OptimizePackageDoneCallback callback) {
-        if (mOptimizePackageDoneCallbacks.putIfAbsent(
+    public synchronized void addDexoptDoneCallback(boolean onlyIncludeUpdates,
+            @NonNull Executor executor, @NonNull DexoptDoneCallback callback) {
+        if (mDexoptDoneCallbacks.putIfAbsent(
                     callback, Callback.create(callback, executor, onlyIncludeUpdates))
                 != null) {
             throw new IllegalStateException("callback already added");
         }
     }
 
-    public synchronized void removeOptimizePackageDoneCallback(
-            @NonNull OptimizePackageDoneCallback callback) {
-        mOptimizePackageDoneCallbacks.remove(callback);
+    public synchronized void removeDexoptDoneCallback(@NonNull DexoptDoneCallback callback) {
+        mDexoptDoneCallbacks.remove(callback);
     }
 
     @NonNull
-    public synchronized List<Callback<OptimizePackageDoneCallback, Boolean>>
-    getOptimizePackageDoneCallbacks() {
-        return new ArrayList<>(mOptimizePackageDoneCallbacks.values());
+    public synchronized List<Callback<DexoptDoneCallback, Boolean>> getDexoptDoneCallbacks() {
+        return new ArrayList<>(mDexoptDoneCallbacks.values());
     }
 
     @AutoValue
diff --git a/libartservice/service/java/com/android/server/art/model/OptimizeParams.java b/libartservice/service/java/com/android/server/art/model/DexoptParams.java
similarity index 88%
rename from libartservice/service/java/com/android/server/art/model/OptimizeParams.java
rename to libartservice/service/java/com/android/server/art/model/DexoptParams.java
index ffe5003..4dc9471 100644
--- a/libartservice/service/java/com/android/server/art/model/OptimizeParams.java
+++ b/libartservice/service/java/com/android/server/art/model/DexoptParams.java
@@ -16,7 +16,7 @@
 
 package com.android.server.art.model;
 
-import static com.android.server.art.model.ArtFlags.OptimizeFlags;
+import static com.android.server.art.model.ArtFlags.DexoptFlags;
 import static com.android.server.art.model.ArtFlags.PriorityClassApi;
 
 import android.annotation.NonNull;
@@ -30,16 +30,16 @@
 /** @hide */
 @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 @Immutable
-public class OptimizeParams {
+public class DexoptParams {
     /** @hide */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public static final class Builder {
-        private OptimizeParams mParams = new OptimizeParams();
+        private DexoptParams mParams = new DexoptParams();
 
         /**
          * Creates a builder.
          *
-         * Uses default flags ({@link ArtFlags#defaultOptimizeFlags()}).
+         * Uses default flags ({@link ArtFlags#defaultDexoptFlags()}).
          *
          * @param reason Compilation reason. Can be a string defined in {@link ReasonMapping} or a
          *         custom string. If the value is a string defined in {@link ReasonMapping}, it
@@ -48,27 +48,27 @@
          *         compiler filter must be explicitly set.
          */
         public Builder(@NonNull String reason) {
-            this(reason, ArtFlags.defaultOptimizeFlags(reason));
+            this(reason, ArtFlags.defaultDexoptFlags(reason));
         }
 
         /**
          * Same as above, but allows to specify flags.
          */
-        public Builder(@NonNull String reason, @OptimizeFlags int flags) {
+        public Builder(@NonNull String reason, @DexoptFlags int flags) {
             mParams.mReason = reason;
             setFlags(flags);
         }
 
         /** Replaces all flags with the given value. */
         @NonNull
-        public Builder setFlags(@OptimizeFlags int value) {
+        public Builder setFlags(@DexoptFlags int value) {
             mParams.mFlags = value;
             return this;
         }
 
         /** Replaces the flags specified by the mask with the given value. */
         @NonNull
-        public Builder setFlags(@OptimizeFlags int value, @OptimizeFlags int mask) {
+        public Builder setFlags(@DexoptFlags int value, @DexoptFlags int mask) {
             mParams.mFlags = (mParams.mFlags & ~mask) | (value & mask);
             return this;
         }
@@ -101,7 +101,7 @@
         }
 
         /**
-         * The name of the split to optimize, or null for the base split. This option is only
+         * The name of the split to dexopt, or null for the base split. This option is only
          * available when {@link ArtFlags#FLAG_FOR_SINGLE_SPLIT} is set.
          */
         @NonNull
@@ -116,7 +116,7 @@
          * @throws IllegalArgumentException if the built options would be invalid
          */
         @NonNull
-        public OptimizeParams build() {
+        public DexoptParams build() {
             if (mParams.mReason.isEmpty()) {
                 throw new IllegalArgumentException("Reason must not be empty");
             }
@@ -137,7 +137,7 @@
 
             if ((mParams.mFlags & (ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SECONDARY_DEX))
                     == 0) {
-                throw new IllegalArgumentException("Nothing to optimize");
+                throw new IllegalArgumentException("Nothing to dexopt");
             }
 
             if ((mParams.mFlags & ArtFlags.FLAG_FOR_PRIMARY_DEX) == 0
@@ -177,16 +177,16 @@
      */
     public static final String COMPILER_FILTER_NOOP = "skip";
 
-    private @OptimizeFlags int mFlags = 0;
+    private @DexoptFlags int mFlags = 0;
     private @NonNull String mCompilerFilter = "";
     private @PriorityClassApi int mPriorityClass = ArtFlags.PRIORITY_NONE;
     private @NonNull String mReason = "";
     private @Nullable String mSplitName = null;
 
-    private OptimizeParams() {}
+    private DexoptParams() {}
 
     /** Returns all flags. */
-    public @OptimizeFlags int getFlags() {
+    public @DexoptFlags int getFlags() {
         return mFlags;
     }
 
@@ -210,7 +210,7 @@
         return mReason;
     }
 
-    /** The name of the split to optimize, or null for the base split. */
+    /** The name of the split to dexopt, or null for the base split. */
     public @Nullable String getSplitName() {
         return mSplitName;
     }
diff --git a/libartservice/service/java/com/android/server/art/model/DexoptResult.java b/libartservice/service/java/com/android/server/art/model/DexoptResult.java
new file mode 100644
index 0000000..621582e
--- /dev/null
+++ b/libartservice/service/java/com/android/server/art/model/DexoptResult.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.art.model;
+
+import android.annotation.DurationMillisLong;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+
+import com.android.internal.annotations.Immutable;
+
+import com.google.auto.value.AutoValue;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+/** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+@Immutable
+@AutoValue
+public abstract class DexoptResult {
+    // Possible values of {@link #DexoptResultStatus}.
+    // A larger number means a higher priority. If multiple dex container files are processed, the
+    // final status will be the one with the highest priority.
+    public static final int DEXOPT_SKIPPED = 10;
+    public static final int DEXOPT_PERFORMED = 20;
+    public static final int DEXOPT_FAILED = 30;
+    public static final int DEXOPT_CANCELLED = 40;
+
+    /** @hide */
+    // clang-format off
+    @IntDef(prefix = {"DEXOPT_"}, value = {
+        DEXOPT_SKIPPED,
+        DEXOPT_FAILED,
+        DEXOPT_PERFORMED,
+        DEXOPT_CANCELLED,
+    })
+    // clang-format on
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface DexoptResultStatus {}
+
+    /** @hide */
+    protected DexoptResult() {}
+
+    /** @hide */
+    public static @NonNull DexoptResult create(@NonNull String requestedCompilerFilter,
+            @NonNull String reason, @NonNull List<PackageDexoptResult> packageDexoptResult) {
+        return new AutoValue_DexoptResult(requestedCompilerFilter, reason, packageDexoptResult);
+    }
+
+    /**
+     * The requested compiler filter. Note that the compiler filter might be adjusted before the
+     * execution based on factors like whether the profile is available or whether the app is
+     * used by other apps.
+     *
+     * @see DexoptParams.Builder#setCompilerFilter(String)
+     * @see DexContainerFileDexoptResult#getActualCompilerFilter()
+     */
+    public abstract @NonNull String getRequestedCompilerFilter();
+
+    /** The compilation reason. */
+    public abstract @NonNull String getReason();
+
+    /**
+     * The result of each individual package.
+     *
+     * If the request is to dexopt a single package without dexopting dependencies, the only
+     * element is the result of the requested package.
+     *
+     * If the request is to dexopt a single package with {@link
+     * ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES} set, the first element is the result of the
+     * requested package, and the rest are the results of the dependency packages.
+     *
+     * If the request is to dexopt multiple packages, the list contains the results of all the
+     * requested packages. The results of their dependency packages are also included if {@link
+     * ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES} is set.
+     */
+    public abstract @NonNull List<PackageDexoptResult> getPackageDexoptResults();
+
+    /** The final status. */
+    public @DexoptResultStatus int getFinalStatus() {
+        return getPackageDexoptResults()
+                .stream()
+                .mapToInt(result -> result.getStatus())
+                .max()
+                .orElse(DEXOPT_SKIPPED);
+    }
+
+    /**
+     * Describes the result of a package.
+     *
+     * @hide
+     */
+    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+    @Immutable
+    @AutoValue
+    public static abstract class PackageDexoptResult {
+        /** @hide */
+        protected PackageDexoptResult() {}
+
+        /** @hide */
+        public static @NonNull PackageDexoptResult create(@NonNull String packageName,
+                @NonNull List<DexContainerFileDexoptResult> dexContainerFileDexoptResults,
+                boolean isCanceled) {
+            return new AutoValue_DexoptResult_PackageDexoptResult(
+                    packageName, dexContainerFileDexoptResults, isCanceled);
+        }
+
+        /** The package name. */
+        public abstract @NonNull String getPackageName();
+
+        /**
+         * The results of dexopting dex container files. Note that there can be multiple entries
+         * for the same dex container file, but for different ABIs.
+         */
+        public abstract @NonNull List<DexContainerFileDexoptResult>
+        getDexContainerFileDexoptResults();
+
+        /** @hide */
+        public abstract boolean isCanceled();
+
+        /** The overall status of the package. */
+        public @DexoptResultStatus int getStatus() {
+            return isCanceled() ? DEXOPT_CANCELLED
+                                : getDexContainerFileDexoptResults()
+                                          .stream()
+                                          .mapToInt(result -> result.getStatus())
+                                          .max()
+                                          .orElse(DEXOPT_SKIPPED);
+        }
+
+        /** True if the package has any artifacts updated by this operation. */
+        public boolean hasUpdatedArtifacts() {
+            return getDexContainerFileDexoptResults().stream().anyMatch(
+                    result -> result.getStatus() == DEXOPT_PERFORMED);
+        }
+    }
+
+    /**
+     * Describes the result of dexopting a dex container file.
+     *
+     * @hide
+     */
+    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+    @Immutable
+    @AutoValue
+    public static abstract class DexContainerFileDexoptResult {
+        /** @hide */
+        protected DexContainerFileDexoptResult() {}
+
+        /** @hide */
+        public static @NonNull DexContainerFileDexoptResult create(@NonNull String dexContainerFile,
+                boolean isPrimaryAbi, @NonNull String abi, @NonNull String compilerFilter,
+                @DexoptResultStatus int status, long dex2oatWallTimeMillis,
+                long dex2oatCpuTimeMillis, long sizeBytes, long sizeBeforeBytes,
+                boolean isSkippedDueToStorageLow) {
+            return new AutoValue_DexoptResult_DexContainerFileDexoptResult(dexContainerFile,
+                    isPrimaryAbi, abi, compilerFilter, status, dex2oatWallTimeMillis,
+                    dex2oatCpuTimeMillis, sizeBytes, sizeBeforeBytes, isSkippedDueToStorageLow);
+        }
+
+        /** The absolute path to the dex container file. */
+        public abstract @NonNull String getDexContainerFile();
+
+        /**
+         * If true, the dexopt is for the primary ABI of the package (the ABI that the
+         * application is launched with). Otherwise, the dexopt is for an ABI that other
+         * applications might be launched with when using this application's code.
+         */
+        public abstract boolean isPrimaryAbi();
+
+        /**
+         * Returns the ABI that the dexopt is for. Possible values are documented at
+         * https://developer.android.com/ndk/guides/abis#sa.
+         */
+        public abstract @NonNull String getAbi();
+
+        /**
+         * The actual compiler filter.
+         *
+         * @see DexoptParams.Builder#setCompilerFilter(String)
+         */
+        public abstract @NonNull String getActualCompilerFilter();
+
+        /** The status of dexopting this dex container file. */
+        public abstract @DexoptResultStatus int getStatus();
+
+        /**
+         * The wall time of the dex2oat invocation, in milliseconds, if dex2oat succeeded or was
+         * cancelled. Returns 0 if dex2oat failed or was not run, or if failed to get the value.
+         */
+        public abstract @DurationMillisLong long getDex2oatWallTimeMillis();
+
+        /**
+         * The CPU time of the dex2oat invocation, in milliseconds, if dex2oat succeeded or was
+         * cancelled. Returns 0 if dex2oat failed or was not run, or if failed to get the value.
+         */
+        public abstract @DurationMillisLong long getDex2oatCpuTimeMillis();
+
+        /**
+         * The total size, in bytes, of the dexopt artifacts. Returns 0 if {@link #getStatus()}
+         * is not {@link #DEXOPT_PERFORMED}.
+         */
+        public abstract long getSizeBytes();
+
+        /**
+         * The total size, in bytes, of the previous dexopt artifacts that has been replaced.
+         * Returns 0 if there were no previous dexopt artifacts or {@link #getStatus()} is not
+         * {@link #DEXOPT_PERFORMED}.
+         */
+        public abstract long getSizeBeforeBytes();
+
+        /** @hide */
+        public abstract boolean isSkippedDueToStorageLow();
+    }
+}
diff --git a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java b/libartservice/service/java/com/android/server/art/model/DexoptStatus.java
similarity index 66%
rename from libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
rename to libartservice/service/java/com/android/server/art/model/DexoptStatus.java
index b8a4d53..40130ea 100644
--- a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
+++ b/libartservice/service/java/com/android/server/art/model/DexoptStatus.java
@@ -26,51 +26,49 @@
 import java.util.List;
 
 /**
- * Describes the optimization status of a package.
+ * Describes the dexopt status of a package.
  *
  * @hide
  */
 @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 @Immutable
 @AutoValue
-public abstract class OptimizationStatus {
+public abstract class DexoptStatus {
     /** @hide */
-    protected OptimizationStatus() {}
+    protected DexoptStatus() {}
 
     /** @hide */
-    public static @NonNull OptimizationStatus
-    create(@NonNull List<DexContainerFileOptimizationStatus> dexContainerFileOptimizationStatuses) {
-        return new AutoValue_OptimizationStatus(dexContainerFileOptimizationStatuses);
+    public static @NonNull DexoptStatus create(
+            @NonNull List<DexContainerFileDexoptStatus> dexContainerFileDexoptStatuses) {
+        return new AutoValue_DexoptStatus(dexContainerFileDexoptStatuses);
     }
 
     /**
-     * The statuses of the dex container file optimizations. Note that there can be multiple entries
+     * The statuses of the dex container file dexopts. Note that there can be multiple entries
      * for the same dex container file, but for different ABIs.
      */
-    @NonNull
-    public abstract List<DexContainerFileOptimizationStatus>
-    getDexContainerFileOptimizationStatuses();
+    @NonNull public abstract List<DexContainerFileDexoptStatus> getDexContainerFileDexoptStatuses();
 
     /**
-     * Describes the optimization status of a dex container file.
+     * Describes the dexopt status of a dex container file.
      *
      * @hide
      */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     @Immutable
     @AutoValue
-    public abstract static class DexContainerFileOptimizationStatus {
+    public abstract static class DexContainerFileDexoptStatus {
         /** @hide */
-        protected DexContainerFileOptimizationStatus() {}
+        protected DexContainerFileDexoptStatus() {}
 
         /** @hide */
-        public static @NonNull DexContainerFileOptimizationStatus create(
-                @NonNull String dexContainerFile, boolean isPrimaryDex, boolean isPrimaryAbi,
-                @NonNull String abi, @NonNull String compilerFilter,
-                @NonNull String compilationReason, @NonNull String locationDebugString) {
-            return new AutoValue_OptimizationStatus_DexContainerFileOptimizationStatus(
-                    dexContainerFile, isPrimaryDex, isPrimaryAbi, abi, compilerFilter,
-                    compilationReason, locationDebugString);
+        public static @NonNull DexContainerFileDexoptStatus create(@NonNull String dexContainerFile,
+                boolean isPrimaryDex, boolean isPrimaryAbi, @NonNull String abi,
+                @NonNull String compilerFilter, @NonNull String compilationReason,
+                @NonNull String locationDebugString) {
+            return new AutoValue_DexoptStatus_DexContainerFileDexoptStatus(dexContainerFile,
+                    isPrimaryDex, isPrimaryAbi, abi, compilerFilter, compilationReason,
+                    locationDebugString);
         }
 
         /** The absolute path to the dex container file. */
@@ -84,14 +82,14 @@
         public abstract boolean isPrimaryDex();
 
         /**
-         * If true, the optimization is for the primary ABI of the package (the ABI that the
-         * application is launched with). Otherwise, the optimization is for an ABI that other
+         * If true, the dexopt is for the primary ABI of the package (the ABI that the
+         * application is launched with). Otherwise, the dexopt is for an ABI that other
          * applications might be launched with when using this application's code.
          */
         public abstract boolean isPrimaryAbi();
 
         /**
-         * Returns the ABI that the optimization is for. Possible values are documented at
+         * Returns the ABI that the dexopt is for. Possible values are documented at
          * https://developer.android.com/ndk/guides/abis#sa.
          */
         public abstract @NonNull String getAbi();
@@ -102,10 +100,10 @@
          * Possible values are:
          * <ul>
          *   <li>A valid value of the {@code --compiler-filer} option passed to {@code dex2oat}, if
-         *     the optimized artifacts are valid. See
+         *     the dexopt artifacts are valid. See
          *     https://source.android.com/docs/core/dalvik/configure#compilation_options.
-         *   <li>{@code "run-from-apk"}, if the optimized artifacts do not exist.
-         *   <li>{@code "run-from-apk-fallback"}, if the optimized artifacts exist but are invalid
+         *   <li>{@code "run-from-apk"}, if the dexopt artifacts do not exist.
+         *   <li>{@code "run-from-apk-fallback"}, if the dexopt artifacts exist but are invalid
          *     because the dex container file has changed.
          *   <li>{@code "error"}, if an unexpected error occurs.
          * </ul>
@@ -118,12 +116,12 @@
          * Possible values are:
          * <ul>
          *   <li>The compilation reason, in text format, passed to {@code dex2oat}.
-         *   <li>{@code "unknown"}: if the reason is empty or the optimized artifacts do not exist.
+         *   <li>{@code "unknown"}: if the reason is empty or the dexopt artifacts do not exist.
          *   <li>{@code "error"}: if an unexpected error occurs.
          * </ul>
          *
          * Note that this value can differ from the requested compilation reason passed to {@link
-         * OptimizeParams.Builder}. Specifically, if the requested reason is for app install (e.g.,
+         * DexoptParams.Builder}. Specifically, if the requested reason is for app install (e.g.,
          * "install"), and a DM file is passed to {@code dex2oat}, a "-dm" suffix will be appended
          * to the actual reason (e.g., "install-dm"). Other compilation reasons remain unchanged
          * even if a DM file is passed to {@code dex2oat}.
@@ -136,7 +134,7 @@
         public abstract @NonNull String getCompilationReason();
 
         /**
-         * A human-readable string that describes the location of the optimized artifacts.
+         * A human-readable string that describes the location of the dexopt artifacts.
          *
          * Note that this string is for debugging purposes only. There is no stability guarantees
          * for the format of the string. DO NOT use it programmatically.
diff --git a/libartservice/service/java/com/android/server/art/model/OperationProgress.java b/libartservice/service/java/com/android/server/art/model/OperationProgress.java
index 2e46f59..a47a556 100644
--- a/libartservice/service/java/com/android/server/art/model/OperationProgress.java
+++ b/libartservice/service/java/com/android/server/art/model/OperationProgress.java
@@ -44,7 +44,7 @@
     /**
      * The number of processed items. Can be 0, which means the operation was just started.
      *
-     * Currently, this is the number of packages, for which optimization has been done, regardless
+     * Currently, this is the number of packages, for which dexopt has been done, regardless
      * of the results (performed, failed, skipped, etc.).
      *
      * @hide
@@ -54,7 +54,7 @@
     /**
      * The total number of items. Stays constant during the operation.
      *
-     * Currently, this is the total number of packages to optimize.
+     * Currently, this is the total number of packages to dexopt.
      *
      * @hide
      */
diff --git a/libartservice/service/java/com/android/server/art/model/OptimizeResult.java b/libartservice/service/java/com/android/server/art/model/OptimizeResult.java
deleted file mode 100644
index 5e9bed6..0000000
--- a/libartservice/service/java/com/android/server/art/model/OptimizeResult.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.art.model;
-
-import android.annotation.DurationMillisLong;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.SystemApi;
-
-import com.android.internal.annotations.Immutable;
-
-import com.google.auto.value.AutoValue;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.List;
-
-/** @hide */
-@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-@Immutable
-@AutoValue
-public abstract class OptimizeResult {
-    // Possible values of {@link #OptimizeStatus}.
-    // A larger number means a higher priority. If multiple dex container files are processed, the
-    // final status will be the one with the highest priority.
-    public static final int OPTIMIZE_SKIPPED = 10;
-    public static final int OPTIMIZE_PERFORMED = 20;
-    public static final int OPTIMIZE_FAILED = 30;
-    public static final int OPTIMIZE_CANCELLED = 40;
-
-    /** @hide */
-    // clang-format off
-    @IntDef(prefix = {"OPTIMIZE_"}, value = {
-        OPTIMIZE_SKIPPED,
-        OPTIMIZE_FAILED,
-        OPTIMIZE_PERFORMED,
-        OPTIMIZE_CANCELLED,
-    })
-    // clang-format on
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface OptimizeStatus {}
-
-    /** @hide */
-    protected OptimizeResult() {}
-
-    /** @hide */
-    public static @NonNull OptimizeResult create(@NonNull String requestedCompilerFilter,
-            @NonNull String reason, @NonNull List<PackageOptimizeResult> packageOptimizeResult) {
-        return new AutoValue_OptimizeResult(requestedCompilerFilter, reason, packageOptimizeResult);
-    }
-
-    /**
-     * The requested compiler filter. Note that the compiler filter might be adjusted before the
-     * execution based on factors like whether the profile is available or whether the app is
-     * used by other apps.
-     *
-     * @see OptimizeParams.Builder#setCompilerFilter(String)
-     * @see DexContainerFileOptimizeResult#getActualCompilerFilter()
-     */
-    public abstract @NonNull String getRequestedCompilerFilter();
-
-    /** The compilation reason. */
-    public abstract @NonNull String getReason();
-
-    /**
-     * The result of each individual package.
-     *
-     * If the request is to optimize a single package without optimizing dependencies, the only
-     * element is the result of the requested package.
-     *
-     * If the request is to optimize a single package with {@link
-     * ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES} set, the first element is the result of the
-     * requested package, and the rest are the results of the dependency packages.
-     *
-     * If the request is to optimize multiple packages, the list contains the results of all the
-     * requested packages. The results of their dependency packages are also included if {@link
-     * ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES} is set.
-     */
-    public abstract @NonNull List<PackageOptimizeResult> getPackageOptimizeResults();
-
-    /** The final status. */
-    public @OptimizeStatus int getFinalStatus() {
-        return getPackageOptimizeResults()
-                .stream()
-                .mapToInt(result -> result.getStatus())
-                .max()
-                .orElse(OPTIMIZE_SKIPPED);
-    }
-
-    /**
-     * Describes the result of a package.
-     *
-     * @hide
-     */
-    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-    @Immutable
-    @AutoValue
-    public static abstract class PackageOptimizeResult {
-        /** @hide */
-        protected PackageOptimizeResult() {}
-
-        /** @hide */
-        public static @NonNull PackageOptimizeResult create(@NonNull String packageName,
-                @NonNull List<DexContainerFileOptimizeResult> dexContainerFileOptimizeResults,
-                boolean isCanceled) {
-            return new AutoValue_OptimizeResult_PackageOptimizeResult(
-                    packageName, dexContainerFileOptimizeResults, isCanceled);
-        }
-
-        /** The package name. */
-        public abstract @NonNull String getPackageName();
-
-        /**
-         * The results of optimizing dex container files. Note that there can be multiple entries
-         * for the same dex container file, but for different ABIs.
-         */
-        public abstract @NonNull List<DexContainerFileOptimizeResult>
-        getDexContainerFileOptimizeResults();
-
-        /** @hide */
-        public abstract boolean isCanceled();
-
-        /** The overall status of the package. */
-        public @OptimizeStatus int getStatus() {
-            return isCanceled() ? OPTIMIZE_CANCELLED
-                                : getDexContainerFileOptimizeResults()
-                                          .stream()
-                                          .mapToInt(result -> result.getStatus())
-                                          .max()
-                                          .orElse(OPTIMIZE_SKIPPED);
-        }
-
-        /** True if the package has any artifacts updated by this operation. */
-        public boolean hasUpdatedArtifacts() {
-            return getDexContainerFileOptimizeResults().stream().anyMatch(
-                    result -> result.getStatus() == OPTIMIZE_PERFORMED);
-        }
-    }
-
-    /**
-     * Describes the result of optimizing a dex container file.
-     *
-     * @hide
-     */
-    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-    @Immutable
-    @AutoValue
-    public static abstract class DexContainerFileOptimizeResult {
-        /** @hide */
-        protected DexContainerFileOptimizeResult() {}
-
-        /** @hide */
-        public static @NonNull DexContainerFileOptimizeResult create(
-                @NonNull String dexContainerFile, boolean isPrimaryAbi, @NonNull String abi,
-                @NonNull String compilerFilter, @OptimizeStatus int status,
-                long dex2oatWallTimeMillis, long dex2oatCpuTimeMillis, long sizeBytes,
-                long sizeBeforeBytes, boolean isSkippedDueToStorageLow) {
-            return new AutoValue_OptimizeResult_DexContainerFileOptimizeResult(dexContainerFile,
-                    isPrimaryAbi, abi, compilerFilter, status, dex2oatWallTimeMillis,
-                    dex2oatCpuTimeMillis, sizeBytes, sizeBeforeBytes, isSkippedDueToStorageLow);
-        }
-
-        /** The absolute path to the dex container file. */
-        public abstract @NonNull String getDexContainerFile();
-
-        /**
-         * If true, the optimization is for the primary ABI of the package (the ABI that the
-         * application is launched with). Otherwise, the optimization is for an ABI that other
-         * applications might be launched with when using this application's code.
-         */
-        public abstract boolean isPrimaryAbi();
-
-        /**
-         * Returns the ABI that the optimization is for. Possible values are documented at
-         * https://developer.android.com/ndk/guides/abis#sa.
-         */
-        public abstract @NonNull String getAbi();
-
-        /**
-         * The actual compiler filter.
-         *
-         * @see OptimizeParams.Builder#setCompilerFilter(String)
-         */
-        public abstract @NonNull String getActualCompilerFilter();
-
-        /** The status of optimizing this dex container file. */
-        public abstract @OptimizeStatus int getStatus();
-
-        /**
-         * The wall time of the dex2oat invocation, in milliseconds, if dex2oat succeeded or was
-         * cancelled. Returns 0 if dex2oat failed or was not run, or if failed to get the value.
-         */
-        public abstract @DurationMillisLong long getDex2oatWallTimeMillis();
-
-        /**
-         * The CPU time of the dex2oat invocation, in milliseconds, if dex2oat succeeded or was
-         * cancelled. Returns 0 if dex2oat failed or was not run, or if failed to get the value.
-         */
-        public abstract @DurationMillisLong long getDex2oatCpuTimeMillis();
-
-        /**
-         * The total size, in bytes, of the optimized artifacts. Returns 0 if {@link #getStatus()}
-         * is not {@link #OPTIMIZE_PERFORMED}.
-         */
-        public abstract long getSizeBytes();
-
-        /**
-         * The total size, in bytes, of the previous optimized artifacts that has been replaced.
-         * Returns 0 if there were no previous optimized artifacts or {@link #getStatus()} is not
-         * {@link #OPTIMIZE_PERFORMED}.
-         */
-        public abstract long getSizeBeforeBytes();
-
-        /** @hide */
-        public abstract boolean isSkippedDueToStorageLow();
-    }
-}
diff --git a/libartservice/service/javatests/com/android/server/art/ArtManagerLocalTest.java b/libartservice/service/javatests/com/android/server/art/ArtManagerLocalTest.java
index 5ff36a9..51987c7 100644
--- a/libartservice/service/javatests/com/android/server/art/ArtManagerLocalTest.java
+++ b/libartservice/service/javatests/com/android/server/art/ArtManagerLocalTest.java
@@ -19,7 +19,7 @@
 import static android.os.ParcelFileDescriptor.AutoCloseInputStream;
 
 import static com.android.server.art.DexUseManagerLocal.SecondaryDexInfo;
-import static com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus;
+import static com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus;
 import static com.android.server.art.testing.TestingUtils.deepEq;
 import static com.android.server.art.testing.TestingUtils.inAnyOrder;
 import static com.android.server.art.testing.TestingUtils.inAnyOrderDeepEquals;
@@ -58,9 +58,9 @@
 
 import com.android.server.art.model.Config;
 import com.android.server.art.model.DeleteResult;
-import com.android.server.art.model.OptimizationStatus;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
+import com.android.server.art.model.DexoptStatus;
 import com.android.server.art.testing.StaticMockitoRule;
 import com.android.server.art.testing.TestingUtils;
 import com.android.server.pm.PackageManagerLocal;
@@ -111,7 +111,7 @@
     @Mock private PackageManagerLocal mPackageManagerLocal;
     @Mock private PackageManagerLocal.FilteredSnapshot mSnapshot;
     @Mock private IArtd mArtd;
-    @Mock private DexOptHelper mDexOptHelper;
+    @Mock private DexoptHelper mDexOptHelper;
     @Mock private AppHibernationManager mAppHibernationManager;
     @Mock private UserManager mUserManager;
     @Mock private DexUseManagerLocal mDexUseManager;
@@ -215,10 +215,10 @@
     }
 
     @Test
-    public void testDeleteOptimizedArtifacts() throws Exception {
+    public void testdeleteDexoptArtifacts() throws Exception {
         when(mArtd.deleteArtifacts(any())).thenReturn(1l);
 
-        DeleteResult result = mArtManagerLocal.deleteOptimizedArtifacts(mSnapshot, PKG_NAME);
+        DeleteResult result = mArtManagerLocal.deleteDexoptArtifacts(mSnapshot, PKG_NAME);
         assertThat(result.getFreedBytes()).isEqualTo(5);
 
         verify(mArtd).deleteArtifacts(deepEq(AidlUtils.buildArtifactsPath(
@@ -235,7 +235,7 @@
     }
 
     @Test
-    public void testDeleteOptimizedArtifactsTranslatedIsas() throws Exception {
+    public void testdeleteDexoptArtifactsTranslatedIsas() throws Exception {
         lenient().when(SystemProperties.get("ro.dalvik.vm.isa.arm64")).thenReturn("x86_64");
         lenient().when(SystemProperties.get("ro.dalvik.vm.isa.arm")).thenReturn("x86");
         lenient().when(Constants.getPreferredAbi()).thenReturn("x86_64");
@@ -244,7 +244,7 @@
 
         when(mArtd.deleteArtifacts(any())).thenReturn(1l);
 
-        DeleteResult result = mArtManagerLocal.deleteOptimizedArtifacts(mSnapshot, PKG_NAME);
+        DeleteResult result = mArtManagerLocal.deleteDexoptArtifacts(mSnapshot, PKG_NAME);
         assertThat(result.getFreedBytes()).isEqualTo(5);
 
         verify(mArtd).deleteArtifacts(deepEq(AidlUtils.buildArtifactsPath(
@@ -262,90 +262,88 @@
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testDeleteOptimizedArtifactsPackageNotFound() throws Exception {
+    public void testdeleteDexoptArtifactsPackageNotFound() throws Exception {
         when(mSnapshot.getPackageState(anyString())).thenReturn(null);
 
-        mArtManagerLocal.deleteOptimizedArtifacts(mSnapshot, PKG_NAME);
+        mArtManagerLocal.deleteDexoptArtifacts(mSnapshot, PKG_NAME);
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testDeleteOptimizedArtifactsNoPackage() throws Exception {
+    public void testdeleteDexoptArtifactsNoPackage() throws Exception {
         when(mPkgState.getAndroidPackage()).thenReturn(null);
 
-        mArtManagerLocal.deleteOptimizedArtifacts(mSnapshot, PKG_NAME);
+        mArtManagerLocal.deleteDexoptArtifacts(mSnapshot, PKG_NAME);
     }
 
     @Test
-    public void testGetOptimizationStatus() throws Exception {
-        doReturn(createGetOptimizationStatusResult(
+    public void testGetDexoptStatus() throws Exception {
+        doReturn(createGetDexoptStatusResult(
                          "speed", "compilation-reason-0", "location-debug-string-0"))
                 .when(mArtd)
-                .getOptimizationStatus("/data/app/foo/base.apk", "arm64", "PCL[]");
-        doReturn(createGetOptimizationStatusResult(
+                .getDexoptStatus("/data/app/foo/base.apk", "arm64", "PCL[]");
+        doReturn(createGetDexoptStatusResult(
                          "speed-profile", "compilation-reason-1", "location-debug-string-1"))
                 .when(mArtd)
-                .getOptimizationStatus("/data/app/foo/base.apk", "arm", "PCL[]");
-        doReturn(createGetOptimizationStatusResult(
+                .getDexoptStatus("/data/app/foo/base.apk", "arm", "PCL[]");
+        doReturn(createGetDexoptStatusResult(
                          "verify", "compilation-reason-2", "location-debug-string-2"))
                 .when(mArtd)
-                .getOptimizationStatus("/data/app/foo/split_0.apk", "arm64", "PCL[base.apk]");
-        doReturn(createGetOptimizationStatusResult(
+                .getDexoptStatus("/data/app/foo/split_0.apk", "arm64", "PCL[base.apk]");
+        doReturn(createGetDexoptStatusResult(
                          "extract", "compilation-reason-3", "location-debug-string-3"))
                 .when(mArtd)
-                .getOptimizationStatus("/data/app/foo/split_0.apk", "arm", "PCL[base.apk]");
-        doReturn(createGetOptimizationStatusResult("run-from-apk", "unknown", "unknown"))
+                .getDexoptStatus("/data/app/foo/split_0.apk", "arm", "PCL[base.apk]");
+        doReturn(createGetDexoptStatusResult("run-from-apk", "unknown", "unknown"))
                 .when(mArtd)
-                .getOptimizationStatus("/data/user/0/foo/1.apk", "arm64", "CLC");
+                .getDexoptStatus("/data/user/0/foo/1.apk", "arm64", "CLC");
 
-        OptimizationStatus result = mArtManagerLocal.getOptimizationStatus(mSnapshot, PKG_NAME);
+        DexoptStatus result = mArtManagerLocal.getDexoptStatus(mSnapshot, PKG_NAME);
 
-        assertThat(result.getDexContainerFileOptimizationStatuses())
-                .comparingElementsUsing(
-                        TestingUtils.<DexContainerFileOptimizationStatus>deepEquality())
+        assertThat(result.getDexContainerFileDexoptStatuses())
+                .comparingElementsUsing(TestingUtils.<DexContainerFileDexoptStatus>deepEquality())
                 .containsExactly(
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/base.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/base.apk",
                                 true /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "speed", "compilation-reason-0", "location-debug-string-0"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/base.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/base.apk",
                                 true /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "speed-profile", "compilation-reason-1", "location-debug-string-1"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/split_0.apk",
                                 true /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "verify", "compilation-reason-2", "location-debug-string-2"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/split_0.apk",
                                 true /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "extract", "compilation-reason-3", "location-debug-string-3"),
-                        DexContainerFileOptimizationStatus.create("/data/user/0/foo/1.apk",
+                        DexContainerFileDexoptStatus.create("/data/user/0/foo/1.apk",
                                 false /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "run-from-apk", "unknown", "unknown"));
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testGetOptimizationStatusPackageNotFound() throws Exception {
+    public void testGetDexoptStatusPackageNotFound() throws Exception {
         when(mSnapshot.getPackageState(anyString())).thenReturn(null);
 
-        mArtManagerLocal.getOptimizationStatus(mSnapshot, PKG_NAME);
+        mArtManagerLocal.getDexoptStatus(mSnapshot, PKG_NAME);
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testGetOptimizationStatusNoPackage() throws Exception {
+    public void testGetDexoptStatusNoPackage() throws Exception {
         when(mPkgState.getAndroidPackage()).thenReturn(null);
 
-        mArtManagerLocal.getOptimizationStatus(mSnapshot, PKG_NAME);
+        mArtManagerLocal.getDexoptStatus(mSnapshot, PKG_NAME);
     }
 
     @Test
-    public void testGetOptimizationStatusNonFatalError() throws Exception {
-        when(mArtd.getOptimizationStatus(any(), any(), any()))
+    public void testGetDexoptStatusNonFatalError() throws Exception {
+        when(mArtd.getDexoptStatus(any(), any(), any()))
                 .thenThrow(new ServiceSpecificException(1 /* errorCode */, "some error message"));
 
-        OptimizationStatus result = mArtManagerLocal.getOptimizationStatus(mSnapshot, PKG_NAME);
+        DexoptStatus result = mArtManagerLocal.getDexoptStatus(mSnapshot, PKG_NAME);
 
-        List<DexContainerFileOptimizationStatus> statuses =
-                result.getDexContainerFileOptimizationStatuses();
+        List<DexContainerFileDexoptStatus> statuses = result.getDexContainerFileDexoptStatuses();
         assertThat(statuses.size()).isEqualTo(5);
 
-        for (DexContainerFileOptimizationStatus status : statuses) {
+        for (DexContainerFileDexoptStatus status : statuses) {
             assertThat(status.getCompilerFilter()).isEqualTo("error");
             assertThat(status.getCompilationReason()).isEqualTo("error");
             assertThat(status.getLocationDebugString()).isEqualTo("some error message");
@@ -384,31 +382,29 @@
     }
 
     @Test
-    public void testOptimizePackage() throws Exception {
-        var params = new OptimizeParams.Builder("install").build();
-        var result = mock(OptimizeResult.class);
+    public void testDexoptPackage() throws Exception {
+        var params = new DexoptParams.Builder("install").build();
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
         when(mDexOptHelper.dexopt(any(), deepEq(List.of(PKG_NAME)), same(params),
                      same(cancellationSignal), any()))
                 .thenReturn(result);
 
-        assertThat(
-                mArtManagerLocal.optimizePackage(mSnapshot, PKG_NAME, params, cancellationSignal))
+        assertThat(mArtManagerLocal.dexoptPackage(mSnapshot, PKG_NAME, params, cancellationSignal))
                 .isSameInstanceAs(result);
     }
 
     @Test
-    public void testResetOptimizationStatus() throws Exception {
-        var result = mock(OptimizeResult.class);
+    public void testResetDexoptStatus() throws Exception {
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
         when(mDexOptHelper.dexopt(
                      any(), deepEq(List.of(PKG_NAME)), any(), same(cancellationSignal), any()))
                 .thenReturn(result);
 
-        assertThat(
-                mArtManagerLocal.resetOptimizationStatus(mSnapshot, PKG_NAME, cancellationSignal))
+        assertThat(mArtManagerLocal.resetDexoptStatus(mSnapshot, PKG_NAME, cancellationSignal))
                 .isSameInstanceAs(result);
 
         verify(mArtd).deleteProfile(
@@ -437,23 +433,23 @@
     }
 
     @Test
-    public void testOptimizePackages() throws Exception {
-        var optimizeResult = mock(OptimizeResult.class);
+    public void testDexoptPackages() throws Exception {
+        var dexoptResult = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
         when(mDexUseManager.getPackageLastUsedAtMs(PKG_NAME_SYS_UI)).thenReturn(CURRENT_TIME_MS);
         when(mStorageManager.getAllocatableBytes(any())).thenReturn(999l);
 
         // It should use the default package list and params. The list is sorted by last active
         // time in descending order.
-        doReturn(optimizeResult)
+        doReturn(dexoptResult)
                 .when(mDexOptHelper)
                 .dexopt(any(), deepEq(List.of(PKG_NAME_SYS_UI, PKG_NAME)),
                         argThat(params -> params.getReason().equals("bg-dexopt")),
                         same(cancellationSignal), any(), any(), any());
 
-        assertThat(mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        assertThat(mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                            null /* processCallbackExecutor */, null /* processCallback */))
-                .isSameInstanceAs(optimizeResult);
+                .isSameInstanceAs(dexoptResult);
 
         // Nothing to downgrade.
         verify(mDexOptHelper, never())
@@ -462,24 +458,24 @@
     }
 
     @Test
-    public void testOptimizePackagesRecentlyInstalled() throws Exception {
+    public void testDexoptPackagesRecentlyInstalled() throws Exception {
         // The package is recently installed but hasn't been used.
         PackageUserState userState = mPkgState.getStateForUser(UserHandle.of(1));
         when(userState.getFirstInstallTimeMillis()).thenReturn(RECENT_TIME_MS);
         when(mDexUseManager.getPackageLastUsedAtMs(PKG_NAME)).thenReturn(0l);
         when(mStorageManager.getAllocatableBytes(any())).thenReturn(999l);
 
-        var result = mock(OptimizeResult.class);
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
-        // PKG_NAME should be optimized.
+        // PKG_NAME should be dexopted.
         doReturn(result)
                 .when(mDexOptHelper)
                 .dexopt(any(), inAnyOrder(PKG_NAME, PKG_NAME_SYS_UI),
                         argThat(params -> params.getReason().equals("bg-dexopt")), any(), any(),
                         any(), any());
 
-        mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                 null /* processCallbackExecutor */, null /* processCallback */);
 
         // PKG_NAME should not be downgraded.
@@ -489,17 +485,17 @@
     }
 
     @Test
-    public void testOptimizePackagesInactive() throws Exception {
+    public void testDexoptPackagesInactive() throws Exception {
         // PKG_NAME is neither recently installed nor recently used.
         PackageUserState userState = mPkgState.getStateForUser(UserHandle.of(1));
         when(userState.getFirstInstallTimeMillis()).thenReturn(NOT_RECENT_TIME_MS);
         when(mDexUseManager.getPackageLastUsedAtMs(PKG_NAME)).thenReturn(NOT_RECENT_TIME_MS);
         when(mStorageManager.getAllocatableBytes(any())).thenReturn(999l);
 
-        var result = mock(OptimizeResult.class);
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
-        // PKG_NAME should not be optimized.
+        // PKG_NAME should not be dexopted.
         doReturn(result)
                 .when(mDexOptHelper)
                 .dexopt(any(), deepEq(List.of(PKG_NAME_SYS_UI)),
@@ -513,22 +509,22 @@
                         argThat(params -> params.getReason().equals("inactive")), any(), any(),
                         any(), any());
 
-        mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                 null /* processCallbackExecutor */, null /* processCallback */);
     }
 
     @Test
-    public void testOptimizePackagesBootAfterMainlineUpdate() throws Exception {
-        var result = mock(OptimizeResult.class);
+    public void testDexoptPackagesBootAfterMainlineUpdate() throws Exception {
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
         lenient().when(mStorageManager.getAllocatableBytes(any())).thenReturn(999l);
 
-        // It should only optimize system UI.
+        // It should only dexopt system UI.
         when(mDexOptHelper.dexopt(
                      any(), deepEq(List.of(PKG_NAME_SYS_UI)), any(), any(), any(), any(), any()))
                 .thenReturn(result);
 
-        assertThat(mArtManagerLocal.optimizePackages(mSnapshot, "boot-after-mainline-update",
+        assertThat(mArtManagerLocal.dexoptPackages(mSnapshot, "boot-after-mainline-update",
                            cancellationSignal, null /* processCallbackExecutor */,
                            null /* processCallback */))
                 .isSameInstanceAs(result);
@@ -540,23 +536,23 @@
     }
 
     @Test
-    public void testOptimizePackagesOverride() throws Exception {
+    public void testDexoptPackagesOverride() throws Exception {
         // PKG_NAME is neither recently installed nor recently used.
         PackageUserState userState = mPkgState.getStateForUser(UserHandle.of(1));
         when(userState.getFirstInstallTimeMillis()).thenReturn(NOT_RECENT_TIME_MS);
         when(mDexUseManager.getPackageLastUsedAtMs(PKG_NAME)).thenReturn(NOT_RECENT_TIME_MS);
         when(mStorageManager.getAllocatableBytes(any())).thenReturn(999l);
 
-        var params = new OptimizeParams.Builder("bg-dexopt").build();
-        var result = mock(OptimizeResult.class);
+        var params = new DexoptParams.Builder("bg-dexopt").build();
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
-        mArtManagerLocal.setOptimizePackagesCallback(ForkJoinPool.commonPool(),
+        mArtManagerLocal.setBatchDexoptStartCallback(ForkJoinPool.commonPool(),
                 (snapshot, reason, defaultPackages, builder, passedSignal) -> {
                     assertThat(reason).isEqualTo("bg-dexopt");
                     assertThat(defaultPackages).containsExactly(PKG_NAME_SYS_UI);
                     assertThat(passedSignal).isSameInstanceAs(cancellationSignal);
-                    builder.setPackages(List.of(PKG_NAME)).setOptimizeParams(params);
+                    builder.setPackages(List.of(PKG_NAME)).setDexoptParams(params);
                 });
 
         // It should use the overridden package list and params.
@@ -564,7 +560,7 @@
                 .when(mDexOptHelper)
                 .dexopt(any(), deepEq(List.of(PKG_NAME)), same(params), any(), any(), any(), any());
 
-        mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                 null /* processCallbackExecutor */, null /* processCallback */);
 
         // It should not downgrade PKG_NAME because it's in the overridden package list. It should
@@ -575,38 +571,38 @@
     }
 
     @Test
-    public void testOptimizePackagesOverrideCleared() throws Exception {
-        var params = new OptimizeParams.Builder("bg-dexopt").build();
-        var result = mock(OptimizeResult.class);
+    public void testDexoptPackagesOverrideCleared() throws Exception {
+        var params = new DexoptParams.Builder("bg-dexopt").build();
+        var result = mock(DexoptResult.class);
         var cancellationSignal = new CancellationSignal();
 
-        mArtManagerLocal.setOptimizePackagesCallback(ForkJoinPool.commonPool(),
+        mArtManagerLocal.setBatchDexoptStartCallback(ForkJoinPool.commonPool(),
                 (snapshot, reason, defaultPackages, builder, passedSignal) -> {
-                    builder.setPackages(List.of(PKG_NAME)).setOptimizeParams(params);
+                    builder.setPackages(List.of(PKG_NAME)).setDexoptParams(params);
                 });
-        mArtManagerLocal.clearOptimizePackagesCallback();
+        mArtManagerLocal.clearBatchDexoptStartCallback();
 
         // It should use the default package list and params.
         when(mDexOptHelper.dexopt(any(), inAnyOrder(PKG_NAME, PKG_NAME_SYS_UI), not(same(params)),
                      same(cancellationSignal), any(), any(), any()))
                 .thenReturn(result);
 
-        assertThat(mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        assertThat(mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                            null /* processCallbackExecutor */, null /* processCallback */))
                 .isSameInstanceAs(result);
     }
 
     @Test(expected = IllegalStateException.class)
-    public void testOptimizePackagesOverrideReasonChanged() throws Exception {
-        var params = new OptimizeParams.Builder("first-boot").build();
+    public void testDexoptPackagesOverrideReasonChanged() throws Exception {
+        var params = new DexoptParams.Builder("first-boot").build();
         var cancellationSignal = new CancellationSignal();
 
-        mArtManagerLocal.setOptimizePackagesCallback(ForkJoinPool.commonPool(),
+        mArtManagerLocal.setBatchDexoptStartCallback(ForkJoinPool.commonPool(),
                 (snapshot, reason, defaultPackages, builder, passedSignal) -> {
-                    builder.setOptimizeParams(params);
+                    builder.setDexoptParams(params);
                 });
 
-        mArtManagerLocal.optimizePackages(mSnapshot, "bg-dexopt", cancellationSignal,
+        mArtManagerLocal.dexoptPackages(mSnapshot, "bg-dexopt", cancellationSignal,
                 null /* processCallbackExecutor */, null /* processCallback */);
     }
 
@@ -842,7 +838,7 @@
         PackageState sysUiPkgState = createPackageState(
                 PKG_NAME_SYS_UI, 1234 /* appId */, true /* hasPackage */, false /* multiSplit */);
 
-        // This should not be optimized because it's hibernating. However, it should be included
+        // This should not be dexopted because it's hibernating. However, it should be included
         // when snapshotting boot image profile.
         PackageState pkgHibernatingState = createPackageState(PKG_NAME_HIBERNATING,
                 10002 /* appId */, true /* hasPackage */, false /* multiSplit */);
@@ -850,15 +846,15 @@
                 .when(mAppHibernationManager.isHibernatingGlobally(PKG_NAME_HIBERNATING))
                 .thenReturn(true);
 
-        // This should not be optimized because it does't have AndroidPackage.
+        // This should not be dexopted because it does't have AndroidPackage.
         PackageState nullPkgState = createPackageState("com.example.null", 10003 /* appId */,
                 false /* hasPackage */, false /* multiSplit */);
 
-        // This should not be optimized because it has a negative app id.
+        // This should not be dexopted because it has a negative app id.
         PackageState apexPkgState = createPackageState(
                 "com.android.art", -1 /* appId */, true /* hasPackage */, false /* multiSplit */);
 
-        // This should not be optimized because it's "android".
+        // This should not be dexopted because it's "android".
         PackageState platformPkgState = createPackageState(Utils.PLATFORM_PACKAGE_NAME,
                 1000 /* appId */, true /* hasPackage */, false /* multiSplit */);
 
@@ -866,13 +862,13 @@
                 platformPkgState);
     }
 
-    private GetOptimizationStatusResult createGetOptimizationStatusResult(
+    private GetDexoptStatusResult createGetDexoptStatusResult(
             String compilerFilter, String compilationReason, String locationDebugString) {
-        var getOptimizationStatusResult = new GetOptimizationStatusResult();
-        getOptimizationStatusResult.compilerFilter = compilerFilter;
-        getOptimizationStatusResult.compilationReason = compilationReason;
-        getOptimizationStatusResult.locationDebugString = locationDebugString;
-        return getOptimizationStatusResult;
+        var getDexoptStatusResult = new GetDexoptStatusResult();
+        getDexoptStatusResult.compilerFilter = compilerFilter;
+        getDexoptStatusResult.compilationReason = compilationReason;
+        getDexoptStatusResult.locationDebugString = locationDebugString;
+        return getDexoptStatusResult;
     }
 
     private List<? extends SecondaryDexInfo> createSecondaryDexInfo() throws Exception {
diff --git a/libartservice/service/javatests/com/android/server/art/BackgroundDexOptJobTest.java b/libartservice/service/javatests/com/android/server/art/BackgroundDexoptJobTest.java
similarity index 79%
rename from libartservice/service/javatests/com/android/server/art/BackgroundDexOptJobTest.java
rename to libartservice/service/javatests/com/android/server/art/BackgroundDexoptJobTest.java
index 31d0455..6f2e825 100644
--- a/libartservice/service/javatests/com/android/server/art/BackgroundDexOptJobTest.java
+++ b/libartservice/service/javatests/com/android/server/art/BackgroundDexoptJobTest.java
@@ -40,12 +40,12 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.server.art.BackgroundDexOptJob.CompletedResult;
-import com.android.server.art.BackgroundDexOptJob.FatalErrorResult;
-import com.android.server.art.BackgroundDexOptJob.Result;
+import com.android.server.art.BackgroundDexoptJob.CompletedResult;
+import com.android.server.art.BackgroundDexoptJob.FatalErrorResult;
+import com.android.server.art.BackgroundDexoptJob.Result;
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.Config;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.testing.StaticMockitoRule;
 import com.android.server.pm.PackageManagerLocal;
 
@@ -62,23 +62,23 @@
 
 @SmallTest
 @RunWith(AndroidJUnit4.class)
-public class BackgroundDexOptJobTest {
+public class BackgroundDexoptJobTest {
     private static final long TIMEOUT_SEC = 1;
 
     @Rule
     public StaticMockitoRule mockitoRule =
-            new StaticMockitoRule(SystemProperties.class, BackgroundDexOptJobService.class);
+            new StaticMockitoRule(SystemProperties.class, BackgroundDexoptJobService.class);
 
-    @Mock private BackgroundDexOptJob.Injector mInjector;
+    @Mock private BackgroundDexoptJob.Injector mInjector;
     @Mock private ArtManagerLocal mArtManagerLocal;
     @Mock private PackageManagerLocal mPackageManagerLocal;
     @Mock private PackageManagerLocal.FilteredSnapshot mSnapshot;
     @Mock private JobScheduler mJobScheduler;
-    @Mock private OptimizeResult mOptimizeResult;
-    @Mock private BackgroundDexOptJobService mJobService;
+    @Mock private DexoptResult mDexoptResult;
+    @Mock private BackgroundDexoptJobService mJobService;
     @Mock private JobParameters mJobParameters;
     private Config mConfig;
-    private BackgroundDexOptJob mBackgroundDexOptJob;
+    private BackgroundDexoptJob mBackgroundDexOptJob;
     private Semaphore mJobFinishedCalled = new Semaphore(0);
 
     @Before
@@ -96,8 +96,8 @@
         lenient().when(mInjector.getConfig()).thenReturn(mConfig);
         lenient().when(mInjector.getJobScheduler()).thenReturn(mJobScheduler);
 
-        mBackgroundDexOptJob = new BackgroundDexOptJob(mInjector);
-        lenient().when(BackgroundDexOptJobService.getJob()).thenReturn(mBackgroundDexOptJob);
+        mBackgroundDexOptJob = new BackgroundDexoptJob(mInjector);
+        lenient().when(BackgroundDexoptJobService.getJob()).thenReturn(mBackgroundDexOptJob);
 
         lenient()
                 .doAnswer(invocation -> {
@@ -114,38 +114,38 @@
 
     @Test
     public void testStart() {
-        when(mArtManagerLocal.optimizePackages(
+        when(mArtManagerLocal.dexoptPackages(
                      same(mSnapshot), eq(ReasonMapping.REASON_BG_DEXOPT), any(), any(), any()))
-                .thenReturn(mOptimizeResult);
+                .thenReturn(mDexoptResult);
 
         Result result = Utils.getFuture(mBackgroundDexOptJob.start());
         assertThat(result).isInstanceOf(CompletedResult.class);
-        assertThat(((CompletedResult) result).dexoptResult()).isSameInstanceAs(mOptimizeResult);
+        assertThat(((CompletedResult) result).dexoptResult()).isSameInstanceAs(mDexoptResult);
     }
 
     @Test
     public void testStartAlreadyRunning() {
-        Semaphore optimizeDone = new Semaphore(0);
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
+        Semaphore dexoptDone = new Semaphore(0);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
                 .thenAnswer(invocation -> {
-                    assertThat(optimizeDone.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
-                    return mOptimizeResult;
+                    assertThat(dexoptDone.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
+                    return mDexoptResult;
                 });
 
         Future<Result> future1 = mBackgroundDexOptJob.start();
         Future<Result> future2 = mBackgroundDexOptJob.start();
         assertThat(future1).isSameInstanceAs(future2);
 
-        optimizeDone.release();
+        dexoptDone.release();
         Utils.getFuture(future1);
 
-        verify(mArtManagerLocal, times(1)).optimizePackages(any(), any(), any(), any(), any());
+        verify(mArtManagerLocal, times(1)).dexoptPackages(any(), any(), any(), any(), any());
     }
 
     @Test
     public void testStartAnother() {
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
-                .thenReturn(mOptimizeResult);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
+                .thenReturn(mDexoptResult);
 
         Future<Result> future1 = mBackgroundDexOptJob.start();
         Utils.getFuture(future1);
@@ -156,7 +156,7 @@
 
     @Test
     public void testStartFatalError() {
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
                 .thenThrow(IllegalStateException.class);
 
         Result result = Utils.getFuture(mBackgroundDexOptJob.start());
@@ -169,8 +169,8 @@
                 .when(SystemProperties.getBoolean(eq("pm.dexopt.disable_bg_dexopt"), anyBoolean()))
                 .thenReturn(true);
 
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
-                .thenReturn(mOptimizeResult);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
+                .thenReturn(mDexoptResult);
 
         // The `start` method should ignore the system property. The system property is for
         // `schedule`.
@@ -179,19 +179,18 @@
 
     @Test
     public void testCancel() {
-        Semaphore optimizeCancelled = new Semaphore(0);
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
+        Semaphore dexoptCancelled = new Semaphore(0);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
                 .thenAnswer(invocation -> {
-                    assertThat(optimizeCancelled.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS))
-                            .isTrue();
+                    assertThat(dexoptCancelled.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
                     var cancellationSignal = invocation.<CancellationSignal>getArgument(2);
                     assertThat(cancellationSignal.isCanceled()).isTrue();
-                    return mOptimizeResult;
+                    return mDexoptResult;
                 });
 
         Future<Result> future = mBackgroundDexOptJob.start();
         mBackgroundDexOptJob.cancel();
-        optimizeCancelled.release();
+        dexoptCancelled.release();
         Utils.getFuture(future);
     }
 
@@ -203,7 +202,7 @@
         assertThat(mBackgroundDexOptJob.schedule()).isEqualTo(ArtFlags.SCHEDULE_SUCCESS);
 
         JobInfo jobInfo = captor.getValue();
-        assertThat(jobInfo.getIntervalMillis()).isEqualTo(BackgroundDexOptJob.JOB_INTERVAL_MS);
+        assertThat(jobInfo.getIntervalMillis()).isEqualTo(BackgroundDexoptJob.JOB_INTERVAL_MS);
         assertThat(jobInfo.isRequireDeviceIdle()).isTrue();
         assertThat(jobInfo.isRequireCharging()).isTrue();
         assertThat(jobInfo.isRequireBatteryNotLow()).isTrue();
@@ -234,7 +233,7 @@
         assertThat(mBackgroundDexOptJob.schedule()).isEqualTo(ArtFlags.SCHEDULE_SUCCESS);
 
         JobInfo jobInfo = captor.getValue();
-        assertThat(jobInfo.getIntervalMillis()).isEqualTo(BackgroundDexOptJob.JOB_INTERVAL_MS);
+        assertThat(jobInfo.getIntervalMillis()).isEqualTo(BackgroundDexoptJob.JOB_INTERVAL_MS);
         assertThat(jobInfo.isRequireDeviceIdle()).isTrue();
         assertThat(jobInfo.isRequireCharging()).isTrue();
         assertThat(jobInfo.isRequireBatteryNotLow()).isFalse();
@@ -272,9 +271,9 @@
 
     @Test
     public void testWantsRescheduleFalsePerformed() throws Exception {
-        when(mOptimizeResult.getFinalStatus()).thenReturn(OptimizeResult.OPTIMIZE_PERFORMED);
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
-                .thenReturn(mOptimizeResult);
+        when(mDexoptResult.getFinalStatus()).thenReturn(DexoptResult.DEXOPT_PERFORMED);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
+                .thenReturn(mDexoptResult);
 
         mBackgroundDexOptJob.onStartJob(mJobService, mJobParameters);
         assertThat(mJobFinishedCalled.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
@@ -284,7 +283,7 @@
 
     @Test
     public void testWantsRescheduleFalseFatalError() throws Exception {
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
                 .thenThrow(RuntimeException.class);
 
         mBackgroundDexOptJob.onStartJob(mJobService, mJobParameters);
@@ -295,9 +294,9 @@
 
     @Test
     public void testWantsRescheduleTrue() throws Exception {
-        when(mOptimizeResult.getFinalStatus()).thenReturn(OptimizeResult.OPTIMIZE_CANCELLED);
-        when(mArtManagerLocal.optimizePackages(any(), any(), any(), any(), any()))
-                .thenReturn(mOptimizeResult);
+        when(mDexoptResult.getFinalStatus()).thenReturn(DexoptResult.DEXOPT_CANCELLED);
+        when(mArtManagerLocal.dexoptPackages(any(), any(), any(), any(), any()))
+                .thenReturn(mDexoptResult);
 
         mBackgroundDexOptJob.onStartJob(mJobService, mJobParameters);
         assertThat(mJobFinishedCalled.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
diff --git a/libartservice/service/javatests/com/android/server/art/DexOptHelperTest.java b/libartservice/service/javatests/com/android/server/art/DexOptHelperTest.java
index 71735bb..8530828 100644
--- a/libartservice/service/javatests/com/android/server/art/DexOptHelperTest.java
+++ b/libartservice/service/javatests/com/android/server/art/DexOptHelperTest.java
@@ -16,10 +16,10 @@
 
 package com.android.server.art;
 
-import static com.android.server.art.ArtManagerLocal.OptimizePackageDoneCallback;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
-import static com.android.server.art.model.OptimizeResult.OptimizeStatus;
-import static com.android.server.art.model.OptimizeResult.PackageOptimizeResult;
+import static com.android.server.art.ArtManagerLocal.DexoptDoneCallback;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
+import static com.android.server.art.model.DexoptResult.DexoptResultStatus;
+import static com.android.server.art.model.DexoptResult.PackageDexoptResult;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -46,9 +46,9 @@
 
 import com.android.server.art.model.ArtFlags;
 import com.android.server.art.model.Config;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.model.OperationProgress;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.AndroidPackageSplit;
@@ -82,7 +82,7 @@
     private static final String PKG_NAME_LIB4 = "com.example.lib4";
     private static final String PKG_NAME_LIBBAZ = "com.example.libbaz";
 
-    @Mock private DexOptHelper.Injector mInjector;
+    @Mock private DexoptHelper.Injector mInjector;
     @Mock private PrimaryDexOptimizer mPrimaryDexOptimizer;
     @Mock private SecondaryDexOptimizer mSecondaryDexOptimizer;
     @Mock private AppHibernationManager mAhm;
@@ -103,12 +103,12 @@
     private AndroidPackage mPkgLibbaz;
     private CancellationSignal mCancellationSignal;
     private ExecutorService mExecutor;
-    private List<DexContainerFileOptimizeResult> mPrimaryResults;
-    private List<DexContainerFileOptimizeResult> mSecondaryResults;
+    private List<DexContainerFileDexoptResult> mPrimaryResults;
+    private List<DexContainerFileDexoptResult> mSecondaryResults;
     private Config mConfig;
-    private OptimizeParams mParams;
+    private DexoptParams mParams;
     private List<String> mRequestedPackages;
-    private DexOptHelper mDexOptHelper;
+    private DexoptHelper mDexOptHelper;
 
     @Before
     public void setUp() throws Exception {
@@ -125,12 +125,12 @@
 
         preparePackagesAndLibraries();
 
-        mPrimaryResults = createResults("/data/app/foo/base.apk",
-                OptimizeResult.OPTIMIZE_PERFORMED /* status1 */,
-                OptimizeResult.OPTIMIZE_PERFORMED /* status2 */);
+        mPrimaryResults =
+                createResults("/data/app/foo/base.apk", DexoptResult.DEXOPT_PERFORMED /* status1 */,
+                        DexoptResult.DEXOPT_PERFORMED /* status2 */);
         mSecondaryResults = createResults("/data/user_de/0/foo/foo.apk",
-                OptimizeResult.OPTIMIZE_PERFORMED /* status1 */,
-                OptimizeResult.OPTIMIZE_PERFORMED /* status2 */);
+                DexoptResult.DEXOPT_PERFORMED /* status1 */,
+                DexoptResult.DEXOPT_PERFORMED /* status2 */);
 
         lenient()
                 .when(mInjector.getPrimaryDexOptimizer(any(), any(), any(), any()))
@@ -142,7 +142,7 @@
                 .thenReturn(mSecondaryDexOptimizer);
         lenient().when(mSecondaryDexOptimizer.dexopt()).thenReturn(mSecondaryResults);
 
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_FOR_SECONDARY_DEX
                                           | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES,
@@ -154,7 +154,7 @@
         lenient().when(mInjector.getPowerManager()).thenReturn(mPowerManager);
         lenient().when(mInjector.getConfig()).thenReturn(mConfig);
 
-        mDexOptHelper = new DexOptHelper(mInjector);
+        mDexOptHelper = new DexoptHelper(mInjector);
     }
 
     @After
@@ -166,33 +166,33 @@
     public void testDexopt() throws Exception {
         // Only package libbaz fails.
         var failingPrimaryDexOptimizer = mock(PrimaryDexOptimizer.class);
-        List<DexContainerFileOptimizeResult> partialFailureResults = createResults(
-                "/data/app/foo/base.apk", OptimizeResult.OPTIMIZE_PERFORMED /* status1 */,
-                OptimizeResult.OPTIMIZE_FAILED /* status2 */);
+        List<DexContainerFileDexoptResult> partialFailureResults =
+                createResults("/data/app/foo/base.apk", DexoptResult.DEXOPT_PERFORMED /* status1 */,
+                        DexoptResult.DEXOPT_FAILED /* status2 */);
         lenient().when(failingPrimaryDexOptimizer.dexopt()).thenReturn(partialFailureResults);
         when(mInjector.getPrimaryDexOptimizer(same(mPkgStateLibbaz), any(), any(), any()))
                 .thenReturn(failingPrimaryDexOptimizer);
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
         assertThat(result.getRequestedCompilerFilter()).isEqualTo("speed-profile");
         assertThat(result.getReason()).isEqualTo("install");
-        assertThat(result.getFinalStatus()).isEqualTo(OptimizeResult.OPTIMIZE_FAILED);
+        assertThat(result.getFinalStatus()).isEqualTo(DexoptResult.DEXOPT_FAILED);
 
         // The requested packages must come first.
-        assertThat(result.getPackageOptimizeResults()).hasSize(6);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getPackageDexoptResults()).hasSize(6);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, OptimizeResult.OPTIMIZE_FAILED,
+        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_FAILED,
                 List.of(partialFailureResults, mSecondaryResults));
-        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
 
         // The order matters. It should acquire the wake lock only once, at the beginning, and
@@ -235,51 +235,51 @@
 
     @Test
     public void testDexoptNoDependencies() throws Exception {
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_FOR_SECONDARY_DEX,
                                   ArtFlags.FLAG_FOR_SECONDARY_DEX
                                           | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES)
                           .build();
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getPackageOptimizeResults()).hasSize(3);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getPackageDexoptResults()).hasSize(3);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ,
-                OptimizeResult.OPTIMIZE_PERFORMED, List.of(mPrimaryResults, mSecondaryResults));
+        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_PERFORMED,
+                List.of(mPrimaryResults, mSecondaryResults));
 
         verifyNoMoreDexopt(3 /* expectedPrimaryTimes */, 3 /* expectedSecondaryTimes */);
     }
 
     @Test
     public void testDexoptPrimaryOnly() throws Exception {
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES,
                                   ArtFlags.FLAG_FOR_SECONDARY_DEX
                                           | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES)
                           .build();
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getPackageOptimizeResults()).hasSize(6);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getPackageDexoptResults()).hasSize(6);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ,
-                OptimizeResult.OPTIMIZE_PERFORMED, List.of(mPrimaryResults));
-        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, DexoptResult.DEXOPT_PERFORMED,
+                List.of(mPrimaryResults));
+        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
 
         verifyNoMoreDexopt(6 /* expectedPrimaryTimes */, 0 /* expectedSecondaryTimes */);
@@ -287,23 +287,23 @@
 
     @Test
     public void testDexoptPrimaryOnlyNoDependencies() throws Exception {
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(0,
                                   ArtFlags.FLAG_FOR_SECONDARY_DEX
                                           | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES)
                           .build();
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getPackageOptimizeResults()).hasSize(3);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getPackageDexoptResults()).hasSize(3);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults));
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ,
-                OptimizeResult.OPTIMIZE_PERFORMED, List.of(mPrimaryResults));
+        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_PERFORMED,
+                List.of(mPrimaryResults));
 
         verifyNoMoreDexopt(3 /* expectedPrimaryTimes */, 0 /* expectedSecondaryTimes */);
     }
@@ -315,24 +315,24 @@
             return mPrimaryResults;
         });
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getFinalStatus()).isEqualTo(OptimizeResult.OPTIMIZE_CANCELLED);
+        assertThat(result.getFinalStatus()).isEqualTo(DexoptResult.DEXOPT_CANCELLED);
 
-        assertThat(result.getPackageOptimizeResults()).hasSize(6);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_CANCELLED,
+        assertThat(result.getPackageDexoptResults()).hasSize(6);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_CANCELLED,
                 List.of(mPrimaryResults));
         checkPackageResult(
-                result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_CANCELLED, List.of());
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ,
-                OptimizeResult.OPTIMIZE_CANCELLED, List.of());
+                result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_CANCELLED, List.of());
         checkPackageResult(
-                result, 3 /* index */, PKG_NAME_LIB1, OptimizeResult.OPTIMIZE_CANCELLED, List.of());
+                result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_CANCELLED, List.of());
         checkPackageResult(
-                result, 4 /* index */, PKG_NAME_LIB2, OptimizeResult.OPTIMIZE_CANCELLED, List.of());
+                result, 3 /* index */, PKG_NAME_LIB1, DexoptResult.DEXOPT_CANCELLED, List.of());
         checkPackageResult(
-                result, 5 /* index */, PKG_NAME_LIB4, OptimizeResult.OPTIMIZE_CANCELLED, List.of());
+                result, 4 /* index */, PKG_NAME_LIB2, DexoptResult.DEXOPT_CANCELLED, List.of());
+        checkPackageResult(
+                result, 5 /* index */, PKG_NAME_LIB4, DexoptResult.DEXOPT_CANCELLED, List.of());
 
         verify(mInjector).getPrimaryDexOptimizer(
                 same(mPkgStateFoo), same(mPkgFoo), same(mParams), same(mCancellationSignal));
@@ -345,13 +345,13 @@
         when(mPkgFoo.getSplits().get(0).isHasCode()).thenReturn(false);
 
         mRequestedPackages = List.of(PKG_NAME_FOO);
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getFinalStatus()).isEqualTo(OptimizeResult.OPTIMIZE_SKIPPED);
-        assertThat(result.getPackageOptimizeResults()).hasSize(1);
+        assertThat(result.getFinalStatus()).isEqualTo(DexoptResult.DEXOPT_SKIPPED);
+        assertThat(result.getPackageDexoptResults()).hasSize(1);
         checkPackageResult(
-                result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_SKIPPED, List.of());
+                result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_SKIPPED, List.of());
 
         verifyNoDexopt();
     }
@@ -361,12 +361,12 @@
         when(mPkgLib1.getSplits().get(0).isHasCode()).thenReturn(false);
 
         mRequestedPackages = List.of(PKG_NAME_FOO);
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getFinalStatus()).isEqualTo(OptimizeResult.OPTIMIZE_PERFORMED);
-        assertThat(result.getPackageOptimizeResults()).hasSize(1);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getFinalStatus()).isEqualTo(DexoptResult.DEXOPT_PERFORMED);
+        assertThat(result.getPackageDexoptResults()).hasSize(1);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
 
         verifyNoMoreDexopt(1 /* expectedPrimaryTimes */, 1 /* expectedSecondaryTimes */);
@@ -377,12 +377,12 @@
         lenient().when(mAhm.isHibernatingGlobally(PKG_NAME_FOO)).thenReturn(true);
 
         mRequestedPackages = List.of(PKG_NAME_FOO);
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getFinalStatus()).isEqualTo(OptimizeResult.OPTIMIZE_SKIPPED);
+        assertThat(result.getFinalStatus()).isEqualTo(DexoptResult.DEXOPT_SKIPPED);
         checkPackageResult(
-                result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_SKIPPED, List.of());
+                result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_SKIPPED, List.of());
 
         verifyNoDexopt();
     }
@@ -392,21 +392,21 @@
         lenient().when(mAhm.isHibernatingGlobally(PKG_NAME_FOO)).thenReturn(true);
         lenient().when(mAhm.isOatArtifactDeletionEnabled()).thenReturn(false);
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
-        assertThat(result.getPackageOptimizeResults()).hasSize(6);
-        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, OptimizeResult.OPTIMIZE_PERFORMED,
+        assertThat(result.getPackageDexoptResults()).hasSize(6);
+        checkPackageResult(result, 0 /* index */, PKG_NAME_FOO, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 1 /* index */, PKG_NAME_BAR, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ,
-                OptimizeResult.OPTIMIZE_PERFORMED, List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 2 /* index */, PKG_NAME_LIBBAZ, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 3 /* index */, PKG_NAME_LIB1, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
-        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, OptimizeResult.OPTIMIZE_PERFORMED,
+        checkPackageResult(result, 4 /* index */, PKG_NAME_LIB2, DexoptResult.DEXOPT_PERFORMED,
+                List.of(mPrimaryResults, mSecondaryResults));
+        checkPackageResult(result, 5 /* index */, PKG_NAME_LIB4, DexoptResult.DEXOPT_PERFORMED,
                 List.of(mPrimaryResults, mSecondaryResults));
     }
 
@@ -446,7 +446,7 @@
     @Test
     public void testDexoptSplit() throws Exception {
         mRequestedPackages = List.of(PKG_NAME_FOO);
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                           .setSplitName("split_0")
@@ -459,7 +459,7 @@
     @Test
     public void testDexoptSplitNotFound() throws Exception {
         mRequestedPackages = List.of(PKG_NAME_FOO);
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                           .setSplitName("split_bogus")
@@ -473,15 +473,15 @@
 
     @Test
     public void testCallbacks() throws Exception {
-        List<OptimizeResult> list1 = new ArrayList<>();
-        mConfig.addOptimizePackageDoneCallback(
+        List<DexoptResult> list1 = new ArrayList<>();
+        mConfig.addDexoptDoneCallback(
                 false /* onlyIncludeUpdates */, Runnable::run, result -> list1.add(result));
 
-        List<OptimizeResult> list2 = new ArrayList<>();
-        mConfig.addOptimizePackageDoneCallback(
+        List<DexoptResult> list2 = new ArrayList<>();
+        mConfig.addDexoptDoneCallback(
                 false /* onlyIncludeUpdates */, Runnable::run, result -> list2.add(result));
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
         assertThat(list1).containsExactly(result);
@@ -490,18 +490,17 @@
 
     @Test
     public void testCallbackRemoved() throws Exception {
-        List<OptimizeResult> list1 = new ArrayList<>();
-        OptimizePackageDoneCallback callback1 = result -> list1.add(result);
-        mConfig.addOptimizePackageDoneCallback(
-                false /* onlyIncludeUpdates */, Runnable::run, callback1);
+        List<DexoptResult> list1 = new ArrayList<>();
+        DexoptDoneCallback callback1 = result -> list1.add(result);
+        mConfig.addDexoptDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, callback1);
 
-        List<OptimizeResult> list2 = new ArrayList<>();
-        mConfig.addOptimizePackageDoneCallback(
+        List<DexoptResult> list2 = new ArrayList<>();
+        mConfig.addDexoptDoneCallback(
                 false /* onlyIncludeUpdates */, Runnable::run, result -> list2.add(result));
 
-        mConfig.removeOptimizePackageDoneCallback(callback1);
+        mConfig.removeDexoptDoneCallback(callback1);
 
-        OptimizeResult result = mDexOptHelper.dexopt(
+        DexoptResult result = mDexOptHelper.dexopt(
                 mSnapshot, mRequestedPackages, mParams, mCancellationSignal, mExecutor);
 
         assertThat(list1).isEmpty();
@@ -510,18 +509,16 @@
 
     @Test(expected = IllegalStateException.class)
     public void testCallbackAlreadyAdded() throws Exception {
-        List<OptimizeResult> list = new ArrayList<>();
-        OptimizePackageDoneCallback callback = result -> list.add(result);
-        mConfig.addOptimizePackageDoneCallback(
-                false /* onlyIncludeUpdates */, Runnable::run, callback);
-        mConfig.addOptimizePackageDoneCallback(
-                false /* onlyIncludeUpdates */, Runnable::run, callback);
+        List<DexoptResult> list = new ArrayList<>();
+        DexoptDoneCallback callback = result -> list.add(result);
+        mConfig.addDexoptDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, callback);
+        mConfig.addDexoptDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, callback);
     }
 
-    // Tests `addOptimizePackageDoneCallback` with `onlyIncludeUpdates` being true and false.
+    // Tests `addDexoptDoneCallback` with `onlyIncludeUpdates` being true and false.
     @Test
     public void testCallbackWithFailureResults() throws Exception {
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(0,
                                   ArtFlags.FLAG_FOR_SECONDARY_DEX
@@ -529,52 +526,52 @@
                           .build();
 
         // This list should collect all results.
-        List<OptimizeResult> listAll = new ArrayList<>();
-        mConfig.addOptimizePackageDoneCallback(
+        List<DexoptResult> listAll = new ArrayList<>();
+        mConfig.addDexoptDoneCallback(
                 false /* onlyIncludeUpdates */, Runnable::run, result -> listAll.add(result));
 
         // This list should only collect results that have updates.
-        List<OptimizeResult> listOnlyIncludeUpdates = new ArrayList<>();
-        mConfig.addOptimizePackageDoneCallback(true /* onlyIncludeUpdates */, Runnable::run,
+        List<DexoptResult> listOnlyIncludeUpdates = new ArrayList<>();
+        mConfig.addDexoptDoneCallback(true /* onlyIncludeUpdates */, Runnable::run,
                 result -> listOnlyIncludeUpdates.add(result));
 
         // Dexopt partially fails on package "foo".
-        List<DexContainerFileOptimizeResult> partialFailureResults = createResults(
-                "/data/app/foo/base.apk", OptimizeResult.OPTIMIZE_PERFORMED /* status1 */,
-                OptimizeResult.OPTIMIZE_FAILED /* status2 */);
+        List<DexContainerFileDexoptResult> partialFailureResults =
+                createResults("/data/app/foo/base.apk", DexoptResult.DEXOPT_PERFORMED /* status1 */,
+                        DexoptResult.DEXOPT_FAILED /* status2 */);
         var fooPrimaryDexOptimizer = mock(PrimaryDexOptimizer.class);
         when(mInjector.getPrimaryDexOptimizer(same(mPkgStateFoo), any(), any(), any()))
                 .thenReturn(fooPrimaryDexOptimizer);
         when(fooPrimaryDexOptimizer.dexopt()).thenReturn(partialFailureResults);
 
         // Dexopt totally fails on package "bar".
-        List<DexContainerFileOptimizeResult> totalFailureResults = createResults(
-                "/data/app/bar/base.apk", OptimizeResult.OPTIMIZE_FAILED /* status1 */,
-                OptimizeResult.OPTIMIZE_FAILED /* status2 */);
+        List<DexContainerFileDexoptResult> totalFailureResults =
+                createResults("/data/app/bar/base.apk", DexoptResult.DEXOPT_FAILED /* status1 */,
+                        DexoptResult.DEXOPT_FAILED /* status2 */);
         var barPrimaryDexOptimizer = mock(PrimaryDexOptimizer.class);
         when(mInjector.getPrimaryDexOptimizer(same(mPkgStateBar), any(), any(), any()))
                 .thenReturn(barPrimaryDexOptimizer);
         when(barPrimaryDexOptimizer.dexopt()).thenReturn(totalFailureResults);
 
-        OptimizeResult resultWithSomeUpdates = mDexOptHelper.dexopt(mSnapshot,
+        DexoptResult resultWithSomeUpdates = mDexOptHelper.dexopt(mSnapshot,
                 List.of(PKG_NAME_FOO, PKG_NAME_BAR), mParams, mCancellationSignal, mExecutor);
-        OptimizeResult resultWithNoUpdates = mDexOptHelper.dexopt(
+        DexoptResult resultWithNoUpdates = mDexOptHelper.dexopt(
                 mSnapshot, List.of(PKG_NAME_BAR), mParams, mCancellationSignal, mExecutor);
 
         assertThat(listAll).containsExactly(resultWithSomeUpdates, resultWithNoUpdates);
 
         assertThat(listOnlyIncludeUpdates).hasSize(1);
         assertThat(listOnlyIncludeUpdates.get(0)
-                           .getPackageOptimizeResults()
+                           .getPackageDexoptResults()
                            .stream()
-                           .map(PackageOptimizeResult::getPackageName)
+                           .map(PackageDexoptResult::getPackageName)
                            .collect(Collectors.toList()))
                 .containsExactly(PKG_NAME_FOO);
     }
 
     @Test
     public void testProgressCallback() throws Exception {
-        mParams = new OptimizeParams.Builder("install")
+        mParams = new DexoptParams.Builder("install")
                           .setCompilerFilter("speed-profile")
                           .setFlags(ArtFlags.FLAG_FOR_SECONDARY_DEX,
                                   ArtFlags.FLAG_FOR_SECONDARY_DEX
@@ -706,26 +703,26 @@
                 .getSecondaryDexOptimizer(any(), any(), any(), any());
     }
 
-    private List<DexContainerFileOptimizeResult> createResults(
-            String dexPath, @OptimizeStatus int status1, @OptimizeStatus int status2) {
-        return List.of(DexContainerFileOptimizeResult.create(dexPath, true /* isPrimaryAbi */,
+    private List<DexContainerFileDexoptResult> createResults(
+            String dexPath, @DexoptResultStatus int status1, @DexoptResultStatus int status2) {
+        return List.of(DexContainerFileDexoptResult.create(dexPath, true /* isPrimaryAbi */,
                                "arm64-v8a", "verify", status1, 100 /* dex2oatWallTimeMillis */,
                                400 /* dex2oatCpuTimeMillis */, 0 /* sizeBytes */,
                                0 /* sizeBeforeBytes */, false /* isSkippedDueToStorageLow */),
-                DexContainerFileOptimizeResult.create(dexPath, false /* isPrimaryAbi */,
+                DexContainerFileDexoptResult.create(dexPath, false /* isPrimaryAbi */,
                         "armeabi-v7a", "verify", status2, 100 /* dex2oatWallTimeMillis */,
                         400 /* dex2oatCpuTimeMillis */, 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                         false /* isSkippedDueToStorageLow */));
     }
 
-    private void checkPackageResult(OptimizeResult result, int index, String packageName,
-            @OptimizeResult.OptimizeStatus int status,
-            List<List<DexContainerFileOptimizeResult>> dexContainerFileOptimizeResults) {
-        PackageOptimizeResult packageResult = result.getPackageOptimizeResults().get(index);
+    private void checkPackageResult(DexoptResult result, int index, String packageName,
+            @DexoptResult.DexoptResultStatus int status,
+            List<List<DexContainerFileDexoptResult>> dexContainerFileDexoptResults) {
+        PackageDexoptResult packageResult = result.getPackageDexoptResults().get(index);
         assertThat(packageResult.getPackageName()).isEqualTo(packageName);
         assertThat(packageResult.getStatus()).isEqualTo(status);
-        assertThat(packageResult.getDexContainerFileOptimizeResults())
-                .containsExactlyElementsIn(dexContainerFileOptimizeResults.stream()
+        assertThat(packageResult.getDexContainerFileDexoptResults())
+                .containsExactlyElementsIn(dexContainerFileDexoptResults.stream()
                                                    .flatMap(r -> r.stream())
                                                    .collect(Collectors.toList()));
     }
diff --git a/libartservice/service/javatests/com/android/server/art/DumpHelperTest.java b/libartservice/service/javatests/com/android/server/art/DumpHelperTest.java
index 23102a3..9a518ed 100644
--- a/libartservice/service/javatests/com/android/server/art/DumpHelperTest.java
+++ b/libartservice/service/javatests/com/android/server/art/DumpHelperTest.java
@@ -18,7 +18,7 @@
 
 import static com.android.server.art.DexUseManagerLocal.DexLoader;
 import static com.android.server.art.DexUseManagerLocal.SecondaryDexInfo;
-import static com.android.server.art.model.OptimizationStatus.DexContainerFileOptimizationStatus;
+import static com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -29,7 +29,7 @@
 
 import androidx.test.filters.SmallTest;
 
-import com.android.server.art.model.OptimizationStatus;
+import com.android.server.art.model.DexoptStatus;
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageState;
@@ -131,31 +131,31 @@
 
     private void setUpForFoo() {
         // The order of the dex path and the ABI should be kept in the output.
-        var status = OptimizationStatus.create(
-                List.of(DexContainerFileOptimizationStatus.create("/data/app/foo/base.apk",
+        var status = DexoptStatus.create(
+                List.of(DexContainerFileDexoptStatus.create("/data/app/foo/base.apk",
                                 true /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "speed-profile", "bg-dexopt", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/base.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/base.apk",
                                 true /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "verify", "install", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/split_0.apk",
                                 true /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "verify", "vdex", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/foo/split_0.apk",
                                 true /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "verify", "vdex", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/user_de/0/foo/1.apk",
+                        DexContainerFileDexoptStatus.create("/data/user_de/0/foo/1.apk",
                                 false /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "run-from-apk", "unknown", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/user_de/0/foo/2.apk",
+                        DexContainerFileDexoptStatus.create("/data/user_de/0/foo/2.apk",
                                 false /* isPrimaryDex */, true /* isPrimaryAbi */, "arm64-v8a",
                                 "speed-profile", "bg-dexopt", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/user_de/0/foo/2.apk",
+                        DexContainerFileDexoptStatus.create("/data/user_de/0/foo/2.apk",
                                 false /* isPrimaryDex */, false /* isPrimaryAbi */, "armeabi-v7a",
                                 "verify", "vdex", "location-ignored")));
 
         lenient()
-                .when(mArtManagerLocal.getOptimizationStatus(any(), eq(PKG_NAME_FOO)))
+                .when(mArtManagerLocal.getDexoptStatus(any(), eq(PKG_NAME_FOO)))
                 .thenReturn(status);
 
         // The output should not show "used by other apps:".
@@ -200,16 +200,16 @@
         // The order of the ABI should be kept in the output, despite that it's different from the
         // order for package "foo".
         // The output should not show "known secondary dex files:".
-        var status = OptimizationStatus.create(
-                List.of(DexContainerFileOptimizationStatus.create("/data/app/bar/base.apk",
+        var status = DexoptStatus.create(
+                List.of(DexContainerFileDexoptStatus.create("/data/app/bar/base.apk",
                                 true /* isPrimaryDex */, true /* isPrimaryAbi */, "armeabi-v7a",
                                 "verify", "install", "location-ignored"),
-                        DexContainerFileOptimizationStatus.create("/data/app/bar/base.apk",
+                        DexContainerFileDexoptStatus.create("/data/app/bar/base.apk",
                                 true /* isPrimaryDex */, false /* isPrimaryAbi */, "arm64-v8a",
                                 "verify", "install", "location-ignored")));
 
         lenient()
-                .when(mArtManagerLocal.getOptimizationStatus(any(), eq(PKG_NAME_BAR)))
+                .when(mArtManagerLocal.getDexoptStatus(any(), eq(PKG_NAME_BAR)))
                 .thenReturn(status);
 
         lenient()
diff --git a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerParameterizedTest.java b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerParameterizedTest.java
index 45a89d4..717a5d3 100644
--- a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerParameterizedTest.java
+++ b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerParameterizedTest.java
@@ -20,7 +20,7 @@
 import static com.android.server.art.AidlUtils.buildOutputArtifacts;
 import static com.android.server.art.AidlUtils.buildPermissionSettings;
 import static com.android.server.art.OutputArtifacts.PermissionSettings;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
 import static com.android.server.art.testing.TestingUtils.deepEq;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -44,8 +44,8 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.server.art.model.ArtFlags;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.testing.OnSuccessRule;
 import com.android.server.art.testing.TestingUtils;
 
@@ -69,7 +69,7 @@
         verifyNoMoreInteractions(mArtd);
     });
 
-    private OptimizeParams mOptimizeParams;
+    private DexoptParams mDexoptParams;
 
     private PrimaryDexOptimizer mPrimaryDexOptimizer;
 
@@ -184,8 +184,8 @@
         lenient().when(mPkgState.isSystem()).thenReturn(mParams.mIsSystem);
         lenient().when(mPkgState.isUpdatedSystemApp()).thenReturn(mParams.mIsUpdatedSystemApp);
 
-        mOptimizeParams =
-                new OptimizeParams.Builder("install")
+        mDexoptParams =
+                new DexoptParams.Builder("install")
                         .setCompilerFilter(mParams.mRequestedCompilerFilter)
                         .setPriorityClass(ArtFlags.PRIORITY_INTERACTIVE)
                         .setFlags(mParams.mForce ? ArtFlags.FLAG_FORCE : 0, ArtFlags.FLAG_FORCE)
@@ -196,7 +196,7 @@
                         .build();
 
         mPrimaryDexOptimizer = new PrimaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
     }
 
     @Test
@@ -222,7 +222,7 @@
                 .when(mArtd)
                 .getDexoptNeeded("/data/app/foo/base.apk", "arm64", "PCL[]",
                         mParams.mExpectedCompilerFilter, mParams.mExpectedDexoptTrigger);
-        doReturn(createDexoptResult(false /* cancelled */, 100 /* wallTimeMs */,
+        doReturn(createArtdDexoptResult(false /* cancelled */, 100 /* wallTimeMs */,
                          400 /* cpuTimeMs */, 30000 /* sizeBytes */, 32000 /* sizeBeforeBytes */))
                 .when(mArtd)
                 .dexopt(deepEq(buildOutputArtifacts("/data/app/foo/base.apk", "arm64",
@@ -257,7 +257,7 @@
                 .when(mArtd)
                 .getDexoptNeeded("/data/app/foo/split_0.apk", "arm", "PCL[base.apk]",
                         mParams.mExpectedCompilerFilter, mParams.mExpectedDexoptTrigger);
-        doReturn(createDexoptResult(false /* cancelled */, 200 /* wallTimeMs */,
+        doReturn(createArtdDexoptResult(false /* cancelled */, 200 /* wallTimeMs */,
                          200 /* cpuTimeMs */, 10000 /* sizeBytes */, 0 /* sizeBeforeBytes */))
                 .when(mArtd)
                 .dexopt(deepEq(buildOutputArtifacts("/data/app/foo/split_0.apk", "arm",
@@ -268,29 +268,29 @@
                         eq(PriorityClass.INTERACTIVE), deepEq(dexoptOptions), any());
 
         assertThat(mPrimaryDexOptimizer.dexopt())
-                .comparingElementsUsing(TestingUtils.<DexContainerFileOptimizeResult>deepEquality())
+                .comparingElementsUsing(TestingUtils.<DexContainerFileDexoptResult>deepEquality())
                 .containsExactly(
-                        DexContainerFileOptimizeResult.create("/data/app/foo/base.apk",
+                        DexContainerFileDexoptResult.create("/data/app/foo/base.apk",
                                 true /* isPrimaryAbi */, "arm64-v8a",
-                                mParams.mExpectedCompilerFilter, OptimizeResult.OPTIMIZE_PERFORMED,
+                                mParams.mExpectedCompilerFilter, DexoptResult.DEXOPT_PERFORMED,
                                 100 /* dex2oatWallTimeMillis */, 400 /* dex2oatCpuTimeMillis */,
                                 30000 /* sizeBytes */, 32000 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create("/data/app/foo/base.apk",
+                        DexContainerFileDexoptResult.create("/data/app/foo/base.apk",
                                 false /* isPrimaryAbi */, "armeabi-v7a",
-                                mParams.mExpectedCompilerFilter, OptimizeResult.OPTIMIZE_FAILED,
+                                mParams.mExpectedCompilerFilter, DexoptResult.DEXOPT_FAILED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptResult.create("/data/app/foo/split_0.apk",
                                 true /* isPrimaryAbi */, "arm64-v8a",
-                                mParams.mExpectedCompilerFilter, OptimizeResult.OPTIMIZE_SKIPPED,
+                                mParams.mExpectedCompilerFilter, DexoptResult.DEXOPT_SKIPPED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create("/data/app/foo/split_0.apk",
+                        DexContainerFileDexoptResult.create("/data/app/foo/split_0.apk",
                                 false /* isPrimaryAbi */, "armeabi-v7a",
-                                mParams.mExpectedCompilerFilter, OptimizeResult.OPTIMIZE_PERFORMED,
+                                mParams.mExpectedCompilerFilter, DexoptResult.DEXOPT_PERFORMED,
                                 200 /* dex2oatWallTimeMillis */, 200 /* dex2oatCpuTimeMillis */,
                                 10000 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */));
diff --git a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTest.java b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTest.java
index 1d9fdf7..6c5f1af 100644
--- a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTest.java
+++ b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTest.java
@@ -17,7 +17,7 @@
 package com.android.server.art;
 
 import static com.android.server.art.GetDexoptNeededResult.ArtifactsLocation;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
 import static com.android.server.art.testing.TestingUtils.deepEq;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -46,8 +46,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.server.art.model.ArtFlags;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.testing.TestingUtils;
 
 import org.junit.Before;
@@ -92,10 +92,11 @@
 
     private final MergeProfileOptions mMergeProfileOptions = new MergeProfileOptions();
 
-    private final DexoptResult mDexoptResult = createDexoptResult(false /* cancelled */);
+    private final ArtdDexoptResult mArtdDexoptResult =
+            createArtdDexoptResult(false /* cancelled */);
 
-    private OptimizeParams mOptimizeParams =
-            new OptimizeParams.Builder("install").setCompilerFilter("speed-profile").build();
+    private DexoptParams mDexoptParams =
+            new DexoptParams.Builder("install").setCompilerFilter("speed-profile").build();
 
     private PrimaryDexOptimizer mPrimaryDexOptimizer;
 
@@ -119,14 +120,14 @@
         lenient()
                 .when(mArtd.dexopt(any(), any(), any(), any(), any(), any(), any(), any(), anyInt(),
                         any(), any()))
-                .thenReturn(mDexoptResult);
+                .thenReturn(mArtdDexoptResult);
 
         lenient()
                 .when(mArtd.createCancellationSignal())
                 .thenReturn(mock(IArtdCancellationSignal.class));
 
         mPrimaryDexOptimizer = new PrimaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
 
         mUsedProfiles = new ArrayList<>();
     }
@@ -137,7 +138,7 @@
         doReturn(dexoptIsNeeded(ArtifactsLocation.NONE_OR_ERROR))
                 .when(mArtd)
                 .getDexoptNeeded(eq(mDexPath), eq("arm64"), any(), any(), anyInt());
-        doReturn(mDexoptResult)
+        doReturn(mArtdDexoptResult)
                 .when(mArtd)
                 .dexopt(any(), eq(mDexPath), eq("arm64"), any(), any(), any(), isNull(), any(),
                         anyInt(), any(), any());
@@ -146,7 +147,7 @@
         doReturn(dexoptIsNeeded(ArtifactsLocation.DALVIK_CACHE))
                 .when(mArtd)
                 .getDexoptNeeded(eq(mDexPath), eq("arm"), any(), any(), anyInt());
-        doReturn(mDexoptResult)
+        doReturn(mArtdDexoptResult)
                 .when(mArtd)
                 .dexopt(any(), eq(mDexPath), eq("arm"), any(), any(), any(),
                         deepEq(VdexPath.artifactsPath(AidlUtils.buildArtifactsPath(
@@ -157,7 +158,7 @@
         doReturn(dexoptIsNeeded(ArtifactsLocation.NEXT_TO_DEX))
                 .when(mArtd)
                 .getDexoptNeeded(eq(mSplit0DexPath), eq("arm64"), any(), any(), anyInt());
-        doReturn(mDexoptResult)
+        doReturn(mArtdDexoptResult)
                 .when(mArtd)
                 .dexopt(any(), eq(mSplit0DexPath), eq("arm64"), any(), any(), any(),
                         deepEq(VdexPath.artifactsPath(AidlUtils.buildArtifactsPath(
@@ -168,7 +169,7 @@
         doReturn(dexoptIsNeeded(ArtifactsLocation.DM))
                 .when(mArtd)
                 .getDexoptNeeded(eq(mSplit0DexPath), eq("arm"), any(), any(), anyInt());
-        doReturn(mDexoptResult)
+        doReturn(mArtdDexoptResult)
                 .when(mArtd)
                 .dexopt(any(), eq(mSplit0DexPath), eq("arm"), any(), any(), any(), isNull(), any(),
                         anyInt(), any(), any());
@@ -486,19 +487,19 @@
 
         doAnswer(invocation -> {
             verify(artdCancellationSignal).cancel();
-            return createDexoptResult(true /* cancelled */);
+            return createArtdDexoptResult(true /* cancelled */);
         })
                 .when(mArtd)
                 .dexopt(any(), any(), any(), any(), any(), any(), any(), any(), anyInt(), any(),
                         same(artdCancellationSignal));
 
         // The result should only contain one element: the result of the first file with
-        // OPTIMIZE_CANCELLED.
+        // DEXOPT_CANCELLED.
         assertThat(mPrimaryDexOptimizer.dexopt()
                            .stream()
-                           .map(DexContainerFileOptimizeResult::getStatus)
+                           .map(DexContainerFileDexoptResult::getStatus)
                            .collect(Collectors.toList()))
-                .containsExactly(OptimizeResult.OPTIMIZE_CANCELLED);
+                .containsExactly(DexoptResult.DEXOPT_CANCELLED);
 
         // It shouldn't continue after being cancelled on the first file.
         verify(mArtd, times(1)).createCancellationSignal();
@@ -519,7 +520,7 @@
         doAnswer(invocation -> {
             dexoptStarted.release();
             assertThat(dexoptCancelled.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
-            return createDexoptResult(true /* cancelled */);
+            return createArtdDexoptResult(true /* cancelled */);
         })
                 .when(mArtd)
                 .dexopt(any(), any(), any(), any(), any(), any(), any(), any(), anyInt(), any(),
@@ -531,7 +532,7 @@
                 .when(artdCancellationSignal)
                 .cancel();
 
-        Future<List<DexContainerFileOptimizeResult>> results =
+        Future<List<DexContainerFileDexoptResult>> results =
                 ForkJoinPool.commonPool().submit(() -> { return mPrimaryDexOptimizer.dexopt(); });
 
         assertThat(dexoptStarted.tryAcquire(TIMEOUT_SEC, TimeUnit.SECONDS)).isTrue();
@@ -540,9 +541,9 @@
 
         assertThat(results.get()
                            .stream()
-                           .map(DexContainerFileOptimizeResult::getStatus)
+                           .map(DexContainerFileDexoptResult::getStatus)
                            .collect(Collectors.toList()))
-                .containsExactly(OptimizeResult.OPTIMIZE_CANCELLED);
+                .containsExactly(DexoptResult.DEXOPT_CANCELLED);
 
         // It shouldn't continue after being cancelled on the first file.
         verify(mArtd, times(1)).createCancellationSignal();
@@ -553,14 +554,14 @@
 
     @Test
     public void testDexoptBaseApk() throws Exception {
-        mOptimizeParams =
-                new OptimizeParams.Builder("install")
+        mDexoptParams =
+                new DexoptParams.Builder("install")
                         .setCompilerFilter("speed-profile")
                         .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                         .setSplitName(null)
                         .build();
         mPrimaryDexOptimizer = new PrimaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
 
         mPrimaryDexOptimizer.dexopt();
 
@@ -574,14 +575,14 @@
 
     @Test
     public void testDexoptSplitApk() throws Exception {
-        mOptimizeParams =
-                new OptimizeParams.Builder("install")
+        mDexoptParams =
+                new DexoptParams.Builder("install")
                         .setCompilerFilter("speed-profile")
                         .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                         .setSplitName("split_0")
                         .build();
         mPrimaryDexOptimizer = new PrimaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
 
         mPrimaryDexOptimizer.dexopt();
 
@@ -597,22 +598,22 @@
     public void testDexoptStorageLow() throws Exception {
         when(mStorageManager.getAllocatableBytes(any())).thenReturn(1l, 0l, 0l, 1l);
 
-        mOptimizeParams =
-                new OptimizeParams.Builder("install")
+        mDexoptParams =
+                new DexoptParams.Builder("install")
                         .setCompilerFilter("speed-profile")
                         .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_SKIP_IF_STORAGE_LOW)
                         .build();
         mPrimaryDexOptimizer = new PrimaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
 
-        List<DexContainerFileOptimizeResult> results = mPrimaryDexOptimizer.dexopt();
-        assertThat(results.get(0).getStatus()).isEqualTo(OptimizeResult.OPTIMIZE_PERFORMED);
+        List<DexContainerFileDexoptResult> results = mPrimaryDexOptimizer.dexopt();
+        assertThat(results.get(0).getStatus()).isEqualTo(DexoptResult.DEXOPT_PERFORMED);
         assertThat(results.get(0).isSkippedDueToStorageLow()).isFalse();
-        assertThat(results.get(1).getStatus()).isEqualTo(OptimizeResult.OPTIMIZE_SKIPPED);
+        assertThat(results.get(1).getStatus()).isEqualTo(DexoptResult.DEXOPT_SKIPPED);
         assertThat(results.get(1).isSkippedDueToStorageLow()).isTrue();
-        assertThat(results.get(2).getStatus()).isEqualTo(OptimizeResult.OPTIMIZE_SKIPPED);
+        assertThat(results.get(2).getStatus()).isEqualTo(DexoptResult.DEXOPT_SKIPPED);
         assertThat(results.get(2).isSkippedDueToStorageLow()).isTrue();
-        assertThat(results.get(3).getStatus()).isEqualTo(OptimizeResult.OPTIMIZE_PERFORMED);
+        assertThat(results.get(3).getStatus()).isEqualTo(DexoptResult.DEXOPT_PERFORMED);
         assertThat(results.get(3).isSkippedDueToStorageLow()).isFalse();
 
         verify(mArtd, times(2))
diff --git a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTestBase.java b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTestBase.java
index c5261da..d068c65 100644
--- a/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTestBase.java
+++ b/libartservice/service/javatests/com/android/server/art/PrimaryDexOptimizerTestBase.java
@@ -183,9 +183,9 @@
         return result;
     }
 
-    protected DexoptResult createDexoptResult(boolean cancelled, long wallTimeMs, long cpuTimeMs,
-            long sizeBytes, long sizeBeforeBytes) {
-        var result = new DexoptResult();
+    protected ArtdDexoptResult createArtdDexoptResult(boolean cancelled, long wallTimeMs,
+            long cpuTimeMs, long sizeBytes, long sizeBeforeBytes) {
+        var result = new ArtdDexoptResult();
         result.cancelled = cancelled;
         result.wallTimeMs = wallTimeMs;
         result.cpuTimeMs = cpuTimeMs;
@@ -194,8 +194,8 @@
         return result;
     }
 
-    protected DexoptResult createDexoptResult(boolean cancelled) {
-        return createDexoptResult(cancelled, 0 /* wallTimeMs */, 0 /* cpuTimeMs */,
+    protected ArtdDexoptResult createArtdDexoptResult(boolean cancelled) {
+        return createArtdDexoptResult(cancelled, 0 /* wallTimeMs */, 0 /* cpuTimeMs */,
                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */);
     }
 }
diff --git a/libartservice/service/javatests/com/android/server/art/SecondaryDexOptimizerTest.java b/libartservice/service/javatests/com/android/server/art/SecondaryDexOptimizerTest.java
index f4c9ee4..f72b6ce 100644
--- a/libartservice/service/javatests/com/android/server/art/SecondaryDexOptimizerTest.java
+++ b/libartservice/service/javatests/com/android/server/art/SecondaryDexOptimizerTest.java
@@ -19,7 +19,7 @@
 import static com.android.server.art.DexUseManagerLocal.DetailedSecondaryDexInfo;
 import static com.android.server.art.GetDexoptNeededResult.ArtifactsLocation;
 import static com.android.server.art.OutputArtifacts.PermissionSettings;
-import static com.android.server.art.model.OptimizeResult.DexContainerFileOptimizeResult;
+import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult;
 import static com.android.server.art.testing.TestingUtils.deepEq;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -44,8 +44,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.server.art.model.ArtFlags;
-import com.android.server.art.model.OptimizeParams;
-import com.android.server.art.model.OptimizeResult;
+import com.android.server.art.model.DexoptParams;
+import com.android.server.art.model.DexoptResult;
 import com.android.server.art.testing.StaticMockitoRule;
 import com.android.server.art.testing.TestingUtils;
 import com.android.server.pm.PackageSetting;
@@ -75,8 +75,8 @@
     private static final String DEX_2 = APP_DATA_DIR + "/2.apk";
     private static final String DEX_3 = APP_DATA_DIR + "/3.apk";
 
-    private final OptimizeParams mOptimizeParams =
-            new OptimizeParams.Builder("bg-dexopt")
+    private final DexoptParams mDexoptParams =
+            new DexoptParams.Builder("bg-dexopt")
                     .setCompilerFilter("speed-profile")
                     .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SECONDARY_DEX)
                     .build();
@@ -148,38 +148,38 @@
         lenient()
                 .when(mArtd.dexopt(any(), any(), any(), any(), any(), any(), any(), any(), anyInt(),
                         any(), any()))
-                .thenReturn(createDexoptResult());
+                .thenReturn(createArtdDexoptResult());
 
         lenient()
                 .when(mArtd.createCancellationSignal())
                 .thenReturn(mock(IArtdCancellationSignal.class));
 
         mSecondaryDexOptimizer = new SecondaryDexOptimizer(
-                mInjector, mPkgState, mPkg, mOptimizeParams, mCancellationSignal);
+                mInjector, mPkgState, mPkg, mDexoptParams, mCancellationSignal);
     }
 
     @Test
     public void testDexopt() throws Exception {
         assertThat(mSecondaryDexOptimizer.dexopt())
-                .comparingElementsUsing(TestingUtils.<DexContainerFileOptimizeResult>deepEquality())
+                .comparingElementsUsing(TestingUtils.<DexContainerFileDexoptResult>deepEquality())
                 .containsExactly(
-                        DexContainerFileOptimizeResult.create(DEX_1, true /* isPrimaryAbi */,
-                                "arm64-v8a", "speed-profile", OptimizeResult.OPTIMIZE_PERFORMED,
+                        DexContainerFileDexoptResult.create(DEX_1, true /* isPrimaryAbi */,
+                                "arm64-v8a", "speed-profile", DexoptResult.DEXOPT_PERFORMED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create(DEX_2, true /* isPrimaryAbi */,
-                                "arm64-v8a", "speed", OptimizeResult.OPTIMIZE_PERFORMED,
+                        DexContainerFileDexoptResult.create(DEX_2, true /* isPrimaryAbi */,
+                                "arm64-v8a", "speed", DexoptResult.DEXOPT_PERFORMED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create(DEX_2, false /* isPrimaryAbi */,
-                                "armeabi-v7a", "speed", OptimizeResult.OPTIMIZE_PERFORMED,
+                        DexContainerFileDexoptResult.create(DEX_2, false /* isPrimaryAbi */,
+                                "armeabi-v7a", "speed", DexoptResult.DEXOPT_PERFORMED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */),
-                        DexContainerFileOptimizeResult.create(DEX_3, true /* isPrimaryAbi */,
-                                "arm64-v8a", "verify", OptimizeResult.OPTIMIZE_PERFORMED,
+                        DexContainerFileDexoptResult.create(DEX_3, true /* isPrimaryAbi */,
+                                "arm64-v8a", "verify", DexoptResult.DEXOPT_PERFORMED,
                                 0 /* dex2oatWallTimeMillis */, 0 /* dex2oatCpuTimeMillis */,
                                 0 /* sizeBytes */, 0 /* sizeBeforeBytes */,
                                 false /* isSkippedDueToStorageLow */));
@@ -306,8 +306,8 @@
         return result;
     }
 
-    private DexoptResult createDexoptResult() {
-        var result = new DexoptResult();
+    private ArtdDexoptResult createArtdDexoptResult() {
+        var result = new ArtdDexoptResult();
         result.cancelled = false;
         result.wallTimeMs = 0;
         result.cpuTimeMs = 0;
diff --git a/libartservice/service/javatests/com/android/server/art/model/OptimizeParamsTest.java b/libartservice/service/javatests/com/android/server/art/model/DexoptParamsTest.java
similarity index 76%
rename from libartservice/service/javatests/com/android/server/art/model/OptimizeParamsTest.java
rename to libartservice/service/javatests/com/android/server/art/model/DexoptParamsTest.java
index 1578241..aeff58c 100644
--- a/libartservice/service/javatests/com/android/server/art/model/OptimizeParamsTest.java
+++ b/libartservice/service/javatests/com/android/server/art/model/DexoptParamsTest.java
@@ -24,50 +24,45 @@
 
 @SmallTest
 @RunWith(AndroidJUnit4.class)
-public class OptimizeParamsTest {
+public class DexoptParamsTest {
     @Test
     public void testBuild() {
-        new OptimizeParams.Builder("install").build();
+        new DexoptParams.Builder("install").build();
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testBuildEmptyReason() {
-        new OptimizeParams.Builder("").build();
+        new DexoptParams.Builder("").build();
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testBuildInvalidCompilerFilter() {
-        new OptimizeParams.Builder("install").setCompilerFilter("invalid").build();
+        new DexoptParams.Builder("install").setCompilerFilter("invalid").build();
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testBuildInvalidPriorityClass() {
-        new OptimizeParams.Builder("install").setPriorityClass(101).build();
+        new DexoptParams.Builder("install").setPriorityClass(101).build();
     }
 
     @Test
     public void testBuildCustomReason() {
-        new OptimizeParams.Builder("custom")
-                .setCompilerFilter("speed")
-                .setPriorityClass(90)
-                .build();
+        new DexoptParams.Builder("custom").setCompilerFilter("speed").setPriorityClass(90).build();
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testBuildCustomReasonEmptyCompilerFilter() {
-        new OptimizeParams.Builder("custom")
-                .setPriorityClass(ArtFlags.PRIORITY_INTERACTIVE)
-                .build();
+        new DexoptParams.Builder("custom").setPriorityClass(ArtFlags.PRIORITY_INTERACTIVE).build();
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testBuildCustomReasonEmptyPriorityClass() {
-        new OptimizeParams.Builder("custom").setCompilerFilter("speed").build();
+        new DexoptParams.Builder("custom").setCompilerFilter("speed").build();
     }
 
     @Test
     public void testSingleSplit() {
-        new OptimizeParams.Builder("install")
+        new DexoptParams.Builder("install")
                 .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                 .setSplitName("split_0")
                 .build();
@@ -75,7 +70,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testSingleSplitNoPrimaryFlag() {
-        new OptimizeParams.Builder("install")
+        new DexoptParams.Builder("install")
                 .setFlags(ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                 .setSplitName("split_0")
                 .build();
@@ -83,7 +78,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testSingleSplitSecondaryFlag() {
-        new OptimizeParams.Builder("install")
+        new DexoptParams.Builder("install")
                 .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_FOR_SECONDARY_DEX
                         | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                 .setSplitName("split_0")
@@ -92,7 +87,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testSingleSplitDependenciesFlag() {
-        new OptimizeParams.Builder("install")
+        new DexoptParams.Builder("install")
                 .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX | ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES
                         | ArtFlags.FLAG_FOR_SINGLE_SPLIT)
                 .setSplitName("split_0")
@@ -101,7 +96,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testSplitNameNoSingleSplitFlag() {
-        new OptimizeParams.Builder("install")
+        new DexoptParams.Builder("install")
                 .setFlags(ArtFlags.FLAG_FOR_PRIMARY_DEX)
                 .setSplitName("split_0")
                 .build();