Merge changes Ibc845195,I7ef4f1bf

* changes:
  Delete pvm_exec
  Remove pvm_exec from CompOS APEX
diff --git a/compos/aidl/com/android/compos/ICompOsService.aidl b/compos/aidl/com/android/compos/ICompOsService.aidl
index 395a09b..ad37806 100644
--- a/compos/aidl/com/android/compos/ICompOsService.aidl
+++ b/compos/aidl/com/android/compos/ICompOsService.aidl
@@ -38,8 +38,8 @@
      * TODO(198211396): Implement properly. We can't simply accepting the classpaths from Android
      * since they are not derived from staged APEX (besides security reasons).
      */
-    void initializeClasspaths(
-            String bootClasspath, String dex2oatBootClasspath, String systemServerClassPath);
+    void initializeClasspaths(String bootClasspath, String dex2oatBootClasspath,
+            String systemServerClasspath, String standaloneSystemServerJars);
 
     /**
      * Run odrefresh in the VM context.
diff --git a/compos/apk/assets/vm_config.json b/compos/apk/assets/vm_config.json
index 3a6eff4..d008c12 100644
--- a/compos/apk/assets/vm_config.json
+++ b/compos/apk/assets/vm_config.json
@@ -18,13 +18,7 @@
       "name": "com.android.compos"
     },
     {
-      "name": "{DEX2OATBOOTCLASSPATH}"
-    },
-    {
-      "name": "{BOOTCLASSPATH}"
-    },
-    {
-      "name": "{SYSTEMSERVERCLASSPATH}"
+      "name": "{CLASSPATH}"
     }
   ]
 }
\ No newline at end of file
diff --git a/compos/apk/assets/vm_config_staged.json b/compos/apk/assets/vm_config_staged.json
index 9c81e4e..e42ebe0 100644
--- a/compos/apk/assets/vm_config_staged.json
+++ b/compos/apk/assets/vm_config_staged.json
@@ -19,13 +19,7 @@
       "name": "com.android.compos"
     },
     {
-      "name": "{DEX2OATBOOTCLASSPATH}"
-    },
-    {
-      "name": "{BOOTCLASSPATH}"
-    },
-    {
-      "name": "{SYSTEMSERVERCLASSPATH}"
+      "name": "{CLASSPATH}"
     }
   ]
 }
\ No newline at end of file
diff --git a/compos/apk/assets/vm_test_config.json b/compos/apk/assets/vm_test_config.json
index 22f8293..9fd55b7 100644
--- a/compos/apk/assets/vm_test_config.json
+++ b/compos/apk/assets/vm_test_config.json
@@ -15,13 +15,7 @@
             "name": "com.android.compos"
         },
         {
-            "name": "{DEX2OATBOOTCLASSPATH}"
-        },
-        {
-            "name": "{BOOTCLASSPATH}"
-        },
-        {
-            "name": "{SYSTEMSERVERCLASSPATH}"
+            "name": "{CLASSPATH}"
         }
     ]
 }
\ No newline at end of file
diff --git a/compos/composd/src/instance_starter.rs b/compos/composd/src/instance_starter.rs
index 91a0e61..729e5b6 100644
--- a/compos/composd/src/instance_starter.rs
+++ b/compos/composd/src/instance_starter.rs
@@ -161,6 +161,7 @@
                 &env::var("BOOTCLASSPATH")?,
                 &env::var("DEX2OATBOOTCLASSPATH")?,
                 &env::var("SYSTEMSERVERCLASSPATH")?,
+                &env::var("STANDALONE_SYSTEMSERVER_JARS")?,
             )
             .context("Initializing *CLASSPATH")?;
         Ok(())
diff --git a/compos/service/java/com/android/server/compos/IsolatedCompilationService.java b/compos/service/java/com/android/server/compos/IsolatedCompilationService.java
index 6918572..6ecccd2 100644
--- a/compos/service/java/com/android/server/compos/IsolatedCompilationService.java
+++ b/compos/service/java/com/android/server/compos/IsolatedCompilationService.java
@@ -132,9 +132,7 @@
             for (String moduleName : moduleNames) {
                 try {
                     StagedApexInfo apexInfo = mPackageNative.getStagedApexInfo(moduleName);
-                    if (apexInfo != null && (apexInfo.hasBootClassPathJars
-                            || apexInfo.hasDex2OatBootClassPathJars
-                            || apexInfo.hasSystemServerClassPathJars)) {
+                    if (apexInfo != null && apexInfo.hasClassPathJars) {
                         Log.i(TAG, "Classpath affecting module updated: " + moduleName);
                         needCompilation = true;
                         break;
diff --git a/compos/src/compsvc.rs b/compos/src/compsvc.rs
index 8f1e205..3e9fc34 100644
--- a/compos/src/compsvc.rs
+++ b/compos/src/compsvc.rs
@@ -100,11 +100,13 @@
         boot_classpath: &str,
         dex2oat_boot_classpath: &str,
         system_server_classpath: &str,
+        standalone_systemserver_jars: &str,
     ) -> BinderResult<()> {
         // TODO(198211396): Implement correctly.
         env::set_var("BOOTCLASSPATH", boot_classpath);
         env::set_var("DEX2OATBOOTCLASSPATH", dex2oat_boot_classpath);
         env::set_var("SYSTEMSERVERCLASSPATH", system_server_classpath);
+        env::set_var("STANDALONE_SYSTEMSERVER_JARS", standalone_systemserver_jars);
         Ok(())
     }
 
diff --git a/compos/tests/java/android/compos/test/ComposTestCase.java b/compos/tests/java/android/compos/test/ComposTestCase.java
index 8906361..7b027de 100644
--- a/compos/tests/java/android/compos/test/ComposTestCase.java
+++ b/compos/tests/java/android/compos/test/ComposTestCase.java
@@ -126,8 +126,6 @@
     private CommandResult runOdrefresh(CommandRunner android, String command) throws Exception {
         return android.runForResultWithTimeout(
                 ODREFRESH_TIMEOUT_MS,
-                // TODO(b/210472252): Remove this when the VM handles STANDALONE_SYSTEMSERVER_JARS
-                "STANDALONE_SYSTEMSERVER_JARS=",
                 ODREFRESH_BIN,
                 "--dalvik-cache=" + TEST_ARTIFACTS_DIR,
                 command);
diff --git a/virtualizationservice/src/payload.rs b/virtualizationservice/src/payload.rs
index 8f7a69a..bbd7fec 100644
--- a/virtualizationservice/src/payload.rs
+++ b/virtualizationservice/src/payload.rs
@@ -58,11 +58,7 @@
     path: PathBuf,
 
     #[serde(default)]
-    boot_classpath: bool,
-    #[serde(default)]
-    systemserver_classpath: bool,
-    #[serde(default)]
-    dex2oatboot_classpath: bool,
+    has_classpath_jar: bool,
 }
 
 impl ApexInfoList {
@@ -76,17 +72,19 @@
                 .context(format!("Failed to parse {}", APEX_INFO_LIST_PATH))?;
 
             // For active APEXes, we refer env variables to see if it contributes to classpath
+            // TODO(b/210472252): Don't hard code the env variable names
             let boot_classpath_apexes = find_apex_names_in_classpath_env("BOOTCLASSPATH");
             let systemserver_classpath_apexes =
                 find_apex_names_in_classpath_env("SYSTEMSERVERCLASSPATH");
             let dex2oatboot_classpath_apexes =
                 find_apex_names_in_classpath_env("DEX2OATBOOTCLASSPATH");
+            let standalone_jar_apexes =
+                find_apex_names_in_classpath_env("STANDALONE_SYSTEMSERVER_JARS");
             for apex_info in apex_info_list.list.iter_mut() {
-                apex_info.boot_classpath = boot_classpath_apexes.contains(&apex_info.name);
-                apex_info.systemserver_classpath =
-                    systemserver_classpath_apexes.contains(&apex_info.name);
-                apex_info.dex2oatboot_classpath =
-                    dex2oatboot_classpath_apexes.contains(&apex_info.name);
+                apex_info.has_classpath_jar = boot_classpath_apexes.contains(&apex_info.name)
+                    || systemserver_classpath_apexes.contains(&apex_info.name)
+                    || dex2oatboot_classpath_apexes.contains(&apex_info.name)
+                    || standalone_jar_apexes.contains(&apex_info.name);
             }
             Ok(apex_info_list)
         })
@@ -133,11 +131,7 @@
                     let staged_apex_info = pm.getStagedApexInfo(&apex_info.name)?;
                     if let Some(staged_apex_info) = staged_apex_info {
                         apex_info.path = PathBuf::from(staged_apex_info.diskImagePath);
-                        apex_info.boot_classpath = staged_apex_info.hasBootClassPathJars;
-                        apex_info.systemserver_classpath =
-                            staged_apex_info.hasSystemServerClassPathJars;
-                        apex_info.dex2oatboot_classpath =
-                            staged_apex_info.hasDex2OatBootClassPathJars;
+                        apex_info.has_classpath_jar = staged_apex_info.hasClassPathJars;
                     }
                 }
             }
@@ -293,17 +287,13 @@
     apexes: &[ApexConfig],
     debug_level: DebugLevel,
 ) -> Vec<String> {
-    // Process pseudo names like "{BOOTCLASSPATH}".
+    // Process pseudo names like "{CLASSPATH}".
     // For now we have following pseudo APEX names:
-    // - {BOOTCLASSPATH}: represents APEXes contributing "BOOTCLASSPATH" environment variable
-    // - {DEX2OATBOOTCLASSPATH}: represents APEXes contributing "DEX2OATBOOTCLASSPATH" environment variable
-    // - {SYSTEMSERVERCLASSPATH}: represents APEXes contributing "SYSTEMSERVERCLASSPATH" environment variable
+    // - {CLASSPATH}: represents APEXes contributing to any derive_classpath environment variable
     let mut apex_names: Vec<String> = apexes
         .iter()
         .flat_map(|apex| match apex.name.as_str() {
-            "{BOOTCLASSPATH}" => apex_list.get_matching(|apex| apex.boot_classpath),
-            "{DEX2OATBOOTCLASSPATH}" => apex_list.get_matching(|apex| apex.dex2oatboot_classpath),
-            "{SYSTEMSERVERCLASSPATH}" => apex_list.get_matching(|apex| apex.systemserver_classpath),
+            "{CLASSPATH}" => apex_list.get_matching(|apex| apex.has_classpath_jar),
             _ => vec![apex.name.clone()],
         })
         .collect();