Break out the legacy to ART Service reason conversion code.
Test: m
Bug: 251903639
Change-Id: I8aff8519d0aeb00574182e1230f9feefc43a0178
diff --git a/services/core/java/com/android/server/pm/dex/DexoptOptions.java b/services/core/java/com/android/server/pm/dex/DexoptOptions.java
index d3fba7c..4fce5e8 100644
--- a/services/core/java/com/android/server/pm/dex/DexoptOptions.java
+++ b/services/core/java/com/android/server/pm/dex/DexoptOptions.java
@@ -20,6 +20,7 @@
import static dalvik.system.DexFile.isProfileGuidedCompilerFilter;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import com.android.server.art.ReasonMapping;
@@ -201,6 +202,49 @@
}
/**
+ * Returns the ART Service reason for the given PackageManagerService reason. Throws unchecked
+ * exceptions for reasons that aren't supported.
+ */
+ public static @NonNull String convertToArtServiceDexoptReason(int pmDexoptReason) {
+ switch (pmDexoptReason) {
+ case PackageManagerService.REASON_FIRST_BOOT:
+ return ReasonMapping.REASON_FIRST_BOOT;
+ case PackageManagerService.REASON_BOOT_AFTER_OTA:
+ return ReasonMapping.REASON_BOOT_AFTER_OTA;
+ case PackageManagerService.REASON_INSTALL:
+ return ReasonMapping.REASON_INSTALL;
+ case PackageManagerService.REASON_INSTALL_FAST:
+ return ReasonMapping.REASON_INSTALL_FAST;
+ case PackageManagerService.REASON_INSTALL_BULK:
+ return ReasonMapping.REASON_INSTALL_BULK;
+ case PackageManagerService.REASON_INSTALL_BULK_SECONDARY:
+ return ReasonMapping.REASON_INSTALL_BULK_SECONDARY;
+ case PackageManagerService.REASON_INSTALL_BULK_DOWNGRADED:
+ return ReasonMapping.REASON_INSTALL_BULK_DOWNGRADED;
+ case PackageManagerService.REASON_INSTALL_BULK_SECONDARY_DOWNGRADED:
+ return ReasonMapping.REASON_INSTALL_BULK_SECONDARY_DOWNGRADED;
+ case PackageManagerService.REASON_BACKGROUND_DEXOPT:
+ return ReasonMapping.REASON_BG_DEXOPT;
+ case PackageManagerService.REASON_INACTIVE_PACKAGE_DOWNGRADE:
+ return ReasonMapping.REASON_INACTIVE;
+ case PackageManagerService.REASON_CMDLINE:
+ return ReasonMapping.REASON_CMDLINE;
+ case PackageManagerService.REASON_POST_BOOT:
+ case PackageManagerService.REASON_SHARED:
+ case PackageManagerService.REASON_AB_OTA:
+ // REASON_POST_BOOT isn't supported - that dexopt stage is getting removed.
+ // REASON_SHARED shouldn't go to ART Service - it's only used at lower levels
+ // in PackageDexOptimizer.
+ // TODO(b/251921228): OTA isn't supported, so REASON_AB_OTA shouldn't come this way
+ // either.
+ throw new UnsupportedOperationException(
+ "ART Service unsupported compilation reason " + pmDexoptReason);
+ default:
+ throw new IllegalArgumentException("Invalid compilation reason " + pmDexoptReason);
+ }
+ }
+
+ /**
* Returns an {@link DexoptParams} instance corresponding to this object, for use with
* {@link com.android.server.art.ArtManagerLocal}.
*
@@ -269,60 +313,7 @@
// - DEXOPT_IDLE_BACKGROUND_JOB: Its only effect is to allow the debug variant dex2oatd to
// be used, but ART Service never uses that (cf. Artd::GetDex2Oat in artd.cc).
- String reason;
- switch (mCompilationReason) {
- case PackageManagerService.REASON_FIRST_BOOT:
- reason = ReasonMapping.REASON_FIRST_BOOT;
- break;
- case PackageManagerService.REASON_BOOT_AFTER_OTA:
- reason = ReasonMapping.REASON_BOOT_AFTER_OTA;
- break;
- case PackageManagerService.REASON_POST_BOOT:
- // This reason will go away with the legacy dexopt code.
- DexOptHelper.reportArtManagerFallback(
- mPackageName, "Unsupported compilation reason REASON_POST_BOOT");
- return null;
- case PackageManagerService.REASON_INSTALL:
- reason = ReasonMapping.REASON_INSTALL;
- break;
- case PackageManagerService.REASON_INSTALL_FAST:
- reason = ReasonMapping.REASON_INSTALL_FAST;
- break;
- case PackageManagerService.REASON_INSTALL_BULK:
- reason = ReasonMapping.REASON_INSTALL_BULK;
- break;
- case PackageManagerService.REASON_INSTALL_BULK_SECONDARY:
- reason = ReasonMapping.REASON_INSTALL_BULK_SECONDARY;
- break;
- case PackageManagerService.REASON_INSTALL_BULK_DOWNGRADED:
- reason = ReasonMapping.REASON_INSTALL_BULK_DOWNGRADED;
- break;
- case PackageManagerService.REASON_INSTALL_BULK_SECONDARY_DOWNGRADED:
- reason = ReasonMapping.REASON_INSTALL_BULK_SECONDARY_DOWNGRADED;
- break;
- case PackageManagerService.REASON_BACKGROUND_DEXOPT:
- reason = ReasonMapping.REASON_BG_DEXOPT;
- break;
- case PackageManagerService.REASON_INACTIVE_PACKAGE_DOWNGRADE:
- reason = ReasonMapping.REASON_INACTIVE;
- break;
- case PackageManagerService.REASON_CMDLINE:
- reason = ReasonMapping.REASON_CMDLINE;
- break;
- case PackageManagerService.REASON_SHARED:
- case PackageManagerService.REASON_AB_OTA:
- // REASON_SHARED shouldn't go into this code path - it's only used at lower levels
- // in PackageDexOptimizer.
- // TODO(b/251921228): OTA isn't supported, so REASON_AB_OTA shouldn't come this way
- // either.
- throw new UnsupportedOperationException(
- "ART Service unsupported compilation reason " + mCompilationReason);
- default:
- throw new IllegalArgumentException(
- "Invalid compilation reason " + mCompilationReason);
- }
-
- return new DexoptParams.Builder(reason, flags)
+ return new DexoptParams.Builder(convertToArtServiceDexoptReason(mCompilationReason), flags)
.setCompilerFilter(mCompilerFilter)
.setPriorityClass(priority)
.build();