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

Commit fa59d178 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Invisible views should not be visible to accessibility services (interrogation)"

parents 11900410 ea1da3d2
Loading
Loading
Loading
Loading
+8 −5
Original line number Original line Diff line number Diff line
@@ -4407,7 +4407,7 @@ public final class ViewAncestor extends Handler implements ViewParent,
                predicate.init(accessibilityId);
                predicate.init(accessibilityId);
                View root = ViewAncestor.this.mView;
                View root = ViewAncestor.this.mView;
                View target = root.findViewByPredicate(predicate);
                View target = root.findViewByPredicate(predicate);
                if (target != null) {
                if (target != null && target.isShown()) {
                    info = target.createAccessibilityNodeInfo();
                    info = target.createAccessibilityNodeInfo();
                }
                }
            } finally {
            } finally {
@@ -4439,7 +4439,7 @@ public final class ViewAncestor extends Handler implements ViewParent,
            try {
            try {
                View root = ViewAncestor.this.mView;
                View root = ViewAncestor.this.mView;
                View target = root.findViewById(viewId);
                View target = root.findViewById(viewId);
                if (target != null) {
                if (target != null && target.isShown()) {
                    info = target.createAccessibilityNodeInfo();
                    info = target.createAccessibilityNodeInfo();
                }
                }
            } finally {
            } finally {
@@ -4486,7 +4486,7 @@ public final class ViewAncestor extends Handler implements ViewParent,
                    root = ViewAncestor.this.mView;
                    root = ViewAncestor.this.mView;
                }
                }


                if (root == null) {
                if (root == null || !root.isShown()) {
                    return;
                    return;
                }
                }


@@ -4501,8 +4501,10 @@ public final class ViewAncestor extends Handler implements ViewParent,
                final int viewCount = foundViews.size();
                final int viewCount = foundViews.size();
                for (int i = 0; i < viewCount; i++) {
                for (int i = 0; i < viewCount; i++) {
                    View foundView = foundViews.get(i);
                    View foundView = foundViews.get(i);
                    if (foundView.isShown()) {
                        infos.add(foundView.createAccessibilityNodeInfo());
                        infos.add(foundView.createAccessibilityNodeInfo());
                    }
                    }
                 }
            } finally {
            } finally {
                try {
                try {
                    callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
                    callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
@@ -4611,7 +4613,8 @@ public final class ViewAncestor extends Handler implements ViewParent,
                return null;
                return null;
            }
            }
            mFindByAccessibilityIdPredicate.init(accessibilityId);
            mFindByAccessibilityIdPredicate.init(accessibilityId);
            return root.findViewByPredicate(mFindByAccessibilityIdPredicate);
            View foundView = root.findViewByPredicate(mFindByAccessibilityIdPredicate);
            return (foundView != null && foundView.isShown()) ? foundView : null;
        }
        }


        private final class FindByAccessibilitytIdPredicate implements Predicate<View> {
        private final class FindByAccessibilitytIdPredicate implements Predicate<View> {
+3 −2
Original line number Original line Diff line number Diff line
@@ -2023,12 +2023,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
    @Override
    @Override
    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
        super.onInitializeAccessibilityNodeInfo(info);
        super.onInitializeAccessibilityNodeInfo(info);

        for (int i = 0, count = mChildrenCount; i < count; i++) {
        for (int i = 0, count = mChildrenCount; i < count; i++) {
            View child = mChildren[i];
            View child = mChildren[i];
            if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) {
                info.addChild(child);
                info.addChild(child);
            }
            }
        }
        }
    }


    /**
    /**
     * {@inheritDoc}
     * {@inheritDoc}