1*344a7f5eSAndroid Build Coastguard Worker// Signature format: 2.0 2*344a7f5eSAndroid Build Coastguard Workerpackage android.system.virtualmachine { 3*344a7f5eSAndroid Build Coastguard Worker 4*344a7f5eSAndroid Build Coastguard Worker public class VirtualMachine implements java.lang.AutoCloseable { 5*344a7f5eSAndroid Build Coastguard Worker method public void clearCallback(); 6*344a7f5eSAndroid Build Coastguard Worker method @WorkerThread public void close(); 7*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.os.IBinder connectToVsockServer(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException; 8*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.os.ParcelFileDescriptor connectVsock(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException; 9*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineConfig getConfig(); 10*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public java.io.InputStream getConsoleOutput() throws android.system.virtualmachine.VirtualMachineException; 11*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public java.io.InputStream getLogOutput() throws android.system.virtualmachine.VirtualMachineException; 12*344a7f5eSAndroid Build Coastguard Worker method @NonNull public String getName(); 13*344a7f5eSAndroid Build Coastguard Worker method @WorkerThread public int getStatus(); 14*344a7f5eSAndroid Build Coastguard Worker method @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) @WorkerThread public void run() throws android.system.virtualmachine.VirtualMachineException; 15*344a7f5eSAndroid Build Coastguard Worker method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.system.virtualmachine.VirtualMachineCallback); 16*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineConfig setConfig(@NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException; 17*344a7f5eSAndroid Build Coastguard Worker method @WorkerThread public void stop() throws android.system.virtualmachine.VirtualMachineException; 18*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachineDescriptor toDescriptor() throws android.system.virtualmachine.VirtualMachineException; 19*344a7f5eSAndroid Build Coastguard Worker field public static final String MANAGE_VIRTUAL_MACHINE_PERMISSION = "android.permission.MANAGE_VIRTUAL_MACHINE"; 20*344a7f5eSAndroid Build Coastguard Worker field public static final long MAX_VSOCK_PORT = 4294967295L; // 0xffffffffL 21*344a7f5eSAndroid Build Coastguard Worker field public static final long MIN_VSOCK_PORT = 1024L; // 0x400L 22*344a7f5eSAndroid Build Coastguard Worker field public static final int STATUS_DELETED = 2; // 0x2 23*344a7f5eSAndroid Build Coastguard Worker field public static final int STATUS_RUNNING = 1; // 0x1 24*344a7f5eSAndroid Build Coastguard Worker field public static final int STATUS_STOPPED = 0; // 0x0 25*344a7f5eSAndroid Build Coastguard Worker field public static final String USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION = "android.permission.USE_CUSTOM_VIRTUAL_MACHINE"; 26*344a7f5eSAndroid Build Coastguard Worker } 27*344a7f5eSAndroid Build Coastguard Worker 28*344a7f5eSAndroid Build Coastguard Worker public interface VirtualMachineCallback { 29*344a7f5eSAndroid Build Coastguard Worker method public void onError(@NonNull android.system.virtualmachine.VirtualMachine, int, @NonNull String); 30*344a7f5eSAndroid Build Coastguard Worker method public void onPayloadFinished(@NonNull android.system.virtualmachine.VirtualMachine, int); 31*344a7f5eSAndroid Build Coastguard Worker method public void onPayloadReady(@NonNull android.system.virtualmachine.VirtualMachine); 32*344a7f5eSAndroid Build Coastguard Worker method public void onPayloadStarted(@NonNull android.system.virtualmachine.VirtualMachine); 33*344a7f5eSAndroid Build Coastguard Worker method public void onStopped(@NonNull android.system.virtualmachine.VirtualMachine, int); 34*344a7f5eSAndroid Build Coastguard Worker field public static final int ERROR_PAYLOAD_CHANGED = 2; // 0x2 35*344a7f5eSAndroid Build Coastguard Worker field public static final int ERROR_PAYLOAD_INVALID_CONFIG = 3; // 0x3 36*344a7f5eSAndroid Build Coastguard Worker field public static final int ERROR_PAYLOAD_VERIFICATION_FAILED = 1; // 0x1 37*344a7f5eSAndroid Build Coastguard Worker field public static final int ERROR_UNKNOWN = 0; // 0x0 38*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_BOOTLOADER_INSTANCE_IMAGE_CHANGED = 10; // 0xa 39*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_BOOTLOADER_PUBLIC_KEY_MISMATCH = 9; // 0x9 40*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_CRASH = 6; // 0x6 41*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_HANGUP = 16; // 0x10 42*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_INFRASTRUCTURE_ERROR = 0; // 0x0 43*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_KILLED = 1; // 0x1 44*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_MICRODROID_FAILED_TO_CONNECT_TO_VIRTUALIZATION_SERVICE = 11; // 0xb 45*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_MICRODROID_INVALID_PAYLOAD_CONFIG = 14; // 0xe 46*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_MICRODROID_PAYLOAD_HAS_CHANGED = 12; // 0xc 47*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_MICRODROID_PAYLOAD_VERIFICATION_FAILED = 13; // 0xd 48*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_MICRODROID_UNKNOWN_RUNTIME_ERROR = 15; // 0xf 49*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_PVM_FIRMWARE_INSTANCE_IMAGE_CHANGED = 8; // 0x8 50*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_PVM_FIRMWARE_PUBLIC_KEY_MISMATCH = 7; // 0x7 51*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_REBOOT = 5; // 0x5 52*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_SHUTDOWN = 3; // 0x3 53*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_START_FAILED = 4; // 0x4 54*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_UNKNOWN = 2; // 0x2 55*344a7f5eSAndroid Build Coastguard Worker field public static final int STOP_REASON_VIRTUALIZATION_SERVICE_DIED = -1; // 0xffffffff 56*344a7f5eSAndroid Build Coastguard Worker } 57*344a7f5eSAndroid Build Coastguard Worker 58*344a7f5eSAndroid Build Coastguard Worker public final class VirtualMachineConfig { 59*344a7f5eSAndroid Build Coastguard Worker method @Nullable public String getApkPath(); 60*344a7f5eSAndroid Build Coastguard Worker method public int getCpuTopology(); 61*344a7f5eSAndroid Build Coastguard Worker method public int getDebugLevel(); 62*344a7f5eSAndroid Build Coastguard Worker method @IntRange(from=0) public long getEncryptedStorageBytes(); 63*344a7f5eSAndroid Build Coastguard Worker method @IntRange(from=0) public long getMemoryBytes(); 64*344a7f5eSAndroid Build Coastguard Worker method @Nullable public String getPayloadBinaryName(); 65*344a7f5eSAndroid Build Coastguard Worker method public boolean isCompatibleWith(@NonNull android.system.virtualmachine.VirtualMachineConfig); 66*344a7f5eSAndroid Build Coastguard Worker method public boolean isEncryptedStorageEnabled(); 67*344a7f5eSAndroid Build Coastguard Worker method public boolean isProtectedVm(); 68*344a7f5eSAndroid Build Coastguard Worker method public boolean isVmOutputCaptured(); 69*344a7f5eSAndroid Build Coastguard Worker field public static final int CPU_TOPOLOGY_MATCH_HOST = 1; // 0x1 70*344a7f5eSAndroid Build Coastguard Worker field public static final int CPU_TOPOLOGY_ONE_CPU = 0; // 0x0 71*344a7f5eSAndroid Build Coastguard Worker field public static final int DEBUG_LEVEL_FULL = 1; // 0x1 72*344a7f5eSAndroid Build Coastguard Worker field public static final int DEBUG_LEVEL_NONE = 0; // 0x0 73*344a7f5eSAndroid Build Coastguard Worker } 74*344a7f5eSAndroid Build Coastguard Worker 75*344a7f5eSAndroid Build Coastguard Worker public static final class VirtualMachineConfig.Builder { 76*344a7f5eSAndroid Build Coastguard Worker ctor public VirtualMachineConfig.Builder(@NonNull android.content.Context); 77*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig build(); 78*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setApkPath(@NonNull String); 79*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setCpuTopology(int); 80*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setDebugLevel(int); 81*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setEncryptedStorageBytes(@IntRange(from=1) long); 82*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setMemoryBytes(@IntRange(from=1) long); 83*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setPayloadBinaryName(@NonNull String); 84*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setProtectedVm(boolean); 85*344a7f5eSAndroid Build Coastguard Worker method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setVmOutputCaptured(boolean); 86*344a7f5eSAndroid Build Coastguard Worker } 87*344a7f5eSAndroid Build Coastguard Worker 88*344a7f5eSAndroid Build Coastguard Worker public final class VirtualMachineDescriptor implements java.lang.AutoCloseable android.os.Parcelable { 89*344a7f5eSAndroid Build Coastguard Worker method public void close(); 90*344a7f5eSAndroid Build Coastguard Worker method public int describeContents(); 91*344a7f5eSAndroid Build Coastguard Worker method public void writeToParcel(@NonNull android.os.Parcel, int); 92*344a7f5eSAndroid Build Coastguard Worker field @NonNull public static final android.os.Parcelable.Creator<android.system.virtualmachine.VirtualMachineDescriptor> CREATOR; 93*344a7f5eSAndroid Build Coastguard Worker } 94*344a7f5eSAndroid Build Coastguard Worker 95*344a7f5eSAndroid Build Coastguard Worker public class VirtualMachineException extends java.lang.Exception { 96*344a7f5eSAndroid Build Coastguard Worker } 97*344a7f5eSAndroid Build Coastguard Worker 98*344a7f5eSAndroid Build Coastguard Worker public class VirtualMachineManager { 99*344a7f5eSAndroid Build Coastguard Worker method @NonNull @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) @WorkerThread public android.system.virtualmachine.VirtualMachine create(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException; 100*344a7f5eSAndroid Build Coastguard Worker method @WorkerThread public void delete(@NonNull String) throws android.system.virtualmachine.VirtualMachineException; 101*344a7f5eSAndroid Build Coastguard Worker method @Nullable @WorkerThread public android.system.virtualmachine.VirtualMachine get(@NonNull String) throws android.system.virtualmachine.VirtualMachineException; 102*344a7f5eSAndroid Build Coastguard Worker method public int getCapabilities(); 103*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachine getOrCreate(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException; 104*344a7f5eSAndroid Build Coastguard Worker method @NonNull @WorkerThread public android.system.virtualmachine.VirtualMachine importFromDescriptor(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineDescriptor) throws android.system.virtualmachine.VirtualMachineException; 105*344a7f5eSAndroid Build Coastguard Worker field public static final int CAPABILITY_NON_PROTECTED_VM = 2; // 0x2 106*344a7f5eSAndroid Build Coastguard Worker field public static final int CAPABILITY_PROTECTED_VM = 1; // 0x1 107*344a7f5eSAndroid Build Coastguard Worker } 108*344a7f5eSAndroid Build Coastguard Worker 109*344a7f5eSAndroid Build Coastguard Worker} 110*344a7f5eSAndroid Build Coastguard Worker 111