diff options
| author | 2021-02-01 17:17:36 +0800 | |
|---|---|---|
| committer | 2021-02-18 04:36:47 +0000 | |
| commit | beebb73485ccf6e820dae4c030d3217c3fa94097 (patch) | |
| tree | 218600316eb6c3311ced86c8baeb1698d965ea80 | |
| parent | c1d7c4d6ab76715d928b487dc40a552f74ebfdb6 (diff) | |
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
| -rw-r--r-- | core/api/current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/view/AccessibilityInteractionController.java | 3 | ||||
| -rw-r--r-- | core/java/android/view/accessibility/AccessibilityNodeInfo.java | 6 |
3 files changed, 8 insertions, 3 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index e72f943da520..15e73693a4e9 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -50301,7 +50301,7 @@ package android.view.accessibility { method public boolean canOpenPopup(); method public int describeContents(); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String); - method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String); + method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(@NonNull String); method public android.view.accessibility.AccessibilityNodeInfo findFocus(int); method public android.view.accessibility.AccessibilityNodeInfo focusSearch(int); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getActionList(); 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<AccessibilityNodeInfo> 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<AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String viewId) { + public List<AccessibilityNodeInfo> 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(); } |