Change the OptimizeResult API to allow multiple packages.
The API has to handle the case where FLAG_SHOULD_INCLUDE_DEPENDENCIES is
set, in which case more than one package are optimized. Also, the class
can be reused as the result class for batch optimization (optimizing
multiple packages).
Bug: 245301593
Test: atest ArtServiceTests
Ignore-AOSP-First: ART Services.
Change-Id: I5c634e536c9dbdbaedf2f161cbde62467fb27e91
diff --git a/libartservice/service/java/com/android/server/art/DexOptHelper.java b/libartservice/service/java/com/android/server/art/DexOptHelper.java
index 6d9c85a..89bd8f4 100644
--- a/libartservice/service/java/com/android/server/art/DexOptHelper.java
+++ b/libartservice/service/java/com/android/server/art/DexOptHelper.java
@@ -17,6 +17,7 @@
package com.android.server.art;
import static com.android.server.art.model.OptimizeResult.DexFileOptimizeResult;
+import static com.android.server.art.model.OptimizeResult.PackageOptimizeResult;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -76,8 +77,8 @@
@NonNull OptimizeParams params) throws RemoteException {
List<DexFileOptimizeResult> results = new ArrayList<>();
Supplier<OptimizeResult> createResult = ()
- -> new OptimizeResult(pkgState.getPackageName(), params.getCompilerFilter(),
- params.getReason(), results);
+ -> new OptimizeResult(params.getCompilerFilter(), params.getReason(),
+ List.of(new PackageOptimizeResult(pkgState.getPackageName(), results)));
if (!canOptimizePackage(pkgState, pkg)) {
return createResult.get();