summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author lucychang <lucychang@google.com> 2021-02-01 17:17:36 +0800
committer Lucy Chang <lucychang@google.com> 2021-02-18 04:36:47 +0000
commitbeebb73485ccf6e820dae4c030d3217c3fa94097 (patch)
tree218600316eb6c3311ced86c8baeb1698d965ea80
parentc1d7c4d6ab76715d928b487dc40a552f74ebfdb6 (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.txt2
-rw-r--r--core/java/android/view/AccessibilityInteractionController.java3
-rw-r--r--core/java/android/view/accessibility/AccessibilityNodeInfo.java6
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();
}