Expose ART Services APIs.

Bug: 225827974
Test: m
Ignore-AOSP-First: ART Services
Change-Id: I9c903448d9037848794e5d1a49a6bef760abc6b3
diff --git a/libartservice/service/api/system-server-current.txt b/libartservice/service/api/system-server-current.txt
index afa5aa2..d35f8c7 100644
--- a/libartservice/service/api/system-server-current.txt
+++ b/libartservice/service/api/system-server-current.txt
@@ -3,8 +3,39 @@
 
   public final class ArtManagerLocal {
     ctor public ArtManagerLocal();
+    method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String);
+    method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String, int);
+    method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String);
+    method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @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[]);
   }
 
 }
 
+package com.android.server.art.model {
+
+  public class ArtFlags {
+    method public static int defaultDeleteFlags();
+    method public static int defaultGetStatusFlags();
+    field public static final int FLAG_FOR_PRIMARY_DEX = 1; // 0x1
+    field public static final int FLAG_FOR_SECONDARY_DEX = 2; // 0x2
+  }
+
+  public class DeleteResult {
+    method public long getFreedBytes();
+  }
+
+  public class OptimizationStatus {
+    method @NonNull public java.util.List<com.android.server.art.model.OptimizationStatus.DexFileOptimizationStatus> getDexFileOptimizationStatuses();
+  }
+
+  public static class OptimizationStatus.DexFileOptimizationStatus {
+    method @NonNull public String getCompilationReason();
+    method @NonNull public String getCompilerFilter();
+    method @NonNull public String getDexFile();
+    method @NonNull public String getInstructionSet();
+    method @NonNull public String getLocationDebugString();
+  }
+
+}
+
diff --git a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
index 03a1deb..3a6bdc9 100644
--- a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
+++ b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
@@ -98,8 +98,17 @@
      *
      * @throws IllegalArgumentException if the package is not found or the flags are illegal
      * @throws IllegalStateException if an internal error occurs
+     */
+    @NonNull
+    public DeleteResult deleteOptimizedArtifacts(
+            @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
+        return deleteOptimizedArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
+    }
+
+    /**
+     * Same as above, but allows to specify flags.
      *
-     * @hide
+     * @see #deleteOptimizedArtifacts(PackageDataSnapshot, String)
      */
     @NonNull
     public DeleteResult deleteOptimizedArtifacts(@NonNull PackageDataSnapshot snapshot,
@@ -141,25 +150,21 @@
     }
 
     /**
-     * Same as above, but with default flags.
-     *
-     * @see #deleteOptimizedArtifacts(PackageDataSnapshot, String, int)
-     *
-     * @hide
-     */
-    @NonNull
-    public DeleteResult deleteOptimizedArtifacts(
-            @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
-        return deleteOptimizedArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
-    }
-
-    /**
      * Returns the optimization status of a package.
      *
      * @throws IllegalArgumentException if the package is not found or the flags are illegal
      * @throws IllegalStateException if an internal error occurs
+     */
+    @NonNull
+    public OptimizationStatus getOptimizationStatus(
+            @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
+        return getOptimizationStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
+    }
+
+    /**
+     * Same as above, but allows to specify flags.
      *
-     * @hide
+     * @see #getOptimizationStatus(PackageDataSnapshot, String)
      */
     @NonNull
     public OptimizationStatus getOptimizationStatus(@NonNull PackageDataSnapshot snapshot,
@@ -204,19 +209,6 @@
         }
     }
 
-    /**
-     * Same as above, but with default flags.
-     *
-     * @see #getOptimizationStatus(PackageDataSnapshot, String, int)
-     *
-     * @hide
-     */
-    @NonNull
-    public OptimizationStatus getOptimizationStatus(
-            @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
-        return getOptimizationStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
-    }
-
     private PackageState getPackageStateOrThrow(
             @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
         PackageState pkgState = mInjector.getPackageManagerLocal().getPackageState(
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 c53f3e3..0ecad74 100644
--- a/libartservice/service/java/com/android/server/art/model/ArtFlags.java
+++ b/libartservice/service/java/com/android/server/art/model/ArtFlags.java
@@ -17,11 +17,13 @@
 package com.android.server.art.model;
 
 import android.annotation.IntDef;
+import android.annotation.SystemApi;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 /** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 public class ArtFlags {
     /** Whether the operation is applied for primary dex'es. */
     public static final int FLAG_FOR_PRIMARY_DEX = 1 << 0;
diff --git a/libartservice/service/java/com/android/server/art/model/DeleteResult.java b/libartservice/service/java/com/android/server/art/model/DeleteResult.java
index 6866069..fc40cbc 100644
--- a/libartservice/service/java/com/android/server/art/model/DeleteResult.java
+++ b/libartservice/service/java/com/android/server/art/model/DeleteResult.java
@@ -16,10 +16,14 @@
 
 package com.android.server.art.model;
 
+import android.annotation.SystemApi;
+
 /** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 public class DeleteResult {
     private long mFreedBytes;
 
+    /** @hide */
     public DeleteResult(long freedBytes) {
         mFreedBytes = freedBytes;
     }
diff --git a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java b/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
index 4b6bae2..724b0dd 100644
--- a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
+++ b/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
@@ -17,6 +17,7 @@
 package com.android.server.art.model;
 
 import android.annotation.NonNull;
+import android.annotation.SystemApi;
 
 import com.android.internal.annotations.Immutable;
 
@@ -28,6 +29,7 @@
  *
  * @hide
  */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
 @Immutable
 public class OptimizationStatus {
     private final @NonNull List<DexFileOptimizationStatus> mDexFileOptimizationStatuses;