Accessibility/CacheTheWorld

From MozillaWiki
Jump to: navigation, search

What?

Firefox's current architecture for multi-process accessibility suffers from severe performance issues and is costly and difficult to maintain due to the massively different and specialised approaches necessary on different operating systems. In addition, it is currently impossible to support builtin Windows accessibility tools such as Narrator and Windows Speech Recognition. This project aims to re-architect our multi-process accessibility support to cache the entire accessibility trees for all content processes within the parent process.

Why?

This will allow us to address several problems that are difficult or impossible to fix with the current architecture:

  1. Performance, especially on Windows. While performance is acceptable for daily usage in most cases, there are many use cases which are far from delightful and some which are still completely unusable. Performance with the JAWS screen reader, which is used heavily in enterprise, is sluggish at best. A great deal of work has been done over the past few years to improve this, but we're approaching a point where we will not be able to improve this any further with the current architecture. Because software other than assistive technology uses accessibility APIs (e.g. Windows touch, East Asian input methods, enterprise SSO tools), this can impact even users without disabilities. The proposed new architecture will allow us to significantly improve performance across all operating systems. See bug 1737192 for a list of performance bugs which we expect will be fixed (or at least improved) by Cache the World.
  2. Stability. Because the current architecture makes heavy use of synchronous IPC, there is a high risk of deadlocks between accessibility and other Firefox components. While all known cases have been addressed as they have been discovered, the underlying cause remains and future instances of this problem are very likely. In addition, our use of obscure COM features on Windows has resulted in stability problems which are extremely difficult to diagnose and fix. One of these remains a problem today, despite months of investigation, and forces some NVDA screen reader users to forcibly kill Firefox (or worse, forcibly power off their computers) every few hours. The proposed new architecture will not suffer from these inherent stability risks and known problems. See bug 1737193 for a list of stability/reliability bugs which we expect will be fixed (or at least improved) by Cache the World.
  3. Complexity and cost. Our existing architecture is necessarily very different on each operating system, making it extremely complex and difficult to maintain. For example, the IPC layer on Windows (~8000 lines of code) has an entirely different architecture to other platforms. This also means that maintenance is very costly, especially when implementing support for new operating systems (e.g. Android, Mac) or major Gecko architectural initiatives (e.g. Fission). Furthermore, our use of esoteric operating system specific features, especially on Windows (where we depend on a whole separate ~11000 line module), makes it very difficult for this work to be distributed across the team because of the highly specific expertise required. In the proposed new architecture, most of the "heavy lifting" will be done in cross-platform code, decreasing complexity and maintenance cost.
  4. Support for other builtin accessibility tools. It is impossible to support Windows Narrator and Windows Speech Recognition with our current architecture. The proposed new architecture will allow for this. As these builtin tools rise in popularity, we do not want Firefox to be left behind.

Meeting Notes

Jamie, Morgan, and Eitan meet weekly to discuss this project. You can find the meeting notes in this google doc.

Roadmap

Given the large scope of the project, we are breaking the project down into quarterly milestones. Each milestone will aim to support a set of user scenarios. This roadmap is in the early stages and subject to significant change. It will be updated as milestones become clearer, with future milestones being less well defined than earlier ones.

Milestone 0: December 2021

Initial proof of concept.

All testing will be performed with the NVDA screen reader, for two reasons:

  1. Cache the World is all or nothing on Windows. That makes it easy to determine where we're at regarding real world usage.
  2. The performance benefits are most necessary and noticeable on Windows.

In milestone 0, the following capabilities will be provided:

  1. Reading and navigating a page with text, links and headings.
  2. Plain text editing: reading the line of text when focused; backspacing; moving the caret by line, word and character.
  3. Access to formatting information: font, bold/italic, etc.
  4. Access to screen coordinates on simple pages.
  5. Loading very large pages will be at least 10x faster with the cache than without.

Test Scenarios

  1. Do a Google search, navigate the results using heading navigation and follow a result link.
  2. Fill out the form for a Google Advanced Search.
  3. Go to https://www.reaper.fm. Check the formatting of the “This is REAPER.” text (which isn’t a heading even though it should be) and confirm that the font size is reported as bigger than the paragraph of text below it.
  4. Build Gecko in the background. Do a Google search. Verify that the browser does not become unresponsive.
  5. Load https://searchfox.org/mozilla-central/source/layout/base/nsCSSFrameConstructor.cpp. Page should take < 10 sec to be usable.
  6. Open Gmail, find a message in the inbox, open it, read it, return to the inbox.
  7. Compose a message in Gmail containing text, a link, a bulleted list and a block quote. Read back through the message.
  8. Open Slack, use the quick switcher to switch to a channel, read some messages, write a message.

Bugzilla

Note that the roadmap wasn't created until late in milestone 0, so many bugs are missing below.

Full Query
ID Summary Assigned to Status
1735955 Cached bounds all 0s for many (most?) elements on Google search James Teh [:Jamie] RESOLVED
1739050 If the focused Accessible is moved, the RemoteAccessible is recreated but focus isn't fired on it (AKA broken Google Search box on Windows + CTW) James Teh [:Jamie] RESOLVED
1741792 Cache the caret James Teh [:Jamie] RESOLVED
1742902 Fix window emulation when the cache is enabled James Teh [:Jamie] RESOLVED
1742915 Cache tag object attribute James Teh [:Jamie] RESOLVED
1742917 Implement StartOffset for RemoteAccessible and LinkIndexAtOffset for HyperTextAccessibleBase James Teh [:Jamie] RESOLVED
1746827 Crash in [@ PLDHashTable::Search | mozilla::a11y::RemoteAccessibleBase<T>::MinValue] James Teh [:Jamie] RESOLVED

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


Milestone 1: March 2022

Android.

The primary focus of this milestone is getting the cache working for Android. Mozilla aims to implement Fission for Android in 2022h1. Modifying the existing multi-process architecture to support Fission on Android will require significant engineering effort. Rather than investing in a solution which we will be throwing away once the cache is implemented, we will instead switch Android to use the cache and extend the cache to include functionality required by Android.

In milestone 1, the following capabilities will be provided:

  1. The cache will support GroupPosition.
  2. TextLeafRange will support word end and line end boundaries, which are needed for Android text navigation.
  3. Pivot will support navigating text using TextLeafRange, which is needed for Android text navigation.
  4. Cached screen bounds will be updated appropriately when scrolling.
  5. The cache will support tables. Only a very small subset of table functionality is needed for Android, but full table functionality will be implemented regardless.
  6. Android will use the cache for all functionality except hit testing.
  7. As an interim solution, Android will use the existing async IPDL mechanism for hit testing, updated to target the call at the correct document to handle OOP iframes. (Synchronous hit testing in the core cache will take longer to implement and will be done in a future milestone.)

Test Scenarios

  1. Do a Google search, navigate the results using heading navigation and follow a result link.
  2. Sign up for facebook, enter information including alternative gender. Don’t submit password (that is when it gets real).
  3. Go to en.wikipedia.org and navigate by char/word/line.
  4. Navigate en.wikipedia.org with explore by touch.
  5. With Talkback, load https://www.nvaccess.org/. Navigate to the embedded video in four different ways: item navigation, explore by touch, controls navigation and Talkback search. Activate the Play button to play the video.
  6. On Windows with NVDA, load https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection.
    1. Press control+home to ensure you're at the top of the document, then t twice to move to the Browser Compatibility table.
    2. Press control+alt+rightArrow twice to move to the Mobile column. Ensure NVDA says "column 8 through 13".
    3. Press control+alt+downArrow once. Ensure NVDA says "WebView Android".
    4. Press control+alt+downArrow again. Ensure NVDA says "getSelection" and "Full support".
    5. Press control+alt+leftArrow. Ensure NVDA says "Safari", "Desktop" and "Full support".

Bugzilla

Full Query
ID Summary Assigned to Status
1730085 TextLeafPoint: Implement BOUNDARY_WORD_END and BOUNDARY_LINE_END James Teh [:Jamie] RESOLVED
1730086 TextLeafPoint: Implement HyperTextAccessible::TextBefore/AfterOffset using TextLeafPoint James Teh [:Jamie] RESOLVED
1730090 TextLeafPoint: Implement BOUNDARY_PARAGRAPH James Teh [:Jamie] RESOLVED
1733268 Cache OPAQUE1 state (no state change event) Morgan Reschenberg [:morgan] RESOLVED
1735970 New table implementation which can work with the cache James Teh [:Jamie] RESOLVED
1737944 Implement GroupPosition for cached RemoteAccessibles Eitan Isaacson [:eeejay] RESOLVED
1741793 Cache text selection James Teh [:Jamie] RESOLVED
1746833 Implement textual value for cached RemoteAccessibles Eitan Isaacson [:eeejay] RESOLVED
1747172 Make Pivot text functions use HyperTextAccessibleBase James Teh [:Jamie] RESOLVED
1747835 Cache text input type Eitan Isaacson [:eeejay] RESOLVED
1748749 Cache ActionCount/ActionNameAt Eitan Isaacson [:eeejay] RESOLVED
1749828 Support cached grouppos in windows and xpcom Eitan Isaacson [:eeejay] RESOLVED
1752380 Support actions in linkable accessible's indirect actions Eitan Isaacson [:eeejay] RESOLVED
1754360 Move EndOffset to base Accessible James Teh [:Jamie] RESOLVED
1755420 Clean up HyperTextAccessible methods now that all boundaries are supported by TextLeafPoint James Teh [:Jamie] RESOLVED
1755817 Implement cached version of LandmarkRole Eitan Isaacson [:eeejay] RESOLVED
1756229 Cache scroll offset Morgan Reschenberg [:morgan] RESOLVED
1756528 TextRange::Crop doesn't crop siblings James Teh [:Jamie] RESOLVED
1757812 Make android pivot traversal rules remote friendly. Eitan Isaacson [:eeejay] RESOLVED
1758009 Description is not proxied in RemoteAccessibleWrap Eitan Isaacson [:eeejay] RESOLVED
1758540 Pref on a11y.cache.enabled in Android Eitan Isaacson [:eeejay] RESOLVED
1758559 Add cross domain iframe tests to Android a11y tests Eitan Isaacson [:eeejay] RESOLVED
1758592 Use pivot result to determine boundaries in parent-side traversal Eitan Isaacson [:eeejay] RESOLVED
1758811 Stop using java cache when gecko a11y cache is enabled Eitan Isaacson [:eeejay] RESOLVED
1760735 Support TableAccessibleBase in AccGroupInfo James Teh [:Jamie] RESOLVED
1765430 Remove RemoteAccessibleWrap and map accessibles to their IDs in SessionAccessibility. Eitan Isaacson [:eeejay] RESOLVED
1765433 Make GetNodeInfo and Pivot methods run safely in Android UI thread Eitan Isaacson [:eeejay] RESOLVED
1768726 Make RemoteAccessibleBase::BoundsWithOffset thread safe for Android Eitan Isaacson [:eeejay] RESOLVED
1768913 Don't send WINDOW_CONTENT_CHANGED when about:blank loads Eitan Isaacson [:eeejay] RESOLVED
1768927 Don't use StringBundle off main thread Eitan Isaacson [:eeejay] RESOLVED
1768972 DocAccessibleParent::AddChildDoc calls RecvEvent causing monitor lock reentry Eitan Isaacson [:eeejay] RESOLVED
1769640 Cache AppUnitsPerDevPixel in top DocAccessibleParents Eitan Isaacson [:eeejay] RESOLVED
1771271 102.0a1 Crash Report PLDHashTable::Search | mozilla::a11y::RemoteAccessibleBase<T>::RetrieveCachedBounds Eitan Isaacson [:eeejay] RESOLVED
1771931 Crash in [@ OOM | large | NS_ABORT_OOM | nsTArray_base<T>::EnsureCapacity<T> | mozilla::a11y::CachedTableAccessible::EnsureRowCol] James Teh [:Jamie] RESOLVED
1771934 Crash in [@ mozilla::a11y::AccessibleWrap::GetVirtualViewID] James Teh [:Jamie] RESOLVED
1772019 Delay WillRefresh until PresShell is initialized Eitan Isaacson [:eeejay] RESOLVED
1772032 Crash in [@ nsContentUtils::GetLinkLocation] Eitan Isaacson [:eeejay] RESOLVED
1772165 Turn off ctw on Android Beta/Release Eitan Isaacson [:eeejay] RESOLVED
1772170 Crash in [@ mozilla::a11y::TextRange::CommonParent] James Teh [:Jamie] RESOLVED
1773260 Crash in [@ mozilla::a11y::SessionAccessibility::PopulateNodeInfo] RESOLVED

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


Milestone 2: August 2022

Windows opt-in user preview.

This milestone will focus on the work required to get most daily usage working well on Windows. Before the end of this milestone, we will invite interested users to enable the cache in Firefox Nightly, test it and provide any feedback.

In milestone 2, the following capabilities will be provided:

  1. Caching of additional properties, including document URL, access key/keyboard shortcut and ARIA attributes such as aria-current.
  2. Missing cache updates; e.g. coalesced selection events, name change events for selection changes in Gmail message lists.
  3. Caching of spelling errors.
  4. Caching of relations (labelledBy/labelFor, etc.).
  5. Support for live regions.
  6. Caching of text screen coordinates.
  7. Support for interaction triggered by clients, including scrolling.
  8. Hit testing.
  9. Any fixes required to get JAWS working correctly.

Test Scenarios

  1. Relevant tests from m0 (which was NVDA only), but with JAWS:
    1. Do a Google search, navigate the results using heading navigation and follow a result link.
    2. Fill out the form for a Google Advanced Search.
    3. Go to https://www.reaper.fm. Check the formatting of the “This is REAPER.” text (which isn’t a heading even though it should be) and confirm that the font size is reported as bigger than the paragraph of text below it.
    4. Open Gmail, find a message in the inbox, open it, read it, return to the inbox.
    5. Compose a message in Gmail containing text, a link, a bulleted list and a block quote. Read back through the message.
    6. Open Slack, use the quick switcher to switch to a channel, read some messages, write a message.
  2. NVDA: Open https://www.mozilla.org/en-US/about/manifesto/. Press h several times to move to the "Principle 2" heading. In the same tab, open https://google.com/. Press alt+leftArrow to go back. Ensure the screen reader cursor is still near "Principle 2". (Tests document URL caching.) (This currently doesn't work with JAWS in any browser.)
  3. NVDA, JAWS: Open https://wiki.mozilla.org/. Move to the navigation landmark. Ensure that Edit and View history report access keys (on Windows, alt+shift+e and alt+shift+h, respectively).
  4. NVDA, JAWS: Open https://www.nvaccess.org/. Confirm that the Home link is reported as the "current page". Press the Download link. Once it loads, confirm that the Download link is now reported as the "current page".
  5. NVDA, JAWS: Open the Gmail inbox. Focus a message in the list. Press x to select it. Press down arrow to move away from that message, then up arrow to move back to it. Ensure the screen reader reports that the message is selected.
  6. NVDA, JAWS: Open Slack. Focus the message box. Type "tset" and press space. Press left arrow to move back to the word you just typed. Ensure the screen reader reports a spelling error.
  7. NVDA: Open Google Advanced Search. Confirm that "all these words:" only appears once in NVDA browse mode. (This is broken with JAWS in Firefox regardless of the cache.)
  8. NVDA, JAWS: Open a document in Google Docs. Press control+alt+a, control+alt+c. Ensure the screen reader says "Not on a comment".
  9. NVDA, JAWS: Open https://google.com/. In the search box, type "asdf". Move the screen reader's review cursor to "s", route the mouse and simulate a left click. Verify that the caret is now on "s".
  10. NVDA, JAWS: Open https://www.nvaccess.org/. Move the screen reader's cursor to the bottom of the page. Verify that the bottom of the page is scrolled into view and that the top of the page is scrolled out of view.
  11. NVDA: Open https://google.com/. Move the mouse to Gmail, Images, Privacy, Terms and Settings. Ensure that the screen reader reports these as you move the mouse to them.
  12. NVDA, JAWS: Open a blank document in Google Docs. Add a heading, some text wrapping across two lines, a bulleted list and a link. Read back through the text and verify that it is read correctly. Go to the start of the first line of wrapped text. Type two additional words so that the line wrapping changes. Read the first line and verify that it is reported correctly, accounting for the changed wrapping.

Bugzilla

Full Query
ID Summary Assigned to Status
1699339 Fire name/description change event when text in hidden aria-labelled/describedby subtree changes James Teh [:Jamie] RESOLVED
1735101 Cache text screen bounds Morgan Reschenberg [:morgan] RESOLVED
1737919 TextLeafPoint: Implement support for spelling errors James Teh [:Jamie] RESOLVED
1739560 Update cache when line boundaries change James Teh [:Jamie] RESOLVED
1743966 Implement ScrollTo for cached RemoteAccessible on Windows James Teh [:Jamie] RESOLVED
1748393 Update cache when title of document changes James Teh [:Jamie] RESOLVED
1748755 Support live regions with the cache enabled on Windows James Teh [:Jamie] RESOLVED
1755377 Coalesced selection events drop SELECTED state change events Eitan Isaacson [:eeejay] RESOLVED
1756728 Allow a11y clients to query URL for cached remote documents James Teh [:Jamie] RESOLVED
1757121 Cache live region attributes James Teh [:Jamie] RESOLVED
1757126 Cache AccessKey and KeyboardShortcut James Teh [:Jamie] RESOLVED
1758689 Implement CTW hit testing Morgan Reschenberg [:morgan] RESOLVED
1760739 Expose ARIA object attributes for cached RemoteAccessibles James Teh [:Jamie] RESOLVED
1760939 Move LinkCount to HyperTextAccessibleBase James Teh [:Jamie] RESOLVED
1763211 Cache text bounds for horizontal (LtR and RtL) text Morgan Reschenberg [:morgan] RESOLVED
1764249 With the cache enabled, document incorrectly reports text selection when there is a caret James Teh [:Jamie] VERIFIED
1764499 [CTW] JAWS virtual cursor won't report formatting info RESOLVED
1764500 [CTW] JAWS treats a document as a read only edit if it contains a contentEditable James Teh [:Jamie] RESOLVED
1765460 [CTW] Bounds reported incorrectly when some pages are scrolled James Teh [:Jamie] RESOLVED
1765944 [CTW] Transform cache does not get updated when setting a transform James Teh [:Jamie] RESOLVED
1766142 [CTW] Expose explicit-name object attribute on cached RemoteAccessible James Teh [:Jamie] RESOLVED
1766206 [CTW] Line offsets incorrect for line feed at end of wrapped line James Teh [:Jamie] RESOLVED
1766546 [CTW] Ability to set the caret for cached RemoteAccessibles James Teh [:Jamie] RESOLVED
1766560 [CTW] First line start of a leaf is ignored when fetching the next line start James Teh [:Jamie] RESOLVED
1766794 [CTW] Terrible performance in NVDA vbuf loading using View Source James Teh [:Jamie] RESOLVED
1767887 [CTW] Paragraph boundary incorrect inside list items James Teh [:Jamie] RESOLVED
1768391 [CTW] Crash in [@ mozilla::detail::InvalidArrayIndex_CRASH | mozilla::a11y::HyperTextAccessibleBase::GetChildOffset] James Teh [:Jamie] RESOLVED
1769166 Push updates to TextBounds James Teh [:Jamie] RESOLVED
1770162 [CTW] Assertion in nsITimer::SetDelay when MSAA ids released during XPCOM shutdown James Teh [:Jamie] RESOLVED
1770878 [CTW] Tabbing to a text input doesn't report selection James Teh [:Jamie] VERIFIED
1771060 [CTW] Caching lines is slow with large blocks James Teh [:Jamie] RESOLVED
1771259 [CTW] CharBounds crashes when called on the insertion point at the end of a text box James Teh [:Jamie] RESOLVED
1771736 [CTW] Avoid redundant cache pushes for text James Teh [:Jamie] RESOLVED
1773930 [CTW] Expose xml-roles on cached RemoteAccessible James Teh [:Jamie] RESOLVED
1774043 Cache LABELLED_BY relation Morgan Reschenberg [:morgan] RESOLVED
1774193 [CTW] Fix hit testing on Windows James Teh [:Jamie] RESOLVED
1774197 [CTW] Cached hit testing problems James Teh [:Jamie] RESOLVED
1775329 Implement cached OffsetAtPoint Morgan Reschenberg [:morgan] RESOLVED
1778644 [CTW] Treeherder tables are treated as layout tables James Teh [:Jamie] RESOLVED
1779303 Crash in [@ nsAtom::ToString] James Teh [:Jamie] RESOLVED
1781536 [CTW] Unify RelationByType in Accessible base James Teh [:Jamie] RESOLVED
1783095 [CTW] A wrapping HTML label isn't included in cached relations Morgan Reschenberg [:morgan] RESOLVED
1783096 [CTW] <label for> not exposed in cached relations for initial cache push Morgan Reschenberg [:morgan] RESOLVED
1784841 [CTW] Platforms don't use unified OffsetAtPoint (AKA OffsetAtPoint doesn't support cached RemoteAccessible on Windows) James Teh [:Jamie] RESOLVED
1785983 Expose CTW in Nightly Experiments James Teh [:Jamie] RESOLVED

45 Total; 0 Open (0%); 43 Resolved (95.56%); 2 Verified (4.44%);


Milestone 3: November 2022

Enable by default on Nightly 109.

Bugzilla

Full Query
ID Summary Assigned to Status
1234121 Cache active item from child process in parent and remove sync call for FocusedChild Morgan Reschenberg [:morgan] RESOLVED
1663796 Fields not removed from NVDA virtual buffer when cancelling editing of a GitHub comment James Teh [:Jamie] RESOLVED
1759971 CTW support for MathML on Windows James Teh [:Jamie] RESOLVED
1772476 [CTW] CachedTableAccessible not invalidated when a cell is moved James Teh [:Jamie] RESOLVED
1779149 Fix incorrect assertions in CachedTableAccessible James Teh [:Jamie] RESOLVED
1779156 [CTW] Tests that wait for a show event based on a cached property time out Eitan Isaacson [:eeejay] RESOLVED
1780878 Cache CONTROL*, FLOW*, and description relations Morgan Reschenberg [:morgan] RESOLVED
1781193 [CTW] MOZ_ASSERT_UNREACHABLE: No remote found! Eitan Isaacson [:eeejay] RESOLVED
1782140 [CTW][Meta] Have all a11y tests pass in treeherder with caching enabled. Eitan Isaacson [:eeejay] RESOLVED
1782146 [CTW] Correctness fixes for remote HyperText offsets cache James Teh [:Jamie] RESOLVED
1782151 [CTW] Assertion failure: mCachedFields, at .../accessible/ipc/RemoteAccessibleBase.cpp:403 James Teh [:Jamie] RESOLVED
1782172 [CTW] Unify EMBEDS and CONTAINING_TAB_PANE relations for RemoteAccessible Morgan Reschenberg [:morgan] RESOLVED
1783094 Support RemoteAccessible relation targets on Windows when the cache is disabled James Teh [:Jamie] RESOLVED
1783133 [CTW] Fix unexpected passes in text mochitests with CTW enabled James Teh [:Jamie] RESOLVED
1784906 Expanded/Collapsed state changes not always reflected in JAWS virtual buffer RESOLVED
1784907 When opening a link in a new tab, visited State changes for links not reflected in the JAWS virtual buffer most times RESOLVED
1785958 [CTW] RemoteAccessibles in background tabs should expose the offscreen state Morgan Reschenberg [:morgan] RESOLVED
1786240 [CTW] Live regions are broken with JAWS James Teh [:Jamie] VERIFIED
1786649 browser/e10s/browser_caching_position.js fails when caching is enabled. Eitan Isaacson [:eeejay] RESOLVED
1786963 Text bounds should return input element's bounds if it is empty Eitan Isaacson [:eeejay] RESOLVED
1787101 [CTW] OffsetAtPoint doesn't transform to HyperText offsets James Teh [:Jamie] RESOLVED
1787105 [CTW] Potential infinite loop in OffsetAtPoint James Teh [:Jamie] RESOLVED
1787274 Cache offscreen status for accs that do not appear in the viewport Morgan Reschenberg [:morgan] RESOLVED
1787282 Cache LINKS_TO relation Morgan Reschenberg [:morgan] RESOLVED
1787283 Cache NODE_CHILD_OF and NODE_PARENT_OF relations Nathan LaPré RESOLVED
1787284 Cache MEMBER_OF relation Morgan Reschenberg [:morgan] RESOLVED
1787285 Cache FLOWS_TO relation RESOLVED
1787291 Modify mac popup test to wait for cache updates Eitan Isaacson [:eeejay] RESOLVED
1787686 [CTW] Expose link URL as value James Teh [:Jamie] RESOLVED
1787692 [CTW] MathML doesn't work with JAWS James Teh [:Jamie] RESOLVED
1788143 [CTW] Stale <select> values reported with CTW enabled Nathan LaPré RESOLVED
1789378 [CTW] Implement IAccessibleAction (AKA NVDA doesn't render empty div elements with onclick attribute) James Teh [:Jamie] RESOLVED
1789396 Crash in [@ mozilla::a11y::RemoteAccessibleBase<T>::BoundsWithOffset] James Teh [:Jamie] RESOLVED
1789750 Crash in [@ RtlpFreeHeapInternal | RtlFreeHeap | APP_DATA::FreeCachedMem] James Teh [:Jamie] RESOLVED
1793408 Firefox freezes on some websites with Cache the World enabled James Teh [:Jamie] VERIFIED
1794654 Wait for cache update before comparing bounds to content Eitan Isaacson [:eeejay] RESOLVED
1794719 [CTW] Crash in [@ mozilla::a11y::AccessibleWrap::GetAtkObject] James Teh [:Jamie] RESOLVED
1795221 [CTW] Caching of LINKS_TO severely increases cache time for WHATWG HTML spec Morgan Reschenberg [:morgan] RESOLVED
1796710 Tweak contentEditable table line start test Eitan Isaacson [:eeejay] RESOLVED
1796876 Crash in browser_treeupdate_optgroup.js with caching on Eitan Isaacson [:eeejay] RESOLVED
1797001 Crash in [@ mozilla::a11y::LocalAccessible::BundleFieldsForCache] Eitan Isaacson [:eeejay] RESOLVED
1797222 [CTW] Wrong y coordinate reported for text on lines other than the first Morgan Reschenberg [:morgan] RESOLVED
1797393 Split and robustify browser text tests Eitan Isaacson [:eeejay] RESOLVED
1797858 Resolve content task promise in browser_caching_domnodeid.js Eitan Isaacson [:eeejay] RESOLVED
1798037 Document bounds changes are not notified Eitan Isaacson [:eeejay] RESOLVED
1798550 [CtW] accessible/tests/browser/mac/browser_aria_controls_flowto.js - FAIL "dog-radio" has correct AXARIAControls Morgan Reschenberg [:morgan] RESOLVED
1798560 accessible/tests/browser/mac/browser_link.js FAIL Link 1 has no linked UI elements - Got 1, expected +0 Morgan Reschenberg [:morgan] RESOLVED
1798621 Enable CTW on Nightly Eitan Isaacson [:eeejay] RESOLVED
1798781 [CtW] accessible/tests/browser/mac/browser_selectables.js fails with cache enabled Morgan Reschenberg [:morgan] RESOLVED
1798839 [CTW] HTML radios report incorrect group position James Teh [:Jamie] RESOLVED
1799001 Ahem font doesn't load in character bounds after non-br line break test Eitan Isaacson [:eeejay] RESOLVED
1799204 [CtW] Layout table status fails to update for HTML attr changes Morgan Reschenberg [:morgan] RESOLVED
1799219 TEST-UNEXPECTED-FAIL | accessible/tests/browser/mac/browser_toggle_radio_check.js | Correct checked value - Got +0, expected 2 Morgan Reschenberg [:morgan] RESOLVED
1799228 e10s/browser_text.js sometimes times out with caching enabled Eitan Isaacson [:eeejay] RESOLVED
1800399 Disable unreliable spell check test Eitan Isaacson [:eeejay] RESOLVED
1800555 Remove XUL crashtest Eitan Isaacson [:eeejay] RESOLVED

56 Total; 0 Open (0%); 54 Resolved (96.43%); 2 Verified (3.57%);


Milestone 4: January 2023

Enable by default for Windows and Linux users in beta 110.

Bugzilla

Full Query
ID Summary Assigned to Status
1792120 [CTW] Stale relative-bounds values on iframe doc when updating iframe padding James Teh [:Jamie] RESOLVED
1792964 Hittesting table rows is incorrect when caching Morgan Reschenberg [:morgan] RESOLVED
1793978 Crash in [@ mozilla::a11y::Accessible::IsHTMLBr] James Teh [:Jamie] RESOLVED
1794747 [CTW] Treeherder Add new jobs (Search) hangs with NVDA James Teh [:Jamie] RESOLVED
1800731 crash near null in [@ _$LT$servo_arc..RawOffsetArc$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$::deref] James Teh [:Jamie] RESOLVED
1800736 Assertion failure: hyperAcc, at /builds/worker/checkouts/gecko/accessible/base/TextLeafRange.cpp:1345 James Teh [:Jamie] RESOLVED
1800780 crash near null in [@ mozilla::a11y::TableAccessible::IsProbablyLayoutTable] James Teh [:Jamie] RESOLVED
1801234 [CTW] Forward relation not updated when the target is removed/changed without changing the relation attribute Morgan Reschenberg [:morgan] RESOLVED
1801756 Using Firefox Nightly with GMail I can no longer read the web page with NVDA using the mouse James Teh [:Jamie] VERIFIED
1801907 Crash in [@ mozilla::a11y::Accessible::IsOuterDoc] James Teh [:Jamie] RESOLVED
1802240 Assertion failure: value > 0, at /builds/worker/checkouts/gecko/accessible/generic/LocalAccessible.cpp:3580 Nathan LaPré VERIFIED
1802241 Assertion failure: false (MOZ_ASSERT_UNREACHABLE: No ancestor with frame?), at /builds/worker/checkouts/gecko/accessible/generic/LocalAccessible.cpp:634 James Teh [:Jamie] VERIFIED
1802268 Big tables can make DocAccessible::ProcessContentInserted() very slow. James Teh [:Jamie] RESOLVED
1802386 Hit MOZ_CRASH(trying to get the offset between frames in different document hierarchies?) at /builds/worker/checkouts/gecko/layout/generic/nsIFrame.cpp:7031 Morgan Reschenberg [:morgan] VERIFIED
1803041 Youtube time bar no longer displays relevant info James Teh [:Jamie] RESOLVED
1805316 Assertion failure: value > 0, at /builds/worker/checkouts/gecko/accessible/generic/LocalAccessible.cpp:3572 Nathan LaPré VERIFIED
1805545 Assertion failure: mRawPtr != nullptr (You can't dereference a NULL RefPtr with operator->().), at /builds/worker/workspace/obj-build/dist/include/mozilla/RefPtr.h:315 James Teh [:Jamie] VERIFIED
1805876 [CTW] Better fix for Gmail hit testing issue (bug 1801756) James Teh [:Jamie] RESOLVED
1806026 [CtW] Gmail labels have incorrect y coordinates James Teh [:Jamie] VERIFIED
1806027 [CtW] Text content in the gmail compose box is not hittestable RESOLVED
1806486 Assertion failure: hyperAcc, at /builds/worker/checkouts/gecko/accessible/base/TextLeafRange.cpp:1345 James Teh [:Jamie] VERIFIED
1806548 crash near null in [@ style::gecko_properties::_$LT$impl$u20$style..gecko_bindings..structs..root..ServoComputedData$GT$::get_box] James Teh [:Jamie] VERIFIED
1808046 crash near null in [@ mozilla::a11y::TreeMutation::BeforeRemoval] James Teh [:Jamie] VERIFIED
1808828 [CTW] Y coordinate incorrect for lines other than the first inside <pre><code> Morgan Reschenberg [:morgan] RESOLVED
1809374 [CTW] Enable CTW on early beta for Windows and Linux James Teh [:Jamie] VERIFIED
1809379 [CTW] Y coordinate incorrect for characters when textarea is scrolled James Teh [:Jamie] RESOLVED

26 Total; 0 Open (0%); 15 Resolved (57.69%); 11 Verified (42.31%);


Milestone 5: March 2023

50% experiment for Windows and Linux users in release 111.

Bugzilla

Full Query
ID Summary Assigned to Status
1786676 [CTW] CTW causes occasional infinite loop in NVDA vbuf code RESOLVED
1809082 Using Firefox Nightly with Linked-In I can no longer read the web page with NVDA using the mouse Nathan LaPré RESOLVED
1809836 [CTW] Bounds incorrect for scrolled position: fixed elements Morgan Reschenberg [:morgan] RESOLVED
1811949 [CTW] Bounds incorrect for text within height: 0, flex aside element James Teh [:Jamie] RESOLVED
1811972 [CTW] Bounds for Google search results are occasionally wrong James Teh [:Jamie] RESOLVED
1812169 [CTW] Bounds incorrect for text within absolute positioned, flex layout, translated container RESOLVED
1812208 [CTW] Bounds cache incorrect if bounds change without reflow James Teh [:Jamie] RESOLVED
1813256 Assertion failure: aUpdateType == CacheUpdateType::Initial || mBounds.isSome() (Incremental cache push but mBounds is not set!), at /builds/worker/checkouts/gecko/accessible/generic/LocalAccessible.cpp:3301 James Teh [:Jamie] VERIFIED
1814299 Using Firefox Nightly with Android Developer's Blog I can no longer read the web page with NVDA using the mouse RESOLVED
1814538 Crash in [@ PLDHashTable::EntryStore::IsAllocated | PLDHashTable::Search | nsTHashtable<T>::GetEntry | nsBaseHashtable<T>::Lookup | mozilla::a11y::AccAttributes::GetAttribute<T>] James Teh [:Jamie] RESOLVED
1814785 [CTW] Bounds incorrect for text within translated, absolute positioned Accessibles within section acc James Teh [:Jamie] RESOLVED
1814800 [CTW] Bounds incorrect for scrolled position: fixed/sticky elements which don't get an Accessible; e.g. display: flex James Teh [:Jamie] RESOLVED
1815153 [CTW] Bounds incorrect for scrolled position: sticky elements Morgan Reschenberg [:morgan] RESOLVED
1815822 [CTW] Bounds incorrect for scrolled sticky/fixed position transformed display: flex element with calc style RESOLVED
1816022 [CTW] Bounds incorrect for text within span, section, with <!DOCTYPE html> James Teh [:Jamie] RESOLVED
1816346 [CTW] Deal with unintended semantics due to role="presentation" being overridden by transforms or position: fixed/sticky James Teh [:Jamie] RESOLVED
1816601 [CTW] Consider emulating HyperTextAccessible::OffsetAtPoint returning 0 even if offset 0 isn't at the given point James Teh [:Jamie] RESOLVED
1816833 Add CTW to Nimbus feature manifest James Teh [:Jamie] RESOLVED
1820069 [CTW] Crash in [@ mozilla::detail::InvalidArrayIndex_CRASH | nsTArray_Impl<T>::ElementAt | mozilla::a11y::TextLeafPoint::CharBounds] James Teh [:Jamie] RESOLVED

19 Total; 0 Open (0%); 18 Resolved (94.74%); 1 Verified (5.26%);


Milestone 6: April 2023

Enable for all Windows users on release.

Bugzilla

Full Query
ID Summary Assigned to Status
1818726 Content of a table missing in NVDA's virtual buffer with CTW enabled James Teh [:Jamie] RESOLVED
1819741 [CTW] Hit testing reports Accessibles hidden by another element with overflow: auto/scroll Nathan LaPré VERIFIED
1819802 [CTW] HyperTextAccessibleBase::OffsetAtPoint is very slow with large text containers James Teh [:Jamie] VERIFIED
1821223 [CTW] Poor performance querying paragraph boundaries in large tables James Teh [:Jamie] RESOLVED
1822340 Using Firefox Nightly with GitHub Blog I can no longer read the links on the page with NVDA using the mouse James Teh [:Jamie] VERIFIED
1823294 [CTW] Name not updated when text of text leaf changes James Teh [:Jamie] VERIFIED
1824293 Enable CtW on release for Windows and Linux James Teh [:Jamie] RESOLVED

7 Total; 0 Open (0%); 3 Resolved (42.86%); 4 Verified (57.14%);


Milestone 7

Enable for for all Mac and Linux users on beta.

Bugzilla

Full Query
ID Summary Assigned to Status
1730095 Implement Mac text navigation using TextLeafPoint/Range Eitan Isaacson [:eeejay] RESOLVED
1766547 Support setting the caret in TextLeafPoint RESOLVED
1776907 Don't regard text input elements as line breaks Eitan Isaacson [:eeejay] RESOLVED
1778441 Make TextLeafPoint::CharBounds work for LocalAccessible Morgan Reschenberg [:morgan] RESOLVED
1782550 block-inline list bullets are treated as block items Eitan Isaacson [:eeejay] RESOLVED
1782563 Allow TextLeafPoint constructor to work with special end offset Eitan Isaacson [:eeejay] RESOLVED
1788116 Introduce Iterator for TextLeafRange Eitan Isaacson [:eeejay] RESOLVED
1788132 Add TextLeafPoint::IsParagraphStart Eitan Isaacson [:eeejay] RESOLVED
1793941 [CTW] Don't fire EVENT_TABLE_STYLING_CHANGED when the cache is enabled Morgan Reschenberg [:morgan] RESOLVED
1794634 mozAccessible::ARIARole uses sync IPC message Eitan Isaacson [:eeejay] RESOLVED
1811092 Introduce async IPDL protocol for text selection Eitan Isaacson [:eeejay] RESOLVED
1815774 Add XPCOM bindings and test for TextLeafPoint::FindBoundary Eitan Isaacson [:eeejay] RESOLVED
1816536 TextLeafPoint::FindBoundary misses document edges Eitan Isaacson [:eeejay] RESOLVED
1816573 Use flags in TextLeafPoint::FindBoundary instead of boolean arguments Eitan Isaacson [:eeejay] RESOLVED
1820029 Move relevant HyperTextAccessibleBase::TextBounds code to TextLeafPoint::CharBounds for LocalAccessible Morgan Reschenberg [:morgan] RESOLVED
1820894 Don't use ApplyPostSearchFilter sync IPC message when caching is on. Eitan Isaacson [:eeejay] RESOLVED
1824295 Enable CtW to ride the trains for Mac James Teh [:Jamie] RESOLVED
1825054 Getting text bounds of last character in document causes an infinite loop Eitan Isaacson [:eeejay] RESOLVED

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


Milestone 8

Enable for all Mac and Linux users on release.

Bugzilla

Full Query
ID Summary Assigned to Status
1827557 [CTW][Mac][New Text Impl] Regressions in text navigation announcements James Teh [:Jamie] VERIFIED
1829167 Crash in [@ mozilla::a11y::Accessible::IsOuterDoc] James Teh [:Jamie] VERIFIED
1830208 Disable CtW on Mac for 113 release James Teh [:Jamie] RESOLVED

3 Total; 0 Open (0%); 1 Resolved (33.33%); 2 Verified (66.67%);


Backlog

Full Query
ID Summary Assigned to Status
1730868 TextLeafPoint: Better handling for inline-block for line boundaries NEW
1739559 Cache isn't updated when text attributes change NEW
1757260 Cache initial focus, caret and text selection NEW
1768951 Some text bounds are incorrectly calculated within iframes NEW
1769165 Make CharBounds handle embedded characters NEW
1771429 [CTW] Consider caching for RemoteAccessibleBase::EmbeddedChildAt NEW
1774785 [CTW] Cache math attributes NEW
1796731 [CTW] Name is incorrect for initial aria-owns NEW
1809699 [CTW] Consider simplifying char rect caching by using a line iterator NEW
1812165 Assertion failure: false (MOZ_ASSERT_UNREACHABLE: No remote found!), at /builds/worker/checkouts/gecko/accessible/ipc/DocAccessibleParent.cpp:639 NEW
1816514 [CTW] Can't focus some elements when scrolling UNCONFIRMED
1822443 [CTW] TextLeafPoint::FindTextAttrsStart should walk into the next/previous container NEW
1822457 [CTW] Use the cached focus instead of PDocAccessible::RestoreFocus NEW
1825085 cached LINKS_TO relation is slow NEW
1825172 Consider whether TextLeafPoint::FindBoundary should return an invalid point when it can't move any further NEW
1825618 [CTW] Retrieving many selections is slow (AKA massive jank when selecting many table cells with Windows Text Cursor Indicator enabled) NEW
1830394 Firefox does not respond when using SD Times in maximized window when using NVDA UNCONFIRMED
1836944 Wrong MSAA positions on dynamic elements since introduction of accessibility cache UNCONFIRMED
1846186 [meta] Bounds and hittesting incorrect for multiple elements on db.msin.jp NEW
1852865 MaybeInitWindowEmulation calls RemoteAccessible::Bounds before cache is received NEW
1861026 AT-SPI2 cannot be used to modify text UNCONFIRMED
1862805 Remove MozMouseExploreByTouch event James Teh [:Jamie] NEW

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