Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit beebb734 authored by lucychang's avatar lucychang Committed by Lucy Chang
Browse files

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
parent c1d7c4d6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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();
+2 −1
Original line number Diff line number Diff line
@@ -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;
+5 −1
Original line number Diff line number Diff line
@@ -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();
        }