diff options
4 files changed, 18 insertions, 16 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java index af47ed28e3b0..73584154df3a 100644 --- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java @@ -611,12 +611,12 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (svcConnTracingEnabled()) { logTraceSvcConn("getWindow", "windowId=" + windowId); } + int displayId = Display.INVALID_DISPLAY; + if (windowId != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID) { + displayId = mA11yWindowManager.getDisplayIdByUserIdAndWindowId( + mSystemSupport.getCurrentUserIdLocked(), windowId); + } synchronized (mLock) { - int displayId = Display.INVALID_DISPLAY; - if (windowId != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID) { - displayId = mA11yWindowManager.getDisplayIdByUserIdAndWindowIdLocked( - mSystemSupport.getCurrentUserIdLocked(), windowId); - } ensureWindowsAvailableTimedLocked(displayId); if (!hasRightsToCurrentUserLocked()) { diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index cbb66dc18f28..ffc92aad4fae 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1303,15 +1303,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // the computation for performance reasons. boolean shouldComputeWindows = false; int displayId = event.getDisplayId(); + final int windowId = event.getWindowId(); + if (windowId != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID + && displayId == Display.INVALID_DISPLAY) { + displayId = mA11yWindowManager.getDisplayIdByUserIdAndWindowId( + resolvedUserId, windowId); + event.setDisplayId(displayId); + } synchronized (mLock) { - final int windowId = event.getWindowId(); - if (windowId != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID - && displayId == Display.INVALID_DISPLAY) { - displayId = mA11yWindowManager.getDisplayIdByUserIdAndWindowIdLocked( - resolvedUserId, windowId); - event.setDisplayId(displayId); - } - if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED && displayId != Display.INVALID_DISPLAY && mA11yWindowManager.isTrackingWindowsLocked(displayId)) { diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java index b8181505b9c4..8c06bc8f4607 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java @@ -2038,8 +2038,11 @@ public class AccessibilityWindowManager { * @param windowId The windowId * @return The display ID */ - public int getDisplayIdByUserIdAndWindowIdLocked(int userId, int windowId) { - final IBinder windowToken = getWindowTokenForUserAndWindowIdLocked(userId, windowId); + public int getDisplayIdByUserIdAndWindowId(int userId, int windowId) { + final IBinder windowToken; + synchronized (mLock) { + windowToken = getWindowTokenForUserAndWindowIdLocked(userId, windowId); + } if (traceWMEnabled()) { logTraceWM("getDisplayIdForWindow", "token=" + windowToken); } diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java index e168596b8eb2..16d05b157727 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java @@ -214,7 +214,7 @@ public class AbstractAccessibilityServiceConnectionTest { .thenReturn(mA11yWindowInfos.get(0)); when(mMockA11yWindowManager.findA11yWindowInfoByIdLocked(PIP_WINDOWID)) .thenReturn(mA11yWindowInfos.get(1)); - when(mMockA11yWindowManager.getDisplayIdByUserIdAndWindowIdLocked(USER_ID, + when(mMockA11yWindowManager.getDisplayIdByUserIdAndWindowId(USER_ID, WINDOWID_ONSECONDDISPLAY)).thenReturn(SECONDARY_DISPLAY_ID); when(mMockA11yWindowManager.getWindowListLocked(SECONDARY_DISPLAY_ID)) .thenReturn(mA11yWindowInfosOnSecondDisplay); |