New TestApis to use in VDM CTS

Bug: 324560285
Test: CTS
Change-Id: I494fdc3213688f0a1d0980adc1f60b6f917e9d1a
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 19b265d..5e4c90e 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -921,7 +921,33 @@
 package android.companion.virtual {
 
   public final class VirtualDeviceManager {
+    method public int getAudioPlaybackSessionId(int);
+    method public int getAudioRecordingSessionId(int);
+    method public int getDeviceIdForDisplayId(int);
+    method public int getDevicePolicy(int, int);
     method @FlaggedApi("android.companion.virtual.flags.interactive_screen_mirror") public boolean isVirtualDeviceOwnedMirrorDisplay(int);
+    method public void playSoundEffect(int, int);
+  }
+
+}
+
+package android.companion.virtual.camera {
+
+  @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCamera implements java.io.Closeable {
+    method @NonNull public String getId();
+  }
+
+}
+
+package android.companion.virtual.sensor {
+
+  public final class VirtualSensor implements android.os.Parcelable {
+    ctor public VirtualSensor(int, int, @NonNull String);
+    method public int getHandle();
+  }
+
+  public final class VirtualSensorConfig implements android.os.Parcelable {
+    method public int getFlags();
   }
 
 }
@@ -988,6 +1014,7 @@
     method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
     method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
     method public void updateDeviceId(int);
+    method public abstract void updateDisplay(int);
     field public static final String ATTENTION_SERVICE = "attention";
     field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
     field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
@@ -1001,6 +1028,7 @@
 
   public class ContextWrapper extends android.content.Context {
     method public int getDisplayId();
+    method public void updateDisplay(int);
   }
 
   public class Intent implements java.lang.Cloneable android.os.Parcelable {
@@ -3538,6 +3566,7 @@
   public final class Display {
     method @RequiresPermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE) public void clearUserPreferredDisplayMode();
     method @NonNull public android.view.Display.Mode getDefaultMode();
+    method public int getRemoveMode();
     method @NonNull public int[] getReportedHdrTypes();
     method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut();
     method @Nullable public android.view.Display.Mode getSystemPreferredDisplayMode();
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index a16e94a..3304475 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -26,6 +26,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
@@ -333,6 +334,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public @VirtualDeviceParams.DevicePolicy int getDevicePolicy(
             int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
         if (mService == null) {
@@ -351,6 +354,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getDeviceIdForDisplayId(int displayId) {
         if (mService == null) {
             Log.w(TAG, "Failed to retrieve virtual devices; no virtual device manager service.");
@@ -446,6 +451,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getAudioPlaybackSessionId(int deviceId) {
         if (mService == null) {
             return AUDIO_SESSION_ID_GENERATE;
@@ -470,6 +477,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getAudioRecordingSessionId(int deviceId) {
         if (mService == null) {
             return AUDIO_SESSION_ID_GENERATE;
@@ -491,6 +500,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public void playSoundEffect(int deviceId, @AudioManager.SystemSoundEffect int effectType) {
         if (mService == null) {
             Log.w(TAG, "Failed to dispatch sound effect; no virtual device manager service.");
diff --git a/core/java/android/companion/virtual/camera/VirtualCamera.java b/core/java/android/companion/virtual/camera/VirtualCamera.java
index 9d6c14b..f727589 100644
--- a/core/java/android/companion/virtual/camera/VirtualCamera.java
+++ b/core/java/android/companion/virtual/camera/VirtualCamera.java
@@ -18,7 +18,9 @@
 
 import android.annotation.FlaggedApi;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.companion.virtual.IVirtualDevice;
 import android.companion.virtual.VirtualDeviceManager;
 import android.companion.virtual.VirtualDeviceParams;
@@ -84,6 +86,8 @@
      * Returns the id of this virtual camera instance.
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     @NonNull
     public String getId() {
         return mCameraId;
diff --git a/core/java/android/companion/virtual/sensor/VirtualSensor.java b/core/java/android/companion/virtual/sensor/VirtualSensor.java
index 14c7997..37e494b 100644
--- a/core/java/android/companion/virtual/sensor/VirtualSensor.java
+++ b/core/java/android/companion/virtual/sensor/VirtualSensor.java
@@ -18,7 +18,9 @@
 
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.companion.virtual.IVirtualDevice;
 import android.hardware.Sensor;
 import android.os.IBinder;
@@ -54,6 +56,15 @@
         mToken = token;
     }
 
+    /**
+     * @hide
+     */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
+    public VirtualSensor(int handle, int type, @NonNull String name) {
+        this(handle, type, name, /*virtualDevice=*/null, /*token=*/null);
+    }
+
     private VirtualSensor(Parcel parcel) {
         mHandle = parcel.readInt();
         mType = parcel.readInt();
@@ -67,6 +78,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getHandle() {
         return mHandle;
     }
diff --git a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
index 0dbe411..21ad914 100644
--- a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
+++ b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
@@ -20,7 +20,9 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.hardware.Sensor;
 import android.hardware.SensorDirectChannel;
 import android.os.Parcel;
@@ -217,6 +219,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getFlags() {
         return mFlags;
     }
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index b8d7543..1126c9f 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -7706,9 +7706,13 @@
     }
 
     /**
+     * Updates the display association of this Context with the display with the given ID.
+     *
      * @hide
      */
     @SuppressWarnings("HiddenAbstractMethod")
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public abstract void updateDisplay(int displayId);
 
     /**
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 0006139..1f2b4fa 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -1211,6 +1211,8 @@
      * @see #REMOVE_MODE_DESTROY_CONTENT
      */
     // TODO (b/114338689): Remove the method and use IWindowManager#getRemoveContentMode
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getRemoveMode() {
         return mDisplayInfo.removeMode;
     }
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
index 9ed0108..14f1b64 100644
--- a/test-mock/api/test-current.txt
+++ b/test-mock/api/test-current.txt
@@ -3,6 +3,7 @@
 
   public class MockContext extends android.content.Context {
     method public int getDisplayId();
+    method public void updateDisplay(int);
   }
 
   @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {