From beebb73485ccf6e820dae4c030d3217c3fa94097 Mon Sep 17 00:00:00 2001 From: lucychang Date: Mon, 1 Feb 2021 17:17:36 +0800 Subject: Checks viewId's nullibility before findA11yNodeInfos Returns empty list for AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId if the viewId is null to prevent NullPointerException happened to the UI client. Bug: 158357326 Test: manually test Change-Id: I041d379ed2866ac9d67067b1fcde4c5b585a95ad --- core/java/android/view/AccessibilityInteractionController.java | 3 ++- core/java/android/view/accessibility/AccessibilityNodeInfo.java | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'core/java/android') diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java index 9473845b15e6..09452828057e 100644 --- a/core/java/android/view/AccessibilityInteractionController.java +++ b/core/java/android/view/AccessibilityInteractionController.java @@ -383,7 +383,8 @@ public final class AccessibilityInteractionController { final List infos = mTempAccessibilityNodeInfoList; infos.clear(); try { - if (mViewRootImpl.mView == null || mViewRootImpl.mAttachInfo == null) { + if (mViewRootImpl.mView == null || mViewRootImpl.mAttachInfo == null + || viewId == null) { return; } mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = flags; diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 97ce92cd90aa..ab46170792a5 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -1781,8 +1781,12 @@ public class AccessibilityNodeInfo implements Parcelable { * @param viewId The fully qualified resource name of the view id to find. * @return A list of node info. */ - public List findAccessibilityNodeInfosByViewId(String viewId) { + public List findAccessibilityNodeInfosByViewId(@NonNull String viewId) { enforceSealed(); + if (viewId == null) { + Log.e(TAG, "returns empty list due to null viewId."); + return Collections.emptyList(); + } if (!canPerformRequestOverConnection(mConnectionId, mWindowId, mSourceNodeId)) { return Collections.emptyList(); } -- cgit v1.2.3