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"],