Accerciser's AT-SPI Validator Plugin
Contents
- Accerciser's AT-SPI Validator Plugin
-
Well known errors
- Actionable ITEM_ROLE is not focusable or selectable
- Interactive ITEM_ROLE is not actionable
- More than one focused widget
- ITEM_ROLE has no text interface
- ITEM_ROLE index in parent does not match child index
- Missing reciprocal for RELATION_NAME relation
- ITEM_ROLE missing name or label
- Focusable ITEM_ROLE has a table interface, but not a selection interface
- ITEM_ROLE has ITEM_EPHEMERAL_STATE state without ITEM_ABLE_STATE state
- ITEM_ROLE does not belong to a set
- ITEM_ROLEs index X does not match row and column
- ITEM_ROLEs parent index X does not match row and column index Y
- ITEM_ROLE has no name or description
Accerciser's AT-SPI Validator Plugin generates a report with accessibility issues related to a target application. Besides listing the errors, the report includes their severity levels and a little description for each specific problem identified. In this page, you will find useful information about the errors pointed out by this plugin.
Note: This is a work-in-progress page. Possible solutions to errors are intended to be listed here.
Well known errors
Actionable ITEM_ROLE is not focusable or selectable
Any item that supports the action interface should also be focusable or selectable, so the user can interact with it via the keyboard.
Possible solutions
If the target aplication is written in GTK+ 3.0, try setting the widget's focus as TRUE. For example: let's assume the widget giving errors is acc. Then, try doing
gtk_widget_set_can_focus(GTK_WIDGET(acc), TRUE);
Interactive ITEM_ROLE is not actionable
Any item with one of the following roles
- push button
- menu
- menu item
- check menu item
- radio menu item
- toggle button
- radio button
should support the action interface.
Tips and notes
- If you intend to implement a custom widget with any of the listed roles, remember of adding ATK_TYPE_ACTION as one of its interfaces.
Note: Until this page's last edition, this error was being raised for menus that compose combo boxes in GTK+ 3.0. Regular menus shouldn't raise it, as well as default gtk+ 3.0 widgets with any of the other listed roles.
More than one focused widget
The target application should have one and only one accessible item with state focused at anytime.
ITEM_ROLE has no text interface
Any item with one of the following roles
- push button
- menu
- menu item
- toggle button
- status bar
- table column header
- table row header
- spin button
- slider
- row header
- column header
- radio buttona
- password text
- text
- entry
- paragraph
- page tab
- list item
- link
- heading
- header
- footer
- check box
- caption
- terminal
should support the text interface, since they all support stylized text.
Possible solutions
If the target aplication is written in GTK+ 3.0, try adding an ATK Object and setting its name. For example: let's assume the widget giving errors is acc. Then, try doing
AtkObject *obj;
obj = gtk_widget_get_accessible(acc);
atk_object_set_name(obj, STRING_NAME);
ITEM_ROLE index in parent does not match child index
The indexes returned by item.getIndexInParent and item.parent.getChildAtIndex should be consistent - i.e., if
pi = item.getIndexInParent
and
child = item.parent.getChildAtIndex(pi)
then the expected behaviour should be
child == item
Missing reciprocal for RELATION_NAME relation
Any relation in the following mapping
- label for - labelled by
- controller for - controlled by
- member of - member of
- flows to - flows from
- embeds - embedded by
- popup for - parent window of
- description for - described by
should point to an item having the reciprocal relation.
ITEM_ROLE missing name or label
Any accessible item with one of the following roles
- spin button
- slider
- password text
- text
- entry
- terminal
- push button
- menu
- menu item
- check menu item
- radio menu item
- toggle button
- table column header
- table row header
- row header
- column header
- radio button
- page tab
- list item
- link
- label
- heading
- header
- footer
- check box
- caption
should have an accessible name, a labelled by relationship, or both.
Focusable ITEM_ROLE has a table interface, but not a selection interface
A focusable accessible item with a table interface should also support a selection interface.
ITEM_ROLE has ITEM_EPHEMERAL_STATE state without ITEM_ABLE_STATE state
Any accessible item with an ephemeral state should have the corresponding -able state. The correspondencies are listed below.
- expanded - expandable
- collapsed - expandable
- focused - focusable
- selected - selectable
ITEM_ROLE does not belong to a set
An accessible item with radio button role (or radio menu item) should be a member of a set, as indicated by a relation or appropriate object property. Otherwise, the item is useless.
ITEM_ROLEs index X does not match row and column
The row/column number retrieved from a table child's item at a certain index should return the original row/column.
ITEM_ROLEs parent index X does not match row and column index Y
The parent index is the order of the child in the parent - in this case, in a table. The row and column index should be the same value retrieved by the item's location in the table.
ITEM_ROLE has no name or description
Any accessible item with an image role or image interface should have either a name, a description, or image description. The roles related to this error are listed below.
- desktop icon
- icon
- animation
- image