Accessibility/Mac2020

From MozillaWiki
Jump to: navigation, search
MACCESSIBILITY 2020

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.

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.

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.

Full Query
ID Summary Priority Status
1124681 [Mac] The checked state of a checkbox is not correctly exposed P1 VERIFIED
1371712 AXSubrole missing for ARIA landmark roles used on non-landmark HTML elements P3 RESOLVED
1616679 VoiceOver doesn't announce clickable item P1 VERIFIED
1617308 Fieldsets not announced as groupings in VoiceOver P1 VERIFIED
1617310 has popup menu items should be spoken as buttons in voiceover P1 VERIFIED
1617311 Details element and state are not spoken in VoiceOver P1 VERIFIED
1617312 Text leaves should not have description attributes P1 VERIFIED
1617314 aria-current not spoken in VoiceOver P1 VERIFIED
1618700 Selected aria tab is not indicated in VoiceOver or announced when selected. P1 VERIFIED
1618706 VoiceOver does not speak cells in a table with role of grid P1 VERIFIED
1618708 VoiceOver does not speak value changes in slider P1 VERIFIED
1618712 aria heading level is not announced in VoiceOver P1 VERIFIED
1618716 aria-invalid is not announced in VoiceOver P1 VERIFIED
1618718 support aria-pressed P1 VERIFIED
1618719 support role=radiogroup in VoiceOver P1 VERIFIED
1620318 Invisible context menu shows up as a top level group even when it is not open P1 VERIFIED
1621724 aria-invalid does not report correct value when e10s are disabled on mac P1 RESOLVED
1622731 Crash in [@ mozilla::dom::XULTreeElement::GetTreeBodyFrame] P1 VERIFIED
1623399 Doorhangers remain visible in VO after they are gone. P1 VERIFIED
1623402 "Show Context Menu" action is not supported when using VoiceOver P1 RESOLVED
1624434 VoiceOver repeats text in table headers P1 VERIFIED
1624729 Introduce Mac platform mochitests P1 RESOLVED
1625293 Crash potential when root accessible is destroyed P1 RESOLVED
1625832 VoiceOver "Show context menu" clicks in the wrong place P1 VERIFIED
1626036 Cache as many states as possible P1 RESOLVED
1626638 Tabs do not report correct subrole in OSX P1 RESOLVED
1626639 Radio buttons do not pass checked state in OSX P2 RESOLVED

27 Total; 0 Open (0%); 8 Resolved (29.63%); 19 Verified (70.37%);


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.

Full Query
ID Summary Priority Status
1624909 Position of radio button and required attribute not reported P1 VERIFIED
1625184 Support dialog role in mac P1 VERIFIED
1625192 Support select element in VoiceOver P1 VERIFIED
1625196 Support select[multiple] element in VoiceOver P1 VERIFIED
1632252 AccessibleOrProxy Rework for Mac Platform Code 😬 P2 RESOLVED
1634373 Add tests for role/subrole combinations for HTML and WAI-ARIA P1 RESOLVED
1635184 AXSubrole SearchField is never exposed to VoiceOver. P1 RESOLVED
1635483 Avoid making IPC calls on subrole calculations whenever possible. P1 RESOLVED
1635517 Filter out certain nodes in native mac accessibility tree P1 RESOLVED
1635521 MathML Roles and attributes should be factored out P1 RESOLVED
1635527 role=status elements need a proper role and subrole P1 RESOLVED
1635538 Image maps get AXUnknown roles in mac P1 RESOLVED
1638147 Add mochitests for mac's mathml support -- RESOLVED
1639623 When toggling radio button VO reports wrong state P1 RESOLVED
1641002 Implement base class and protocol to abstract apple methods P1 RESOLVED
1641644 Refactor mozAccessible to use MOXAccessible API P1 RESOLVED
1641654 Refactor mozHTMLAccessible classes to use MOXAccessible API P1 RESOLVED
1641655 Refactor mozSelectableElements classes to use MOXAccessible API P1 RESOLVED
1641657 Refactor mozRootAccessible to use MOXAccessible API P1 RESOLVED
1641659 Refactor mozActionElements to use MOXAccessible API P1 RESOLVED
1641665 Refactor mozTableAccessible to use MOXAccessible API P1 RESOLVED
1641960 Add test coverage for mozTextAccessible P2 RESOLVED

22 Total; 0 Open (0%); 18 Resolved (81.82%); 4 Verified (18.18%);


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.

Full Query
ID Summary Priority Status
1630292 Line breaks should not be read aloud by VoiceOver P1 VERIFIED
1637076 Rework accessible/mac classes to abide by new protocol and base/sub class invariants P1 RESOLVED
1641932 Transfer Mac subrole mappings into RoleMap.h P1 RESOLVED
1641984 Add Parameterized Attributes to MOX protocol P2 RESOLVED
1642024 Remove method-based NSAccessibility attributes and actions P2 RESOLVED
1642030 Support parameterized attributes in our XPCOM mac interface P2 RESOLVED
1642033 Refactor mozTextAccessible to use MOXAccessible API P2 RESOLVED
1642448 Replace remaining NSAssert statements in accessible/mac/ with MOZ_ASSERT's P2 RESOLVED
1642707 Firefox no longer sends VoiceOver a notification that the page finished loading. P1 VERIFIED
1643168 AXFocusable should only be settable on focusable items. P1 RESOLVED
1647828 AXPress is available on all nodes P2 RESOLVED

11 Total; 0 Open (0%); 9 Resolved (81.82%); 2 Verified (18.18%);


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.

Full Query
ID Summary Priority Status
1620324 VoiceOver expects sub-group between HTML Content node and web content P1 RESOLVED
1625868 Items in definition lists are counted wrong. P1 RESOLVED
1655784 VoiceOver does not track the cursor in the address field, works in edit fields on the web. P1 RESOLVED
1655786 Braille does not yet track the cursor location P1 RESOLVED
1657418 Add links to VoiceOver Rotor P1 RESOLVED
1660290 AXPreviousTextMarkerForTextMarker does not work consistently P1 RESOLVED
1660303 List bullets don't work well with mac text api P2 RESOLVED
1660364 Support text marker indexes P2 RESOLVED
1660906 Add column limit to clang formatting for objective c files P2 RESOLVED
1661504 Add landmarks to rotor P1 RESOLVED
1661579 Moving to previous marker does not work across wrapped lines P1 RESOLVED
1661587 Assertion "Couldn’t get the native NSView parent" when running browser tests in mac with a11y enabled P2 RESOLVED
1661758 Add attributes for getting MOX accessibles from text markers and vice versa P1 RESOLVED
1662147 Add a form elements rotor P1 RESOLVED
1662150 Add a Tables rotor P1 RESOLVED
1662262 Consolidate rotor pivot rules, move to own file P1 RESOLVED
1663442 [macOS] Crash in [@ mozilla::a11y::AccessibleOrProxy::Parent] P1 RESOLVED
1664323 Initialize all out args in DocAccessiblePlatformExtChild ipc methods P1 RESOLVED
1664579 Add support for VO's button rotor key P1 RESOLVED
1665162 Add string range attributes to text leaf P1 RESOLVED
1665200 Add test for root group and rotor API P1 RESOLVED

21 Total; 0 Open (0%); 21 Resolved (100%); 0 Verified (0%);


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.

Full Query
ID Summary Priority Status
1198336 Firefox/Voiceover: aria-live regions not being announced P1 NEW
1650333 VoiceOver often focuses wrong info, and Braille display is empty on plain text P1 NEW
1655084 VoiceOver doesn't read aria-label on <nav> and aria-labelledby on a <div> with role="region" P1 NEW
1657505 Add AXFrameSearchKey to search class for VO support P1 RESOLVED
1661760 Add line marker range getters P1 ASSIGNED
1661765 Add AXSelectedTextMarkerRange setter P1 RESOLVED
1662887 role="timer" and aria-live="off" P1 UNCONFIRMED
1665761 Add images to VoiceOver Rotor P1 RESOLVED
1665960 Add AXStaticTextKey to search class for VO support P1 ASSIGNED
1666348 Add lists to VoiceOver Rotor P1 NEW
1666356 Add checkboxes to VoiceOver Rotor P1 NEW
1666357 Add radiogroups to VoiceOver Rotor P1 NEW
1666380 Add text fields to VoiceOver Rotor P1 NEW

13 Total; 10 Open (76.92%); 3 Resolved (23.08%); 0 Verified (0%);


Backlog

Full Query
ID Summary Priority Status
717820 [mac] localize "readable" strings in the Mac accessibilty code P3 NEW
746160 [Meta] Various new Mac a11y Mochitest failures P3 NEW
746177 Test timeout in events/test_focus_autocomplete.xul when testing the Yahoo! search field. P3 NEW
746183 Unexpected termination of complete test run in events/test_focus_contextmenu.xul P3 NEW
746519 Test timeout in events/test_focus_general.html when testing link tab shift. P3 NEW
746534 events/test_focus_selects.html unexpectedly terminates P3 NEW
746971 events/test_focus_tabbox.xul fails on Mac imminently P3 NEW
746974 Some hittest/ tests receive wrong deepest child on Mac P3 NEW
746977 tree/test_cssoverflow.html: shift tab failing, no focus event and a test timeout P3 NEW
751665 [Mac] TEST-UNEXPECTED-FAIL | chrome://mochitests/content/a11y/accessible/events/test_focus_menu.xul | Test timed out. P3 NEW
759236 a11y::TreeWalker timer is blocking the main thread P3 NEW
771113 Implement Accessible::Attribute(const nsIAtom* aName, nsAString& aValue) P3 NEW
890795 Intermittent TEST-UNEXPECTED-FAIL | events/test_focus_autocomplete.xhtml,test_focus_autocomplete.xul | uncaught exception - NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIAccessible. P3 REOPENED
914054 Implement proper accessibility for door hangers P3 NEW
1167937 test_doc_busy.html attempts to install an empty XPI file, leaving behind a popup notification that interferes with other tests P3 NEW
1275513 Fix and re-enable a few combobox keyboard tests on OSX P3 NEW
1413307 Screen reader clicks are not registered on custom inputs P3 UNCONFIRMED
1613749 [meta] Rotor does not show any items. P3 ASSIGNED
1616670 VoiceOver repeats bugzilla menubar twice P3 NEW
1624958 VoiceOver cursor is lost when container changes role P3 NEW
1625178 Support aria-roledescription in Mac P3 NEW
1625880 Support heading announcements inside summary elements. P3 NEW
1625915 Support aria-errormessage in OS X. P3 NEW
1625929 Support aria-modal in OS X. P3 NEW
1625953 Support aria-controls and aria-flowto in OS X. P3 NEW
1627812 Rework context menu code to work with headless widgets P2 NEW
1633570 Make AXValue settable for incrementable types P2 NEW
1639745 AXMathLineThickness should return 1 with a visible fraction P2 NEW
1641717 Remove unused tokens from accessible.properties P2 NEW
1644810 Tree views don't talk well with VoiceOver P2 NEW
1647831 Match WebKit on supported attributes for AXWebArea P3 NEW
1649711 Preferences: VoiceOver speaks items in the Preferences category list as dimmed. P3 NEW
1649714 Preferences: Firefox does not expose xul:menulist to VoiceOver P3 NEW
1649720 Preferences: XUL:tree and related are improperly exposed to VoiceOver, appear empty or broken. P3 NEW
1649790 [Meta] VoiceOver has some trouble with Firefox exposure of a Gmail conversation P3 NEW
1649791 Filter out layout tables from the Mac accessibility tree P3 NEW
1662155 Add the rotor items that are disabled by default P3 ASSIGNED
1664894 Add VO usage to a11y telemetry P2 NEW

38 Total; 38 Open (100%); 0 Resolved (0%); 0 Verified (0%);