It seems that VoiceOver depends on that property to know if a selection is be extended or moved. This manifests in several places in Slack when the user combines VO navigation with Slack's keyboard navigation.
Also changed where we retrieve the editable ancestor to simplify the notification dispatching block.
Differential Revision: https://phabricator.services.mozilla.com/D100452
By spec, it would need to be an area for aria-multiline=true and a field for aria-multiline=false. Chrome seems to assign all aria text boxes to areas. For some reason this allows VO to recognize links when editing. Webkit doesn't need this, for some reason and can get links announces in AXTextField as well.
Depends on D99312
Differential Revision: https://phabricator.services.mozilla.com/D99313
For focusable ancestor, just use editable ancestor since the IPC toll
on finding closest focusable ancestor isn't worth it.
Differential Revision: https://phabricator.services.mozilla.com/D99311
By spec, it would need to be an area for aria-multiline=true and a field for aria-multiline=false. Chrome seems to assign all aria text boxes to areas. For some reason this allows VO to recognize links when editing. Webkit doesn't need this, for some reason and can get links announces in AXTextField as well.
Depends on D99312
Differential Revision: https://phabricator.services.mozilla.com/D99313
This is consistent with how WebKit does it: if offset is between two accessibles,
return the previous one.
Depends on D99311
Differential Revision: https://phabricator.services.mozilla.com/D99312
For focusable ancestor, just use editable ancestor since the IPC toll
on finding closest focusable ancestor isn't worth it.
Differential Revision: https://phabricator.services.mozilla.com/D99311
This is done via an ifdef in the ARIAMap. Provisions, however, are there to simply remove the ifdef and if clauses from here and the test file to enable this on other platforms once alert double-speaking and other unwanted side effects are fixed on said platforms.
Differential Revision: https://phabricator.services.mozilla.com/D97584
XUL documents have a bunch of non-hypetext accessibles in their heirarchy. So you can't assume that a hyperlink's parent is a hypertext. To get around that, when we construct ranges for elements they should be internal ranges when possible.
Differential Revision: https://phabricator.services.mozilla.com/D98394
The normalize function was putting the current container/offset past the end boundary. This caused overruns with getting the text for the range of the input object, and some unexpected invalid ranges.
Differential Revision: https://phabricator.services.mozilla.com/D98236
It seems that VO mistakenly thinks the web area is a descendant of itself. This causes all kinds of cyclical parent child relationships that makes VO over-query us.
This patch remedies that by not returning the web area when do an immediate child search starting from the root group - in any direction.
Differential Revision: https://phabricator.services.mozilla.com/D97819
Safari has an inconsistent way to deal with list bullets in text.
If a given range has a list or list item nested inside it - but it is not
at the beginning, the bullet will not be returned as part of the text.But if the range begins at the start
of a list item, the preceding bullet is included. For example, given the following list:
* First Item
* Second Item
If the range is [irst Item], the text for that range should return as "irst Item",
but if the range is [First it], the returned text is "* First it".
This patch emulates that inconsistency by removing the list item considerations
in the text segments iterator, and instead prepending a bullet if needed.
Differential Revision: https://phabricator.services.mozilla.com/D97717
This allows `contenteditable` textboxes to work correctly with flattened text values.
The attribute setters, aside from AXValue, don't work in Chrome or Safari with aria textboxes,
so those are not a high priority. These include:
- AXSelectedText
- AXSelectedTextRange
- AXVisibleCharacterRange
In addition, AXVisibleCharacterRange's getter doesn't function as expected in Chrome or Safari either, so I didn't touch it.
Differential Revision: https://phabricator.services.mozilla.com/D97629
This also irons out some event syncing issues. We need to wait for selection changes in the future patch in order to take advantage of selection caching.
Differential Revision: https://phabricator.services.mozilla.com/D97628
UPDATED
-------
accessible/tests/mochitest/elm/test_HTMLSpec.html
Bug 905215
Test that a11y shadow DOM gets objects of the right type and state from HTML dom.
Changed <object> and <embed> plugin tests to find no accessible.
accessible/tests/mochitest/elm/test_MathMLSpec.html
Bug 1001634
Basic MathML a11y tests. Didn't use plugin, just initializes it.
Remove plugin initialization.
accessible/tests/mochitest/elm/test_plugin.html
Test that a11y shadow tree gets proper type/state for plugin objects and their subtrees, even if there is an HTML fallback provided.
Removed.
accessible/tests/mochitest/focus/test_takeFocus.html
Bug 677467
Test that a11y shadow tree focus follows DOM focus
Remove plugin init but keep plugin test.
Differential Revision: https://phabricator.services.mozilla.com/D95905
UPDATED
-------
accessible/tests/mochitest/elm/test_HTMLSpec.html
Bug 905215
Test that a11y shadow DOM gets objects of the right type and state from HTML dom.
Changed <object> and <embed> plugin tests to find no accessible.
accessible/tests/mochitest/elm/test_MathMLSpec.html
Bug 1001634
Basic MathML a11y tests. Didn't use plugin, just initializes it.
Remove plugin initialization.
accessible/tests/mochitest/elm/test_plugin.html
Test that a11y shadow tree gets proper type/state for plugin objects and their subtrees, even if there is an HTML fallback provided.
Removed.
accessible/tests/mochitest/focus/test_takeFocus.html
Bug 677467
Test that a11y shadow tree focus follows DOM focus
Remove plugin init but keep plugin test.
Differential Revision: https://phabricator.services.mozilla.com/D95905
VoiceOver seems to do all the heavy lifting of figuring out what portion of the
live region should be read.
Depends on D96293
Differential Revision: https://phabricator.services.mozilla.com/D96294
I think VoiceOver uses this to pull in all live regions so it
can check for deletions when they change later on.
Depends on D96292
Differential Revision: https://phabricator.services.mozilla.com/D96293
We use an ivar boolean flag to cache the existance of a live region. This lets us
hide the live region AX attributes and avoid sync round trips to content.
Depends on D96291
Differential Revision: https://phabricator.services.mozilla.com/D96292
VoiceOver pre-caches live region data and does its own deltas to
know what to parts of a subtree changed, and what to announce
based on AXARIAAtomic and AXARIARelevant.
I added a removed event as well. This will help us cache a "live region"
flag in the main process and avoid sync round trips for attributes when not needed.
Differential Revision: https://phabricator.services.mozilla.com/D96291
This method only is async in order to allow callers to wait for a process switch
triggered by the call to `loadURI` to be finished before resolving. With
DocumentChannel, we should never trigger a process switch eagerly like this
again, so we don't need any of the async behaviour here anymore.
This part is largely mechanical changes to tests, removing the `await` calls on
`loadURI`, and a follow-up part will remove the actual async logic from
`BrowserTestUtils.loadURI`.
Differential Revision: https://phabricator.services.mozilla.com/D94641
VoiceOver seems to do all the heavy lifting of figuring out what portion of the
live region should be read.
Depends on D96293
Differential Revision: https://phabricator.services.mozilla.com/D96294
I think VoiceOver uses this to pull in all live regions so it
can check for deletions when they change later on.
Depends on D96292
Differential Revision: https://phabricator.services.mozilla.com/D96293
We use an ivar boolean flag to cache the existance of a live region. This lets us
hide the live region AX attributes and avoid sync round trips to content.
Depends on D96291
Differential Revision: https://phabricator.services.mozilla.com/D96292
VoiceOver pre-caches live region data and does its own deltas to
know what to parts of a subtree changed, and what to announce
based on AXARIAAtomic and AXARIARelevant.
I added a removed event as well. This will help us cache a "live region"
flag in the main process and avoid sync round trips for attributes when not needed.
Differential Revision: https://phabricator.services.mozilla.com/D96291