From 45a6bab552795074a93e681018232d0d6abc0e1a Mon Sep 17 00:00:00 2001 From: Jan Sebechlebsky Date: Tue, 25 Jul 2023 15:03:56 +0200 Subject: [PATCH] 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 --- .../server/companion/virtual/VirtualDeviceImpl.java | 5 +++-- .../companion/virtual/VirtualDeviceManagerServiceTest.java | 7 ------- 2 files changed, 3 insertions(+), 9 deletions(-) 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 254e6ce14630e..cf7eb5122021f 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 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub } 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 8884dba217ed7..2336374a3c5b8 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 @@ -788,13 +788,6 @@ public class VirtualDeviceManagerServiceTest { nullable(String.class), eq(DISPLAY_ID_1), eq(null)); } - @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);