From 7d75ee7bdcfa326787c5ef29b56d16e173f3c9bc Mon Sep 17 00:00:00 2001 From: Dorin Drimus Date: Mon, 23 Dec 2024 14:34:59 +0000 Subject: Fix NPE when display is not connected when onSecureWindowShown is called Bug: 385377064 Test: atest ActivityManagementTest Flag: EXEMPT minor NPE fix Change-Id: I6791846c704eed70e5cb6c183e6bf32968a1eed4 --- .../server/companion/virtual/VirtualDeviceImpl.java | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 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 a1d621d8dd1f..6bf60bf1ddf1 100644 --- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java +++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java @@ -301,14 +301,19 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub // if the secure window is shown on a non-secure virtual display. DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); Display display = displayManager.getDisplay(displayId); - if ((display.getFlags() & Display.FLAG_SECURE) == 0) { - showToastWhereUidIsRunning(activityInfo.applicationInfo.uid, - com.android.internal.R.string.vdm_secure_window, - Toast.LENGTH_LONG, mContext.getMainLooper()); - - Counter.logIncrementWithUid( - "virtual_devices.value_secure_window_blocked_count", - mAttributionSource.getUid()); + if (display != null) { + if ((display.getFlags() & Display.FLAG_SECURE) == 0) { + showToastWhereUidIsRunning(activityInfo.applicationInfo.uid, + com.android.internal.R.string.vdm_secure_window, + Toast.LENGTH_LONG, mContext.getMainLooper()); + + Counter.logIncrementWithUid( + "virtual_devices.value_secure_window_blocked_count", + mAttributionSource.getUid()); + } + } else { + Slog.e(TAG, "Calling onSecureWindowShown on a non existent/connected display: " + + displayId); } } -- cgit v1.2.3-59-g8ed1b