This page provides information about our efforts in 2020 to improve Firefox accessibility on OSX.
- 1 Rationale
- 2 Plan
- 3 Roadmap
- 4 Backlog
OSX is a popular platform among web developers and designers. It is important we provide a means for testing web content accessibility in OSX. Historically, our OSX support has been plagued with performance issues, but we can still provide a good benchmark for developers to test with. After we reach API completeness, we will do a second pass to optimize the experience for VoiceOver users and assure the performance is optimal and comparable to other browsers.
Throught 2020 we plan to improve Firefox VoiceOver support to provide an accessible experience to users, and a dependable testing platform for web developers who see to make their web applications accessible.
With this work we hope to tackle several areas:
This includes scripts and programs that will give us insight into our current support and browser compliance in general. Examples of such tools include a tree dumper, event logger, VoiceOver automation tool, and VoiceOver benchmarking.
We should strive to have as much automated test coverage as possible. With the exception of Android we don't currently have any real platform accessibility testing happening in-tree in CI. There is a potential to introduce this in Mac. This will allow us to maintain a our Mac accessibility support as our attention goes elsewhere.
Code Modernization and Refactors
The current Mac code was written for older Mac SDKs and uses deprecated calls. In addition, the Mac platform code was introduced before e10s shipped. There are many places where we should be streamlining our codebase so we can continue to extend our Mac support.
Basic VoiceOver Support
Basic support means anything that is needed for VoiceOver to present web content correctly. This includes role, state, events and actions mappings. Most things in https://a11ysupport.io/ that are supported by Safari fall into this category.
VoiceOver Text Support
This includes text editing, so a user has feedback from insertions, deletions, caret and selection changes. and granular text navigation. In addition this would include read-only text navigation by granularity such as character, word and line.
VoiceOver Live Regions
Rotor VoiceOver Support
VoiceOver has a feature called a "rotor" that opens a list of all similar types of items on a page, like headings, links or form controls. We currently don't support it. We need to find an efficient way to do it so that it will be responsive and quick. This has proven tricky in the past since it requires a full tree traversal on potentially very large documents.
Historically, Firefox's VoiceOver performance made it unusable to casual users. A simple cursor navigation in a page, which should never be more than a small fraction of a second, could sometimes take up to 30 seconds. This year we have already made progress on this front and our in reach of Safari and Chrome response times. With a benchmarking tool we can find additional hotspots and make the VoiceOver experience even smoother. This may involve some selective caching of certain properties and other tricks.
IPC Redirection (exploration)
If time permits it would be cool to explore the possibility of having accessibility services talk directly to content processes and not use the synchronous IPDL calls that link content to the top level process. This can improve performance and help do away with janky synchronous calls.
Since the task is large and hard to scope we will be breaking down the work for each Firefox release with the hope to tackle a common user story or theme on each iteration. While we work on one release we will formalize plans for the next one.
- Basic VoiceOver Support
- VoiceOver Performance
- External Tooling
In Firefox 75 we focused on building tools for querying Mac accessibility APIs and VoiceOver. This helped us better understand the space and gives us what we need to continue building our Mac support. We also got our feet wet in the Mac codebase and resolved some pressing issues we noticed immediately like focus behavior and labeling. Notably, we uncovered a major performance bug that quickly made us quick.
|1380027||OSX VoiceOver cursor does not respond to tab key press with e10s||P3||VERIFIED|
|1611428||aria-label does not work in input field with VoiceOver||P3||RESOLVED|
|1614079||Hit testing does not cross process boundaries in e10s||P3||RESOLVED|
|1614834||Items don't scroll into view with VoiceOver cursor||P3||VERIFIED|
|1614835||Items don't focus when VoiceOver's cursor lands on them||P3||VERIFIED|
|1617301||VoiceOver does not follow keyboard focus||P2||VERIFIED|
|1618364||Allow AppKit to cache accessible tree||P2||RESOLVED|
|1619438||Null-check mContent before trying to get dom node id||P1||RESOLVED|
|1619458||Don't expose browser tooltips to VoiceOver||P2||RESOLVED|
9 Total; 0 Open (0%); 5 Resolved (55.56%); 4 Verified (44.44%);
- Basic VoiceOver Support
- Automated Testing
- Code Modernization and Refactors
In Firefox 76 we are focusing on basic VoiceOver support and begining to apply our knowledge of what is needed towards refactors, cleanup, and hopefully a start on automated testing.
29 Total; 3 Open (10.34%); 23 Resolved (79.31%); 3 Verified (10.34%);
13 Total; 12 Open (92.31%); 1 Resolved (7.69%); 0 Verified (0%);
27 Total; 27 Open (100%); 0 Resolved (0%); 0 Verified (0%);