CTS tests for VirtualDeviceManager#isVirtualDeviceOwnedMirrorDisplay

Test: m VirtualDisplayTest
Bug: 292212199
Change-Id: I2303fbbc41138c8366a31a33cac94c396cffb22a
diff --git a/tests/tests/virtualdevice/core/src/android/virtualdevice/cts/core/VirtualDisplayTest.java b/tests/tests/virtualdevice/core/src/android/virtualdevice/cts/core/VirtualDisplayTest.java
index c0621e8..d966a8c 100644
--- a/tests/tests/virtualdevice/core/src/android/virtualdevice/cts/core/VirtualDisplayTest.java
+++ b/tests/tests/virtualdevice/core/src/android/virtualdevice/cts/core/VirtualDisplayTest.java
@@ -242,7 +242,7 @@
 
     @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
     @Test
-    public void createVirtualDisplay_public_doesNotThrow() {
+    public void createVirtualDisplay_public_createsMirrorDisplay() {
         VirtualDisplay virtualDisplay = createVirtualDisplayForVirtualDevice(
                 DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC,
                 DEFAULT_VIRTUAL_DEVICE_PARAMS);
@@ -250,11 +250,13 @@
         assertThat(virtualDisplay).isNotNull();
         Display display = virtualDisplay.getDisplay();
         assertThat(display.isValid()).isTrue();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isTrue();
     }
 
     @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
     @Test
-    public void createVirtualDisplay_autoMirror_doesNotThrow() {
+    public void createVirtualDisplay_autoMirror_createsMirrorDisplay() {
         VirtualDisplay virtualDisplay = createVirtualDisplayForVirtualDevice(
                 DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                 DEFAULT_VIRTUAL_DEVICE_PARAMS);
@@ -262,11 +264,13 @@
         assertThat(virtualDisplay).isNotNull();
         Display display = virtualDisplay.getDisplay();
         assertThat(display.isValid()).isTrue();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isTrue();
     }
 
     @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
     @Test
-    public void createVirtualDisplay_publicAutoMirror_doesNotThrow() {
+    public void createVirtualDisplay_publicAutoMirror_createsMirrorDisplay() {
         VirtualDisplay virtualDisplay = createVirtualDisplayForVirtualDevice(
                 DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC
                     | DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
@@ -275,6 +279,37 @@
         assertThat(virtualDisplay).isNotNull();
         Display display = virtualDisplay.getDisplay();
         assertThat(display.isValid()).isTrue();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isTrue();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void createVirtualDisplay_ownContentOnly_doesNotCreateMirrorDisplay() {
+        VirtualDisplay virtualDisplay = createVirtualDisplayForVirtualDevice(
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY,
+                DEFAULT_VIRTUAL_DEVICE_PARAMS);
+
+        assertThat(virtualDisplay).isNotNull();
+        Display display = virtualDisplay.getDisplay();
+        assertThat(display.isValid()).isTrue();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void createVirtualDisplay_autoMirrorAndOwnContentOnly_doesNotCreateMirrorDisplay() {
+        VirtualDisplay virtualDisplay = createVirtualDisplayForVirtualDevice(
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
+                        | DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
+                DEFAULT_VIRTUAL_DEVICE_PARAMS);
+
+        assertThat(virtualDisplay).isNotNull();
+        Display display = virtualDisplay.getDisplay();
+        assertThat(display.isValid()).isTrue();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
     }
 
     @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
@@ -331,6 +366,64 @@
         assertThat(display.getFlags() & Display.FLAG_PRESENTATION).isEqualTo(0);
     }
 
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_invalidDisplay_returnsFalse() {
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(Display.INVALID_DISPLAY))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_defaultDisplay_returnsFalse() {
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(Display.DEFAULT_DISPLAY))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_unownedAutoMirrorDisplay_returnsFalse() {
+        VirtualDisplay virtualDisplay = createUnownedVirtualDisplay(
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR);
+
+        Display display = virtualDisplay.getDisplay();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_unownedPublicDisplay_returnsFalse() {
+        VirtualDisplay virtualDisplay = createUnownedVirtualDisplay(
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC);
+
+        Display display = virtualDisplay.getDisplay();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_unownedPublicAutoMirrorDisplay_returnsFalse() {
+        VirtualDisplay virtualDisplay = createUnownedVirtualDisplay(
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC
+                        | DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR);
+
+        Display display = virtualDisplay.getDisplay();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_INTERACTIVE_SCREEN_MIRROR)
+    @Test
+    public void isVirtualDeviceOwnedMirrorDisplay_unownedDisplay_returnsFalse() {
+        VirtualDisplay virtualDisplay = createUnownedVirtualDisplay();
+
+        Display display = virtualDisplay.getDisplay();
+        assertThat(mVirtualDeviceManager.isVirtualDeviceOwnedMirrorDisplay(display.getDisplayId()))
+                .isFalse();
+    }
+
     @Test
     public void createVirtualDisplay_trustedDisplay_shouldSpecifyOwnFocusFlag() {
         mVirtualDevice =
@@ -547,6 +640,18 @@
                 config, Runnable::run, mVirtualDisplayCallback);
     }
 
+    private VirtualDisplay createUnownedVirtualDisplay() {
+        VirtualDisplayConfig config = createDefaultVirtualDisplayConfigBuilder().build();
+        return mDisplayManager.createVirtualDisplay(config);
+    }
+
+    private VirtualDisplay createUnownedVirtualDisplay(int displayFlags) {
+        VirtualDisplayConfig config = createDefaultVirtualDisplayConfigBuilder()
+                .setFlags(displayFlags)
+                .build();
+        return mDisplayManager.createVirtualDisplay(config);
+    }
+
     private static List<Integer> getDisplayIds(Collection<VirtualDisplay> displays) {
         return displays.stream().map((display) -> display.getDisplay().getDisplayId()).collect(
                 Collectors.toList());