Expose `optimizePackage` and fix API lint errors.
Changes:
1. Rename `OptimizeOptions` to `OptimizeParams` (enforced by
https://cs.android.com/android/platform/superproject/+/master:tools/metalava/src/main/java/com/android/tools/metalava/ApiLint.kt;l=2405;drc=26ec88f1d22ddd33c30aec46b1a5a50339e3c159)
2. Change the backing type of `PriorityClass` from `byte` to `int`.
3. Duplicate the keys of `PriorityClass` as `PriorityClassApi` to be
exposed as API.
4. Use a bit field `OptimizeParams.mFlags` instead of booleans and
change flag handling.
Bug: 229268202
Test: m update-api
Ignore-AOSP-First: ART Services
Change-Id: I12e497c46ec68f347b76b34920ba2f7405263aa9
diff --git a/libartservice/service/java/com/android/server/art/DexOptHelper.java b/libartservice/service/java/com/android/server/art/DexOptHelper.java
index f6df0c3..e73abcb 100644
--- a/libartservice/service/java/com/android/server/art/DexOptHelper.java
+++ b/libartservice/service/java/com/android/server/art/DexOptHelper.java
@@ -28,7 +28,8 @@
import android.os.WorkSource;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.art.model.OptimizeOptions;
+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.wrapper.AndroidPackageApi;
import com.android.server.art.wrapper.PackageState;
@@ -67,16 +68,16 @@
/**
* DO NOT use this method directly. Use {@link
- * ArtManagerLocal#optimizePackage(PackageDataSnapshot, String, OptimizeOptions)}.
+ * ArtManagerLocal#optimizePackage(PackageDataSnapshot, String, OptimizeParams)}.
*/
@NonNull
public OptimizeResult dexopt(@NonNull PackageDataSnapshot snapshot,
@NonNull PackageState pkgState, @NonNull AndroidPackageApi pkg,
- @NonNull OptimizeOptions options) throws RemoteException {
+ @NonNull OptimizeParams params) throws RemoteException {
List<DexFileOptimizeResult> results = new ArrayList<>();
Supplier<OptimizeResult> createResult = ()
- -> new OptimizeResult(pkgState.getPackageName(), options.getCompilerFilter(),
- options.getReason(), results);
+ -> new OptimizeResult(pkgState.getPackageName(), params.getCompilerFilter(),
+ params.getReason(), results);
if (!canOptimizePackage(pkgState, pkg)) {
return createResult.get();
@@ -96,17 +97,17 @@
wakeLock.acquire(WAKE_LOCK_TIMEOUT_MS);
}
- if (options.isForPrimaryDex()) {
- results.addAll(mInjector.getPrimaryDexOptimizer().dexopt(pkgState, pkg, options));
+ if ((params.getFlags() & ArtFlags.FLAG_FOR_PRIMARY_DEX) != 0) {
+ results.addAll(mInjector.getPrimaryDexOptimizer().dexopt(pkgState, pkg, params));
}
- if (options.isForSecondaryDex()) {
+ if ((params.getFlags() & ArtFlags.FLAG_FOR_SECONDARY_DEX) != 0) {
// TODO(jiakaiz): Implement this.
throw new UnsupportedOperationException(
"Optimizing secondary dex'es is not implemented yet");
}
- if (options.getIncludesDependencies()) {
+ if ((params.getFlags() & ArtFlags.FLAG_SHOULD_INCLUDE_DEPENDENCIES) != 0) {
// TODO(jiakaiz): Implement this.
throw new UnsupportedOperationException(
"Optimizing dependencies is not implemented yet");