diff options
| author | 2018-10-04 11:43:51 +0800 | |
|---|---|---|
| committer | 2018-10-09 17:59:26 +0800 | |
| commit | e97db706ceadeb8f2e411e0f1a8ec6a6e4484857 (patch) | |
| tree | d8627c4c52b454c4803880560601a92b69e880c1 | |
| parent | 72621aebf112398616c026bd45e0e2117d3d750b (diff) | |
Add null check for WindowInfo
The WindowInfo may be null if the target window can't be found in
current mWindowInfoById. Add null guard to prevent from NPE here.
Bug: 116652152
Test: atest CtsAccessibilityServiceTestCases
Test: atest CtsAccessibilityTestCases
Change-Id: Iaf2446e66420289be4154e90fbe213bbca9fd41f
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index 44ef8b6d6c3d..435ae9950da2 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -2630,7 +2630,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final List<Integer> outsideWindowsIds; final List<RemoteAccessibilityConnection> connectionList = new ArrayList<>(); synchronized (mLock) { - outsideWindowsIds = mSecurityPolicy.getWatchOutsideTouchWindowId(targetWindowId); + outsideWindowsIds = mSecurityPolicy.getWatchOutsideTouchWindowIdLocked(targetWindowId); for (int i = 0; i < outsideWindowsIds.size(); i++) { connectionList.add(getConnectionLocked(outsideWindowsIds.get(i))); } @@ -3684,13 +3684,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return mWindowInfoById.get(windowId); } - private List<Integer> getWatchOutsideTouchWindowId(int targetWindowId) { - if (mWindowInfoById != null && mHasWatchOutsideTouchWindow) { + private List<Integer> getWatchOutsideTouchWindowIdLocked(int targetWindowId) { + final WindowInfo targetWindow = mWindowInfoById.get(targetWindowId); + if (targetWindow != null && mWindowInfoById != null && mHasWatchOutsideTouchWindow) { final List<Integer> outsideWindowsId = new ArrayList<>(); - final WindowInfo targetWindow = mWindowInfoById.get(targetWindowId); for (int i = 0; i < mWindowInfoById.size(); i++) { WindowInfo window = mWindowInfoById.valueAt(i); - if (window.layer < targetWindow.layer + if (window != null && window.layer < targetWindow.layer && window.hasFlagWatchOutsideTouch) { outsideWindowsId.add(mWindowInfoById.keyAt(i)); } |