Accessibility/Mac2020

< Accessibility
Revision as of 14:33, 16 November 2020 by MarcoZ (talk | contribs) (Added Firefox 84 query and adjusted text to reflect what actually got into the release. Updated Firefox 85 description and query. Added Google Drive, Google Calendar, and Slack to the list of sites to test.)

This page provides information about our efforts in 2020 to improve Firefox accessibility on OSX. Contributors are encouraged to look at our contributor guide, and our architectural overview.

MACCESSIBILITY 2020

Rationale

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.

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.

VoiceOver Live Regions

Live regions allow users to know an important part of the page changed. We support Live regions on all major platforms except OSX.

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 are 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.

User Scenarios

Here are the initial, in-scope, and agreed-upon web sites / applications that the engineering and test teams are to make sure have supported and useful VoiceOver experiences (navigation, primary interactions like search and compose, etc.):

  1. New York Times
  2. Gmail
  3. Google Calendar
  4. Google Drive
  5. Google Docs
  6. Facebook
  7. Twitter
  8. YouTube
  9. Amazon
  10. GitHub
  11. Slack
  12. Wikipedia homepage
  13. Wikipedia: Starlink
  14. Google search
  15. about:newtab
  16. about:logins
  17. about:addons
  18. History, Bookmarks manager
  19. addons.mozilla.org
  20. Mozilla.org

See also: More detail and test instructions for these scenarios (Mozilla-internal Google Doc link)

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.

Full Query
ID Summary Priority Status
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 VERIFIED

9 Total; 0 Open (0%); 4 Resolved (44.44%); 5 Verified (55.56%);


Firefox 76

  • Basic VoiceOver Support
  • Automated Testing
  • Code Modernization and Refactors

In Firefox 76 we are focusing on basic VoiceOver support and beginning to apply our knowledge of what is needed towards refactors, cleanup, and hopefully a start on automated testing.

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1


Firefox 77

  • Basic VoiceOver Support
  • Code Modernization and Refactors

In Firefox 77 we will continue to focus on basic VoiceOver support, refactor and modernize our codebase, and expand our Mac test coverage.

Full Query
ID Summary Priority Status
1618705 VoiceOver says HTML table has 0 columns P1 VERIFIED
1619752 VoiceOver doesn't recognise link-groups in firefox P1 VERIFIED
1624936 VoiceOver does not speak 'required' attribute on radio buttons P1 VERIFIED
1624954 Support other aria-haspopup values besides "true" P1 VERIFIED
1624964 VoiceOver does not speak "visited" link status P1 VERIFIED
1625266 VoiceOver does not report value, value changes for stepper P1 VERIFIED
1625489 Speak list bullets/numbers in VoiceOver P1 VERIFIED
1625864 Non-linked html:a elements should not be exposed as links to VoiceOver. P1 VERIFIED
1625870 Support figure and figcaption in OS X. P1 VERIFIED
1627311 Remove unnecessary link actions P1 RESOLVED
1627763 Context Menu should launch from center of focused item, not upper left P1 VERIFIED
1627765 Stop caching children in mac P1 RESOLVED
1627832 Prune all invisible children of top-level window P1 RESOLVED
1627899 Intermittent accessible/tests/browser/mac/browser_app.js | Test timed out - P1 RESOLVED
1631406 VoiceOver calls HR elements splitters, not separators like Safari does. P1 RESOLVED

15 Total; 0 Open (0%); 5 Resolved (33.33%); 10 Verified (66.67%);


Firefox 78

  • Basic VoiceOver Support
  • Code Modernization and Refactors

In Firefox 78 we will continue to focus on basic VoiceOver support, refactor and modernize our codebase, and expand our Mac test coverage.

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1


Firefox 79

  • Code Modernization and Refactors
  • VoiceOver Text Support

In Firefox 79 we plan to finish the refactor we started in 78 and start working on VoiceOver text support.

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1


Firefox 80

  • VoiceOver Text Support
  • VoiceOver Rotor Support

In Firefox 80 we plan to have initial VoiceOver text and rotor support.

Full Query
ID Summary Priority Status
1226473 Firefox does not read selected text P1 RESOLVED
1628236 VoiceOver speaks wrong column number for cells following one that has a col span > 1 P1 VERIFIED
1628241 When traversing to a table with VoiceOver, VoiceOver immediately lands on the first cell. P3 RESOLVED
1643765 Move gathering of ignored children to MOXAccessibleBase P1 RESOLVED
1649575 Introduce basic TextMarker and TextMarkerRange support P1 RESOLVED
1650740 Crash in [@ mozilla::a11y::GeckoTextMarkerRange::TextInternal] P1 RESOLVED
1653039 Support text word boundaries API in mac P1 RESOLVED
1653421 Add data to text value change events in mac P1 RESOLVED
1654601 Crash in [@ mozilla::a11y::GeckoTextMarker::NormalizePrevious] P1 RESOLVED

9 Total; 0 Open (0%); 8 Resolved (88.89%); 1 Verified (11.11%);


Firefox 81

  • VoiceOver Text Support
  • VoiceOver Rotor Support

In Firefox 81 we will continue to implement initial VoiceOver text and rotor support.

Full Query
ID Summary Priority Status
1652809 [VoiceOver] add rotor support for headings P1 RESOLVED
1654603 contentEditables with embedded divs throw off textmarkers. P1 RESOLVED
1654679 Add selected text marker range to text selection changed events P1 RESOLVED
1655779 Crash in [@ mozilla::a11y::GeckoTextMarkerRange::LinkCount] P1 RESOLVED
1657193 Crash in [@ mozilla::a11y::GeckoTextMarkerRange::TextInternal] P1 RESOLVED
1657653 Calling certain text operations in mac hangs firefox P1 VERIFIED
1657665 Cannot navigate past initial link with VO P1 RESOLVED
1657765 Implement mac text API in content process P1 RESOLVED
1658427 Add mac platform logging P2 RESOLVED
1658832 Add articles to VoiceOver Rotor P1 RESOLVED
1659215 Expose previously slow text attributes P1 RESOLVED
1660109 Support AXBoundsForTextMarkerRange P1 RESOLVED

12 Total; 0 Open (0%); 11 Resolved (91.67%); 1 Verified (8.33%);


Firefox 82

  • VoiceOver Text Support
  • VoiceOver Rotor Support

In Firefox 82 we will continue to implement initial VoiceOver text and rotor support.

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1


Firefox 83

  • VoiceOver Text Support
  • VoiceOver Live Regions

In Firefox 83 we will work on Live Regions support, continue progress on text APIs and polish our rotor API.

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1


Firefox 84

  • VoiceOver Quality & Performance
  • VoiceOver support for tree views

In this release we focused on quality, performance, and introduced initial support for tree views.

Full Query
ID Summary Priority Status
1644810 Tree views don't talk well with VoiceOver P1 VERIFIED
1649790 [Meta] VoiceOver has some trouble with Firefox exposure of a Gmail conversation P3 RESOLVED
1671442 Pressing VO Next in last cell in a row in gmail inbox does not advance P1 RESOLVED
1671444 Gmail category tabs are not navigable P1 RESOLVED
1671446 Navigating between open gmail messages is slow P1 RESOLVED
1672243 VoiceOver lags when navigating footer links in facebook login page P1 VERIFIED
1672694 Gmail: When navigating the inbox with the arrow keys, VoiceOver cannot track the focus P1 VERIFIED
1672776 Crash in [@ mozilla::a11y::GeckoTextMarker::CreateAXTextMarker] P1 RESOLVED
1672803 Add debug attributes for MOX accessibles and better logging descriptions P1 RESOLVED
1673857 Change the exposure of SVG to be an image for VoiceOver P1 RESOLVED
1674196 Layout tables should not return column containers as children P1 RESOLVED
1674215 VoiceOver read all misbehaves on Youtube P1 RESOLVED
1674273 Crash in [@ HyperTextIterator::NormalizeForward] P1 RESOLVED
1675292 Google Docs: Navigating inside a document does not work with VoiceOver. P1 VERIFIED
1676344 Tables with an intermediary block frame element confuse VoiceOver. P1 VERIFIED
1676509 VoiceOver read-all reads links in list twice P1 VERIFIED
1676517 Improve Mac logging to include attribute setting and perform action P2 RESOLVED
1676878 Google Drive: Folder tree in the side bar has the first letter cut off, and expanded/collapsed state not announced by VoiceOver. P1 VERIFIED

18 Total; 0 Open (0%); 11 Resolved (61.11%); 7 Verified (38.89%);


Firefox 85

  • VoiceOver Quality & Performance
  • VoiceOver Live Regions

In this release we will be focusing on quality, performance, and introduce live regions. This is targeted towards being the consumer preview release for VoiceOver support.

Full Query
ID Summary Priority Status
914054 [Meta] Implement proper accessibility for door hangers P1 RESOLVED
1198336 Firefox/Voiceover: aria-live regions not being announced P1 RESOLVED
1413307 Screen reader clicks are not registered on custom inputs P1 VERIFIED
1625178 Support aria-roledescription in Mac P1 VERIFIED
1649711 Preferences: VoiceOver speaks items in the Preferences category list as dimmed. P1 RESOLVED
1649714 Preferences: Firefox does not expose xul:menulist to VoiceOver P1 VERIFIED
1649720 Preferences: XUL:tree and related are improperly exposed to VoiceOver, appear empty or broken. P1 VERIFIED
1664894 Add VO usage to a11y telemetry P1 RESOLVED
1672700 Rich text editing: Braille is not tracking text and the cursor when composing documents in contentEditables, with and without ARIA roles. P1 RESOLVED
1675301 Firefox very slow on Reddit with VoiceOver and Braille enabled P1 RESOLVED
1676662 In contentEditables, list items are not exposed, and the whole text cannot be navigated by character with VoiceOver. P1 VERIFIED
1678015 Make alerts fully accessible to VoiceOver P1 RESOLVED
1679075 Crash in [@ mozilla::a11y::GeckoTextMarker::ContainerAsHyperTextWrap] P1 RESOLVED
1679957 Regression: VoiceOver no longer reads text in address bar P1 RESOLVED

14 Total; 0 Open (0%); 9 Resolved (64.29%); 5 Verified (35.71%);


Consumer Preview Tasks

By Firefox 85 (complete December 15th, Release on January 26, 2021) we will have completed:

  1. Scenarios (scope) definition ✅
  2. Engineering and Test Engineering complete Scenarios test suite
  3. Blocking bugs filed against full Scenarios test suite
  4. Scenarios provided and PI request submitted
  5. PI bugs filed and Engineering triage (blockers vs. non-blockers)
  6. Blocking bugs fixed
  7. Preview Announcement (Release Notes blurb) drafted and submitted
  8. Hacks post drafted and published
  9. Internal Platform-wide Demo and follow-up email for feedback and visibility


Backlog

Bugzilla query error

Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 502 [1] => Bad Gateway ) ) 1