From 47410847161bd941f38a87ca01d836bd8d34455c Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Tue, 4 Feb 2020 12:18:49 +0800 Subject: [PATCH] Fix AccessibilityInputFilterTest The root cause is that we use WM#getCurrentMetrics(New API) instead of Display#getSize in ViewConfiguration . However, we use a stub display in AccessibilityInputFilterTest, which don't have a corresponding DisplayContent in WMS. Use getDisplayContentOrCreate to create a DisplayContent if it is not yet created, and throws exception if display object is invalid. fixes: 148823816 Test: atest AccessibilityInputFilterTest Test: atest WindowMetricsTests Change-Id: I36c6b020faafebbf609a46dfdeb0c9580e115e01 --- core/java/android/view/WindowManagerImpl.java | 2 +- .../java/com/android/server/wm/WindowManagerService.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index 4365d1f5194a5..56683dd9a5d19 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -277,7 +277,7 @@ public final class WindowManagerImpl implements WindowManager { .setStableInsets(Insets.of(stableInsets)) .setDisplayCutout(displayCutout.get()).build(); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 6e1f46bb5e42d..196434dbb6ee5 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8015,7 +8015,11 @@ public class WindowManagerService extends IWindowManager.Stub int displayId, Rect outContentInsets, Rect outStableInsets, DisplayCutout.ParcelableWrapper displayCutout) { synchronized (mGlobalLock) { - final DisplayContent dc = mRoot.getDisplayContent(displayId); + final DisplayContent dc = mRoot.getDisplayContentOrCreate(displayId); + if (dc == null) { + throw new WindowManager.InvalidDisplayException("Display#" + displayId + + "could not be found!"); + } final WindowToken windowToken = dc.getWindowToken(attrs.token); final ActivityRecord activity; if (windowToken != null && windowToken.asActivityRecord() != null) {