Merge "Modify API clients to use only the to-be public API"
diff --git a/demo/java/com/android/microdroid/demo/MainActivity.java b/demo/java/com/android/microdroid/demo/MainActivity.java
index 747e98c..6266c18 100644
--- a/demo/java/com/android/microdroid/demo/MainActivity.java
+++ b/demo/java/com/android/microdroid/demo/MainActivity.java
@@ -38,7 +38,6 @@
 import androidx.lifecycle.AndroidViewModel;
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
 import com.android.microdroid.testservice.ITestService;
@@ -64,44 +63,39 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
-        Button runStopButton = (Button) findViewById(R.id.runStopButton);
-        TextView consoleView = (TextView) findViewById(R.id.consoleOutput);
-        TextView logView = (TextView) findViewById(R.id.logOutput);
-        TextView payloadView = (TextView) findViewById(R.id.payloadOutput);
-        ScrollView scrollConsoleView = (ScrollView) findViewById(R.id.scrollConsoleOutput);
-        ScrollView scrollLogView = (ScrollView) findViewById(R.id.scrollLogOutput);
+        Button runStopButton = findViewById(R.id.runStopButton);
+        TextView consoleView = findViewById(R.id.consoleOutput);
+        TextView logView = findViewById(R.id.logOutput);
+        TextView payloadView = findViewById(R.id.payloadOutput);
+        ScrollView scrollConsoleView = findViewById(R.id.scrollConsoleOutput);
+        ScrollView scrollLogView = findViewById(R.id.scrollLogOutput);
 
         VirtualMachineModel model = new ViewModelProvider(this).get(VirtualMachineModel.class);
 
         // When the button is clicked, run or stop the VM
         runStopButton.setOnClickListener(
-                new View.OnClickListener() {
-                    public void onClick(View v) {
-                        if (model.getStatus().getValue() == VirtualMachine.Status.RUNNING) {
-                            model.stop();
-                        } else {
-                            CheckBox debugModeCheckBox = (CheckBox) findViewById(R.id.debugMode);
-                            final boolean debug = debugModeCheckBox.isChecked();
-                            model.run(debug);
-                        }
+                v -> {
+                    if (model.getStatus().getValue() == VirtualMachine.Status.RUNNING) {
+                        model.stop();
+                    } else {
+                        CheckBox debugModeCheckBox = (CheckBox) findViewById(R.id.debugMode);
+                        final boolean debug = debugModeCheckBox.isChecked();
+                        model.run(debug);
                     }
                 });
 
         // When the VM status is updated, change the label of the button
         model.getStatus()
                 .observeForever(
-                        new Observer<VirtualMachine.Status>() {
-                            @Override
-                            public void onChanged(VirtualMachine.Status status) {
-                                if (status == VirtualMachine.Status.RUNNING) {
-                                    runStopButton.setText("Stop");
-                                    // Clear the outputs from the previous run
-                                    consoleView.setText("");
-                                    logView.setText("");
-                                    payloadView.setText("");
-                                } else {
-                                    runStopButton.setText("Run");
-                                }
+                        status -> {
+                            if (status == VirtualMachine.Status.RUNNING) {
+                                runStopButton.setText("Stop");
+                                // Clear the outputs from the previous run
+                                consoleView.setText("");
+                                logView.setText("");
+                                payloadView.setText("");
+                            } else {
+                                runStopButton.setText("Run");
                             }
                         });
 
@@ -109,30 +103,19 @@
         // corresponding text view.
         model.getConsoleOutput()
                 .observeForever(
-                        new Observer<String>() {
-                            @Override
-                            public void onChanged(String line) {
-                                consoleView.append(line + "\n");
-                                scrollConsoleView.fullScroll(View.FOCUS_DOWN);
-                            }
+                        line -> {
+                            consoleView.append(line + "\n");
+                            scrollConsoleView.fullScroll(View.FOCUS_DOWN);
                         });
         model.getLogOutput()
                 .observeForever(
-                        new Observer<String>() {
-                            @Override
-                            public void onChanged(String line) {
-                                logView.append(line + "\n");
-                                scrollLogView.fullScroll(View.FOCUS_DOWN);
-                            }
+                        line -> {
+                            logView.append(line + "\n");
+                            scrollLogView.fullScroll(View.FOCUS_DOWN);
                         });
         model.getPayloadOutput()
                 .observeForever(
-                        new Observer<String>() {
-                            @Override
-                            public void onChanged(String line) {
-                                payloadView.append(line + "\n");
-                            }
-                        });
+                        line -> payloadView.append(line + "\n"));
     }
 
     /** Reads data from an input stream and posts it to the output data */
@@ -178,7 +161,6 @@
         /** Runs a VM */
         public void run(boolean debug) {
             // Create a VM and run it.
-            // TODO(jiyong): remove the call to idsigPath
             mExecutorService = Executors.newFixedThreadPool(4);
 
             VirtualMachineCallback callback =
@@ -274,7 +256,7 @@
                         }
 
                         @Override
-                        public void onDied(VirtualMachine vm, @DeathReason int reason) {
+                        public void onDied(VirtualMachine vm, int reason) {
                             mService.shutdownNow();
                             mStatus.postValue(VirtualMachine.Status.STOPPED);
                         }
diff --git a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
index a80111f..3273635 100644
--- a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
@@ -22,7 +22,6 @@
 import android.content.Context;
 import android.os.ParcelFileDescriptor;
 import android.os.SystemProperties;
-import android.sysprop.HypervisorProperties;
 import android.system.virtualmachine.VirtualMachine;
 import android.system.virtualmachine.VirtualMachineCallback;
 import android.system.virtualmachine.VirtualMachineConfig;
@@ -106,18 +105,29 @@
             return;
         }
         if (protectedVm) {
-            assume().withMessage("Skip where protected VMs aren't support")
-                    .that(HypervisorProperties.hypervisor_protected_vm_supported().orElse(false))
+            assume().withMessage("Skip where protected VMs aren't supported")
+                    .that(hypervisor_protected_vm_supported())
                     .isTrue();
         } else {
-            assume().withMessage("Skip where VMs aren't support")
-                    .that(HypervisorProperties.hypervisor_vm_supported().orElse(false))
+            assume().withMessage("Skip where VMs aren't supported")
+                    .that(hypervisor_vm_supported())
                     .isTrue();
         }
         Context context = ApplicationProvider.getApplicationContext();
         mInner = new Inner(context, protectedVm, VirtualMachineManager.getInstance(context));
     }
 
+    // These are inlined from android.sysprop.HypervisorProperties which isn't @SystemApi.
+    // TODO(b/243642678): Move to using a proper Java API for this.
+
+    private boolean hypervisor_vm_supported() {
+        return SystemProperties.getBoolean("ro.boot.hypervisor.vm.supported", false);
+    }
+
+    private boolean hypervisor_protected_vm_supported() {
+        return SystemProperties.getBoolean("ro.boot.hypervisor.protected_vm.supported", false);
+    }
+
     public abstract static class VmEventListener implements VirtualMachineCallback {
         private ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
         private OptionalLong mVcpuStartedNanoTime = OptionalLong.empty();
diff --git a/tests/testapk/Android.bp b/tests/testapk/Android.bp
index 325ebdb..47116eb 100644
--- a/tests/testapk/Android.bp
+++ b/tests/testapk/Android.bp
@@ -28,7 +28,6 @@
     min_sdk_version: "33",
 }
 
-// TODO(jiyong): make this a binary, not a shared library
 cc_library_shared {
     name: "MicrodroidTestNativeLib",
     srcs: ["src/native/testbinary.cpp"],