in core/src/main/java/com/facebook/testing/screenshot/layouthierarchy/AccessibilityUtil.java [398:433]
public static boolean hasFocusableAncestor(
@Nullable AccessibilityNodeInfoCompat node, @Nullable View view) {
if (node == null || view == null) {
return false;
}
final ViewParent parentView = ViewCompat.getParentForAccessibility(view);
if (!(parentView instanceof View)) {
return false;
}
final AccessibilityNodeInfoCompat parentNode = createNodeInfoFromView((View) parentView);
try {
if (parentNode == null) {
return false;
}
if (areBoundsIdenticalToWindow(parentNode, (View) parentView)
&& parentNode.getChildCount() > 0) {
return false;
}
if (isAccessibilityFocusable(parentNode, (View) parentView)) {
return true;
}
if (hasFocusableAncestor(parentNode, (View) parentView)) {
return true;
}
} finally {
if (parentNode != null) {
parentNode.recycle();
}
}
return false;
}