From 8681ea30ebbf947918e81240f80510527433c7b7 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Wed, 11 Mar 2020 18:27:08 +0800 Subject: [PATCH] Using parent windowId instead AccessibilityWindowManager would get null interactive region since embedded hierarchy doesn't have window. Because interactive region is null, A11yInteractionController#adjustIsVisibleToUserIfNeeded wouldn't adjust its visibility to false. This results in that the visibility of A11yNodeInfo on embedded hierarchy may be incorrect. Bug: 151203875 Test: a11y CTS & unit tests Change-Id: I7d61a15994bf726e708e597d0363904fdb32f183 --- .../server/accessibility/AccessibilityWindowManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java index 5d699c01d1384..5d97d213928f3 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java @@ -1232,6 +1232,7 @@ public class AccessibilityWindowManager { */ public boolean computePartialInteractiveRegionForWindowLocked(int windowId, @NonNull Region outRegion) { + windowId = resolveParentWindowIdLocked(windowId); final DisplayWindowsObserver observer = getDisplayWindowObserverByWindowIdLocked(windowId); if (observer != null) { return observer.computePartialInteractiveRegionForWindowLocked(windowId, outRegion); @@ -1436,6 +1437,7 @@ public class AccessibilityWindowManager { */ @Nullable public WindowInfo findWindowInfoByIdLocked(int windowId) { + windowId = resolveParentWindowIdLocked(windowId); final DisplayWindowsObserver observer = getDisplayWindowObserverByWindowIdLocked(windowId); if (observer != null) { return observer.findWindowInfoByIdLocked(windowId);