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
This commit is contained in:
lucychang
2021-02-01 17:17:36 +08:00
committed by Lucy Chang
parent c1d7c4d6ab
commit beebb73485
3 changed files with 8 additions and 3 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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();
}