Calculate talkback role based on supported paging actions

Summary:
Google Talkback identifies nodes with supported actions up, down, left and right to be of the role Pager.

Reference here: https://github.com/google/talkback/blob/master/utils/src/main/java/com/google/android/accessibility/utils/Role.java#L376-L385

This diff give us the ability to correctly calculate those roles when we come across them in flipper

Reviewed By: blavalla

Differential Revision: D40449485

fbshipit-source-id: 5a9dfe3f807b7fce8043eaab2695d864f93a1392
This commit is contained in:
Jordan Smith (IGDS)
2022-10-18 15:52:10 -07:00
committed by Facebook GitHub Bot
parent c1ec891fd0
commit d28aab50d7
2 changed files with 13 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
import javax.annotation.Nullable; import javax.annotation.Nullable;
/** /**
@@ -119,6 +120,17 @@ public class AccessibilityRoleUtil {
} }
if (role.equals(AccessibilityRole.NONE)) { if (role.equals(AccessibilityRole.NONE)) {
if (AccessibilityUtil.supportsAction(
nodeInfo, AccessibilityActionCompat.ACTION_PAGE_UP.getId())
|| AccessibilityUtil.supportsAction(
nodeInfo, AccessibilityActionCompat.ACTION_PAGE_DOWN.getId())
|| AccessibilityUtil.supportsAction(
nodeInfo, AccessibilityActionCompat.ACTION_PAGE_LEFT.getId())
|| AccessibilityUtil.supportsAction(
nodeInfo, AccessibilityActionCompat.ACTION_PAGE_RIGHT.getId())) {
return AccessibilityRole.PAGER;
}
AccessibilityNodeInfoCompat.CollectionInfoCompat collection = nodeInfo.getCollectionInfo(); AccessibilityNodeInfoCompat.CollectionInfoCompat collection = nodeInfo.getCollectionInfo();
if (collection != null) { if (collection != null) {
// RecyclerView will be classified as a list or grid. // RecyclerView will be classified as a list or grid.

View File

@@ -211,7 +211,7 @@ public final class AccessibilityUtil {
} }
} }
private static boolean supportsAction(AccessibilityNodeInfoCompat node, int action) { protected static boolean supportsAction(AccessibilityNodeInfoCompat node, int action) {
if (node != null) { if (node != null) {
final int supportedActions = node.getActions(); final int supportedActions = node.getActions();