Make onVirtualDisplayRemoved callback idempotent.

... by not throwing an exception if it's invoked multiple times /
for already released display id.

Bug: 292284597
Test: atest VirtualDisplayTest
Change-Id: I151eafc1f4c2ea3fb5c8ed966965fe7efbd9cc56
Merged-In: I151eafc1f4c2ea3fb5c8ed966965fe7efbd9cc56
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index 254e6ce..cf7eb51 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -983,8 +983,9 @@
         }
 
         if (virtualDisplayWrapper == null) {
-            throw new IllegalStateException(
-                    "Virtual device doesn't have a virtual display with ID " + displayId);
+            Slog.w(TAG, "Virtual device " + mDeviceId + " doesn't have a virtual display with ID "
+                    + displayId);
+            return;
         }
 
         final long ident = Binder.clearCallingIdentity();
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
index 8884dba..2336374 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
@@ -789,13 +789,6 @@
     }
 
     @Test
-    public void onVirtualDisplayRemovedLocked_unknownDisplayId_throwsException() {
-        final int unknownDisplayId = 999;
-        assertThrows(IllegalStateException.class,
-                () -> mDeviceImpl.onVirtualDisplayRemoved(unknownDisplayId));
-    }
-
-    @Test
     public void onVirtualDisplayRemovedLocked_wakeLockIsReleased() throws RemoteException {
         addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
         ArgumentCaptor<IBinder> wakeLockCaptor = ArgumentCaptor.forClass(IBinder.class);