Add Android accessibility bridge support for "longPress" and "tap" semantic events

This commit is contained in:
Jonah Williams 2018-05-02 17:24:29 -07:00 committed by GitHub
parent 7205eba53f
commit 8bac5d84be

View File

@ -281,10 +281,6 @@ class AccessibilityBridge extends AccessibilityNodeProvider implements BasicMess
mOwner.dispatchSemanticsAction(virtualViewId, Action.TAP);
return true;
}
case AccessibilityNodeInfo.ACTION_LONG_CLICK: {
mOwner.dispatchSemanticsAction(virtualViewId, Action.LONG_PRESS);
return true;
}
case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: {
if (object.hasAction(Action.SCROLL_UP)) {
mOwner.dispatchSemanticsAction(virtualViewId, Action.SCROLL_UP);
@ -563,13 +559,6 @@ class AccessibilityBridge extends AccessibilityNodeProvider implements BasicMess
}
sendAccessibilityEvent(event);
}
if (mA11yFocusedObject != null && mA11yFocusedObject.id == object.id
&& object.hadFlag(Flag.HAS_CHECKED_STATE)
&& object.hasFlag(Flag.HAS_CHECKED_STATE)
&& object.hadFlag(Flag.IS_CHECKED) != object.hasFlag(Flag.IS_CHECKED)) {
// Simulate a click so TalkBack announces the change in checked state.
sendAccessibilityEvent(object.id, AccessibilityEvent.TYPE_VIEW_CLICKED);
}
if (mA11yFocusedObject != null && mA11yFocusedObject.id == object.id
&& !object.hadFlag(Flag.IS_SELECTED) && object.hasFlag(Flag.IS_SELECTED)) {
AccessibilityEvent event =
@ -671,6 +660,22 @@ class AccessibilityBridge extends AccessibilityNodeProvider implements BasicMess
case "announce":
mOwner.announceForAccessibility((String) data.get("message"));
break;
case "longPress": {
Integer nodeId = (Integer) annotatedEvent.get("nodeId");
if (nodeId == null) {
return;
}
sendAccessibilityEvent(nodeId, AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
break;
}
case "tap": {
Integer nodeId = (Integer) annotatedEvent.get("nodeId");
if (nodeId == null) {
return;
}
sendAccessibilityEvent(nodeId, AccessibilityEvent.TYPE_VIEW_CLICKED);
break;
}
case "tooltip": {
AccessibilityEvent e = obtainAccessibilityEvent(ROOT_NODE_ID, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
e.getText().add((String) data.get("message"));