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:
committed by
Facebook GitHub Bot
parent
c1ec891fd0
commit
d28aab50d7
@@ -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.
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user