A11y elements should have a way to indicate what actions they support without requiring a11y clients to actually try invoking the action*. An action listed in AXAction can be performed on the element via AXPlatformNodeDelegate::AccessibilityPerformAction(), but there is no way to tell if doing this will actually change anything (or just be ignored by the control it's performed on). We currently do this by applying blanket assumptions to an a11y element's role; e.g. we assume that AX_ROLE_BUTTONs are clickable (see ui/accessibility/ax_role_properties.cc). However, we would like to support more use cases, such as Chrome's back button supporting left and right click actions (but not the refresh button, which only supports left click), or a numerical editable combo box that also provides "increment" and "decrement" actions.
* There are two exceptions to this:
- The AXIntAttribute AX_ATTR_ACTION. If this is set, this indicates that the a11y element supports the AX_ACTION_DO_DEFAULT action (which is a click). All its possible values (listed in the AXSupportedAction enum) are just string indicators to describe what happens to the control when it's clicked, e.g. an unchecked checkbox gets "checked" when it's clicked.
- The AXBoolAttribute "can_set_value", which indicates whether AX_ACTION_SET_VALUE is supported.
It should also be noted that there is also an enum called AXSupportedAction, which is (as mentioned in the first exception) used to describe what the result of performing the default action on a control will be. This should be renamed when this is fixed, since it might be confusing.
Comment 1 by bugdroid1@chromium.org
, May 9 2017