summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jackal Guo <jackalguo@google.com> 2018-10-04 11:43:51 +0800
committer Jackal Guo <jackalguo@google.com> 2018-10-09 17:59:26 +0800
commite97db706ceadeb8f2e411e0f1a8ec6a6e4484857 (patch)
treed8627c4c52b454c4803880560601a92b69e880c1
parent72621aebf112398616c026bd45e0e2117d3d750b (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.java10
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));
}