Confirmed users
198
edits
(Added project image) |
(Reorganized project to be release based instead of 2 6 month stretches.) |
||
| Line 7: | Line 7: | ||
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. | 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. | ||
== | == Plan == | ||
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. | |||
=== Areas of Work === | |||
With this work we hope to tackle several areas: | |||
==== External Tooling ==== | |||
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. | |||
==== Automated Testing ==== | |||
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. | |||
==== 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. | |||
==== VoiceOver Performance ==== | |||
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. | |||
=== Roadmap === | |||
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. | |||
==== Firefox 75 ==== | |||
'''''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. | |||
<bugzilla> | <bugzilla> | ||
| Line 15: | Line 61: | ||
"product": ["Core"], | "product": ["Core"], | ||
"component": ["Disability Access APIs"], | "component": ["Disability Access APIs"], | ||
" | "op_sys": ["macOS"], | ||
"target_milestone": ["mozilla75"] | |||
} | } | ||
</bugzilla> | </bugzilla> | ||
== | ==== Firefox 76 ==== | ||
'''''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. | |||
<bugzilla | <bugzilla> | ||
{ | { | ||
"product": ["Core"], | "product": ["Core"], | ||
"component": ["Disability Access APIs"], | "component": ["Disability Access APIs"], | ||
" | "op_sys": ["macOS"], | ||
"priority": ["P1"] | |||
} | } | ||
</bugzilla> | </bugzilla> | ||
== | ==== Firefox 77 ==== | ||
TBD | |||
=== Backlog === | |||
<bugzilla> | |||
{ | |||
"product": ["Core"], | |||
"component": ["Disability Access APIs"], | |||
"op_sys": ["macOS"], | |||
"bug_status": ["NEW", "ASSIGNED", "REOPENED", "UNCONFIRMED"], | |||
"priority": ["P3"], | |||
"whiteboard": "[mac2020_" | |||
} | |||
</bugzilla> | |||