Use new method/field to get StagedApexInfo[]

This reduces the calls to the heavy operation
(IApexService.getStagedApexInfos) a lot.

Bug: 370712193
Test: Presubmit
Change-Id: Ie67b468b1b7474ae88da144b7c4ba1072810e8f5
diff --git a/android/virtmgr/src/payload.rs b/android/virtmgr/src/payload.rs
index 81e02b7..5811314 100644
--- a/android/virtmgr/src/payload.rs
+++ b/android/virtmgr/src/payload.rs
@@ -178,14 +178,9 @@
             let pm =
                 wait_for_interface::<dyn IPackageManagerNative>(PACKAGE_MANAGER_NATIVE_SERVICE)
                     .context("Failed to get service when prefer_staged is set.")?;
-            let staged =
-                pm.getStagedApexModuleNames().context("getStagedApexModuleNames failed")?;
-            for name in staged {
-                if let Some(staged_apex_info) =
-                    pm.getStagedApexInfo(&name).context("getStagedApexInfo failed")?
-                {
-                    list.override_staged_apex(&staged_apex_info)?;
-                }
+            let staged = pm.getStagedApexInfos().context("getStagedApexInfos failed")?;
+            for apex in staged {
+                list.override_staged_apex(&apex)?;
             }
         }
         Ok(list)
diff --git a/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java b/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
index 95e365d..ab8a4cf 100644
--- a/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
+++ b/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
@@ -104,7 +104,7 @@
                 packageNative.registerStagedApexObserver(observer);
                 // In the unlikely event that an APEX has been staged before we get here, we may
                 // have to schedule compilation immediately.
-                observer.checkModules(packageNative.getStagedApexModuleNames());
+                observer.checkModules(packageNative.getStagedApexInfos());
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to initialize observer", e);
             }
@@ -118,26 +118,21 @@
         @Override
         public void onApexStaged(ApexStagedEvent event) {
             Log.d(TAG, "onApexStaged");
-            checkModules(event.stagedApexModuleNames);
+            checkModules(event.stagedApexInfos);
         }
 
-        void checkModules(String[] moduleNames) {
+        void checkModules(StagedApexInfo[] stagedApexInfos) {
             if (IsolatedCompilationJobService.isStagedApexJobScheduled(mScheduler)) {
                 Log.d(TAG, "Job already scheduled");
                 // We're going to run anyway, we don't need to check this update
                 return;
             }
             boolean needCompilation = false;
-            for (String moduleName : moduleNames) {
-                try {
-                    StagedApexInfo apexInfo = mPackageNative.getStagedApexInfo(moduleName);
-                    if (apexInfo != null && apexInfo.hasClassPathJars) {
-                        Log.i(TAG, "Classpath affecting module updated: " + moduleName);
-                        needCompilation = true;
-                        break;
-                    }
-                } catch (RemoteException e) {
-                    Log.w(TAG, "Failed to get getStagedApexInfo for " + moduleName);
+            for (StagedApexInfo apexInfo : stagedApexInfos) {
+                if (apexInfo != null && apexInfo.hasClassPathJars) {
+                    Log.i(TAG, "Classpath affecting module updated: " + apexInfo.moduleName);
+                    needCompilation = true;
+                    break;
                 }
             }
             if (needCompilation) {