A
Browser support for accessibility is an area where any application will
benefit of getting the basics right from the start are huge, especially for
those users that rely upon them for any access whatsoever. However, there are also benefits to be had for
our power users (for instance, in terms of quick keyboard navigation), and a more easily navigable UI, in general.
This is an ongoing documentation of the outstanding accessibility issues and improvements, and suggestions and outlines of solutions where appropriate. The document is also a good tracking source for design decisions, and the reasoning and roadmap that lead to the current state-of-affairs. As accessibility progresses in Chrome and WebKit, this document will be subject to frequent changes and updates. Volunteers with an interest in improving any of the listed issues are always much needed. Please contact Jonas Klink (klink@chromium.org) for further information.
Definitions of terms
Design and Implementation Roadmap
|
| ARIA Role | Expected MSAA Role | Chrome - Reported Role |
|---|---|---|
| alert | alert | client X |
| alertdialog | dialog | client X |
| application | application | application |
| article | document | document |
| banner | None | client X |
| button | push button | push button |
| checkbox | check box | check box |
| columnheader | column header | column header |
| combobox | combo box | client X |
| complementary | None | client X |
| contentinfo | None | client X |
| definition | None | client X |
| dialog | dialog | client X |
| directory | list | client X |
| document | client | document |
| grid | table | table |
| gridcell | cell | cell |
| group | grouping | grouping |
| heading | heading | client X |
| img | graphic | graphic |
| label | text | client X |
| link | link | link |
| list | list | client X |
| listbox | list | list |
| listitem | list item | client X |
| log | log? | client X |
| main | None | client X |
| marquee | animation? marquee? | client X |
| math | equation | client X |
| menu | popup menu | popup menu |
| menubar | menu bar | client X |
| menuitem | menu item | menu item |
| menuitemcheckbox | menu item | menu item |
| menuitemradio | menu item | menu item |
| navigation | None | client X |
| note | None | client X |
| option | list item | list item/menu item |
| presentation | no object exposed | client X |
| progressbar | progress bar | progress bar |
| radio | radio button | radio button |
| radiogroup | grouping | grouping |
| row | row | row |
| region | grouping | grouping |
| rowheader | row header | row header |
| search | None | client X |
| separator | seperator | separator |
| slider | slider | slider |
| spinbutton | spin box | client X |
| status | status bar | status bar |
| tab | page tab | client X |
| tablist | page tab list | client X |
| tabpanel | property page | client X |
| textbox | editable text | editable text |
| timer | timer | client X |
| toolbar | tool bar | tool bar |
| tooltip | tool tip | tooltip |
| tree | outline | client X |
| treegrid | outline | client X |
| treeitem | outline item | client X |
NOTE: WebKit treats ARIA role values "option" and "menuitem" in a somewhat special way. Both roles may map to different OS roles, depending on the parent element. For "option", if the parent is a menu, the exposed OS role is menuitem, and if it's instead a listbox, the role exposed is that of listitem. For any other parent role, "option" has no effect (exposed role is client). In a similar manner, ARIA role "menuitem" only gets exposed as OS role menuitem, if the parent node has roles grouping or menu.
aria-labelledby and aria-describedby
Current Issues
This list is roughly prioritized with the most important issues listed toward the top. However, some tasks are uncoupled and can be worked on independently.
Unclaimed
- New Tab Page - Design a sensible abstraction for visually impaired users.
Ongoing
- UI Keyboard Navigation (klink)
- Users with for instance low mobility or low vision do not use the
mouse as an input device. Therefore, all functionality provided by
Chrome should be easily accessible and navigable using the keyboard
alone. This can be accomplished using tab stops and standard keyboard
shortcuts, where applicable. Also, the functionality exposed through
menus as well as a keyboard shortcut should have its shortcut displayed
in the menu.
- Status: The current state of the keyboard bindings and support for the Microsoft Active Accessibility
COM-library (used by Assistive Technology). The Chrome toolbar is currently in good shape (green, no * or bold), whereas some of the simpler dialogs (orange, marked with *, not bold) are in need of smaller fixes, and the bottom dialogs (red and bold) are up for grabs.
- Chrome Toolbar
- Access toolbar by keyboard shortcut SHIFT + ALT + T
- Keyboard navigation in place with left/right arrows
- Activate buttons with Space/Enter.
- Access menus with down arrow/Enter/Space, and navigate them with up/down arrows (activate menu item with Enter).
- Access context menus (aka right-click menus) by hitting VK_APPS or SHIFT + F10 (only works on buttons that have context menus).
- Tooltip (same as triggered upon mouse hover) will be displayed as keyboard focus moves around.
- MSAA information exposed correctly for all toolbar and submenu elements.
- Bookmark Bubble * - issue 9601
- Issue - Name edit box reported as role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue - The labels connected to the form fields are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - The string value contained in the Name field is reported as the name, not the value. Expected behavior: get_accValue will return the string currently contained in the field.
- Issue - Hitting Enter on 'Remove' link will not remove bookmark (Space works as expected though).
- Issue - No visual feedback when keyboard focus is on the 'Remove' link.
- Edit Bookmark Dialog * - issue 9604
- Issue - Name and URL edit boxes reported as role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue -The labels connected to the form fields are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - The string value contained in each field is reported as the name, not the value. Expected behavior: get_accValue should return the string currently contained in the field.
- Find In Page * - issue 9606
- Issue - Edit box reported as MSAA role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue - The form field has no label programmatically connected to it. Expected behavior: get_accName for the form field will return the label string.
- Issue - The string value contained in the field is reported as the name, not the value. Expected behavior: get_accValue will return the string currently contained in the field.
- Report Bug or Broken Web Site dialog * - issue 9614
- Issue - Page URL edit box reported as role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue - Description textarea reported as role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue - The labels connected to the form fields are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - The string value contained in the 'Bug type' combobox is reported as the name, not the value. Expected behavior: get_accValue should return the value currently selected in the combobox.
- Issue - The close button (X) in the top-right corner does not expose any MSAA name. Expected behavior: get_accName for the button returns 'Close'.
- Issue - MSAA focus cannot get to the 'Send screen shot of current page' checkbox.
- Clear Browsing Data dialog * - issue 9616
- Issue - No labels for form fields.The labels connected to the form fields are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - MSAA focus cannot get to the checkboxes.
- Import bookmarks and settings dialog * - issue 9617
- Issue - The labels connected to the form fields are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - MSAA focus cannot get to the checkboxes.
- Bookmarks Manager * - issue 9619
- Issue - Search edit box reported as role client, which is the default role, when none is provided by the programmer. Expected behavior: get_accRole should return ROLE_SYSTEM_TEXT.
- Issue - No label for edit box, which means that there is none programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - Organize and Tools menus are not keyboard accessible.
- Issue - No way to Import/Export bookmarks from the keyboard alone (the menus are not keyboard accessible, but the options in the Organize menu appear in the context menu for each option. However, Import/Export does not).
- Options * - issue 9621
- Issue - No labels for checkboxes and radiobuttons, which means that there is none programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string.
- Issue - MSAA focus cannot get to the checkboxes or radiobuttons.
- Issue - CTRL + (SHIFT) + TAB will not switch tabs.
- Issue - Blue labels to the left does not get picked up when tabbing around, which means that they are not programmatically connected to the corresponding field. Expected behavior: get_accName for each form field will return the label string (as appearing in each blue label).
- Omnibox * - issue 9605
- Issue - No visible focus tracking on suggestion dropdown list.
- History
- Bookmark bar
- Info bars
- JavaScript Console
- Task Manager
- Chrome Toolbar
- Status: The current state of the keyboard bindings and support for the Microsoft Active Accessibility
COM-library (used by Assistive Technology). The Chrome toolbar is currently in good shape (green, no * or bold), whereas some of the simpler dialogs (orange, marked with *, not bold) are in need of smaller fixes, and the bottom dialogs (red and bold) are up for grabs.
- UI Support for Access Technology (klink)
- Some of our users rely on the use of some type of Access Technology
(AT). This includes screen readers, screen magnifiers and other tools,
that work with information correctly exposed by the application to
convey information to the user. In the case of the Chrome UI, one or
several custom implementations of the Microsoft Active Accessibility
COM-library might be appropriate.
- Status: MSAA support implemented for
- Toolbar + all buttons contained within (see above)
- Location edit box
- Web content - still needs MSAA events.
- Toolbar + all buttons contained within (see above)
- Status: MSAA support implemented for
- WAI-ARIA Support (klink)
- Handle WAI-ARIA widgets and live regions. For Windows, widgets should
be reported to the assistive technology as their MSAA equivalents. For
example, a span element with the role of slider should be reported as a
ROLE_SLIDER in MSAA. Live regions are trickier as they are a newer
concept and are not used by existing desktop applications. In Firefox,
Fire Vox is currently the only assistive technology that supports live
regions and that is done straight from the DOM, not through an
accessibility interface. We should explore sending the content from
live region events through MSAA roles which might be a fairly close
match (status bar is a possible candidate).
- Status: Supporting whatever ARIA is currently implemented in WebKit, and exposed through their MSAA. Documentation of this support is under way.
- High Contrast (senorblanco) - The High Contrast mode in Windows (Start Menu > Control Panel > Accessibility Options, Display tab) is used by for instance low vision users. Currently, applying this mode to Chrome only changes the font size of the Omnibox and other parts of the UI, leaving the rest of the UI and Renderer content unaffected.
- Status: Issue tracked in Issue 92, and owned by Stephen White.
Testing Tools - Windows
This section covers some of the (free) testing tools that are commonly used in developing for MSAA on the client side. Screenshot examples are given using the Internet Explorer Google Toolbar, but the principles remain the same when testing for Chrome UI features.
Installation
- To download: Navigate to the Active Accessibility 2.0 SDK Tools page, and download the inspect32.exe (Inspect) and accevent32.exe (Event Watcher) tools.
- The tools:
- The Inspect tool is suitable for navigating the UI, tracking focus and investigating what information gets exposed to the AT.
- The Event Watcher tool is primarily suitable for verifying that the correct events are being generated for the benefit of the AT.
Inspect
- As said, this tool is especially useful to verify keyboard
navigation alongside with focus tracking (in the eyes of AT), and
investigate the information exposed. To do so, use the following steps:
- In the Options menu, make sure that only 'Watch Focus' is checked and that all other 'Watch x' options are unchecked. It is also useful to check the 'Show Highlight Rectangle', as this will make focus tracking easier.
- Set focus (using keyboard, preferably, or mouse) to your intended starting point, and use the keyboard alone to navigate the UI.
- Verify that the yellow highlight rectangle (indicating what currently has focus in the eyes of the AT) moves along with navigation as expected.
- Looking at the Inspect tool, verify the information exposed to the AT (see screenshot below).
- If any part of the information exposed is faulty or missing, you may have to supply your own MSAA implementation.
Please verify the following:
- Name - This is extremely important, as this string is what for instance gets read out by the screen reader for this feature.
- Value - Not all controls (e.g. push buttons) have a value. If it does (e.g. edit box), the current value of the control should appear here.
- Role - The role conveys to the AT user what the expected behavior of the control is, therefore very important.
- State - Ensure that the current state of the control is reflected here (e.g. checked/unchecked, hottracked etc).
- Kbshortcut - This should hold a string describing the keyboard shortcut associated with the control.
Event Watcher
- The Event Watcher tool is somewhat more stable than Inspect, if
your main goal is to track events, and information connected to those.
To do so, follow these steps:
- In the Options menu, choose Settings..., and under 'Events' section clear all events except: OBJ_FOCUS, OBJ_SELECTION, OBJ_STATECHANGE, OBJ_VALUECHANGE (include any other if you have specific interest in that particular event), and Apply.
- Under 'Object Properties' section, you can select those properties you want exposed, connected to the event (the most important ones are Name, Value (if applicable), Role, State and Keyboard Shortcut).
- If you want events only from a specific hWND (and possibly its descendants), you can filter this at the bottom of the Settings screen.
- If any part of the information exposed is faulty or missing, you may have to supply your own MSAA implementation.
The information made available through the above settings is pretty much equal to that of Inspect (see above section), and either tool can be pretty much interchangeable used, based on preference.


