AVF: promote FD->IBinder to SystemApi.

This is needed, dotchya know.

Normally, in the same process, you do all of this, but to
pass a connection to another process, imagine
processes "Q -> R -> S", where:
- Q is client
- R is VM creator
- S is VM

Then Q can call binderFromPreconnectedClient, and it can
implement the provider by calling an API on R which will
return the results of R calling connectVsock.

This way, you can have direct Q<->S communication, instead of two hops.

Bugs: me
Test: TH
Change-Id: If968f18f2c96511fd8359cc68febd01d7dae3833
diff --git a/libs/framework-virtualization/api/system-current.txt b/libs/framework-virtualization/api/system-current.txt
index 233491f..975bafe 100644
--- a/libs/framework-virtualization/api/system-current.txt
+++ b/libs/framework-virtualization/api/system-current.txt
@@ -2,6 +2,7 @@
 package android.system.virtualmachine {
 
   public class VirtualMachine implements java.lang.AutoCloseable {
+    method @NonNull @WorkerThread public static android.os.IBinder binderFromPreconnectedClient(@NonNull android.system.virtualmachine.VirtualMachine.VsockConnectionProvider) throws android.system.virtualmachine.VirtualMachineException;
     method public void clearCallback();
     method @WorkerThread public void close();
     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;
@@ -25,6 +26,10 @@
     field public static final String USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION = "android.permission.USE_CUSTOM_VIRTUAL_MACHINE";
   }
 
+  public static interface VirtualMachine.VsockConnectionProvider {
+    method @NonNull public android.os.ParcelFileDescriptor addConnection() throws android.system.virtualmachine.VirtualMachineException;
+  }
+
   public interface VirtualMachineCallback {
     method public void onError(@NonNull android.system.virtualmachine.VirtualMachine, int, @NonNull String);
     method public void onPayloadFinished(@NonNull android.system.virtualmachine.VirtualMachine, int);
diff --git a/libs/framework-virtualization/src/android/system/virtualmachine/VirtualMachine.java b/libs/framework-virtualization/src/android/system/virtualmachine/VirtualMachine.java
index 0445fcb..5fcb975 100644
--- a/libs/framework-virtualization/src/android/system/virtualmachine/VirtualMachine.java
+++ b/libs/framework-virtualization/src/android/system/virtualmachine/VirtualMachine.java
@@ -1970,8 +1970,11 @@
      *
      * @hide
      */
+    @SystemApi
+    @SuppressLint("UnflaggedApi") // already existing functionality exposed, users should flag
     public interface VsockConnectionProvider {
         @NonNull
+        @SuppressLint("UnflaggedApi") // already existing functionality exposed, users should flag
         public ParcelFileDescriptor addConnection() throws VirtualMachineException;
     }
 
@@ -2035,6 +2038,8 @@
      *
      * @hide
      */
+    @SystemApi
+    @SuppressLint("UnflaggedApi") // already existing functionality exposed, users should flag
     @WorkerThread
     @NonNull
     public static IBinder binderFromPreconnectedClient(@NonNull VsockConnectionProvider provider)