Before Fission, FocusManager::FocusedDOMNode rejected a11y focus on remote XUL browsers by checking EventStateManager::IsRemoteTarget.
In bug 1594623, code was added to FocusManager::ProcessDOMFocus to prevent a11y focus on OuterDocAccessibles in order to reject focus on OOP iframes.
In bug 1635784, EventStateManager::IsRemoteTarget was renamed to EventStateManager::IsTopLevelRemoteTarget, and EventStateManager::IsRemoteTarget now checks for OOP iframes as well.
This allows us to unify rejection of a11y focus on remote OuterDocAccessibles in FocusManager::FocusedDOMNode.
Differential Revision: https://phabricator.services.mozilla.com/D87996
We need a sync IPC call for this because otherwise the number of smaller sync messages we would need to call would be variable.
Differential Revision: https://phabricator.services.mozilla.com/D88076
Print preview documents don't get DocAccessibles because this currently causes crashes and doesn't provide much value.
However, we still want to tell a11y clients something useful when a print preview document gets focus, rather than a11y focus just going nowhere.
Therefore, we allow a11y focus to land on the OuterDocAccessible (browser element) in this case.
Differential Revision: https://phabricator.services.mozilla.com/D87997
Before Fission, FocusManager::FocusedDOMNode rejected a11y focus on remote XUL browsers by checking EventStateManager::IsRemoteTarget.
In bug 1594623, code was added to FocusManager::ProcessDOMFocus to prevent a11y focus on OuterDocAccessibles in order to reject focus on OOP iframes.
In bug 1635784, EventStateManager::IsRemoteTarget was renamed to EventStateManager::IsTopLevelRemoteTarget, and EventStateManager::IsRemoteTarget now checks for OOP iframes as well.
This allows us to unify rejection of a11y focus on remote OuterDocAccessibles in FocusManager::FocusedDOMNode.
Differential Revision: https://phabricator.services.mozilla.com/D87996
We need to navigate past bullets when moving markers by character or word,
but we need to still include bullets when retrieving the string of a given
marker range.
Differential Revision: https://phabricator.services.mozilla.com/D87813
The fact that this control is a slider is communicated through its role.
Having the word "slider" in the label is thus redundant and results in unnecessary verbosity for screen reader users.
Differential Revision: https://phabricator.services.mozilla.com/D87401
1. Label it.
2. Expose the position and duration as its value text.
The raw numeric value exposed previously wasn't meaningful to users.
3. Hide the progressBar for a11y.
While the scrubber and progressBar are visually combined, they are exposed as entirely separate controls for a11y.
As well as duplicating information, progress bars are automatically reported by screen readers even if they aren't focused, which intrudes on the audio being played.
4. Remove tabindex="-1" on the progressBar.
A progress element isn't focusable by default.
tabindex="-1" makes it programmatically focusable (but not tabbable).
This isn't interactive, so there's no reason for this to be programmatically focusable.
Moreover, this is now aria-hidden and aria-hidden elements should never be focusable.
Differential Revision: https://phabricator.services.mozilla.com/D87400
This uses the Gecko logging framework. To get debug logs set MOZ_LOG to
"MacAccessibility:4". To get verbose logging, set it to "MacAccessibility:5".
Differential Revision: https://phabricator.services.mozilla.com/D86618
It was only ever set to the same value as its default, except in
comm-central, where it is unset, but in directories that now don't link
anything (they did back when binary components were a thing).
Differential Revision: https://phabricator.services.mozilla.com/D85381
It was only ever set to the same value as its default, except in
comm-central, where it is unset, but in directories that now don't link
anything (they did back when binary components were a thing).
Differential Revision: https://phabricator.services.mozilla.com/D85381
The abstract observer base classes are moved to a separate header file
nsRefreshObservers.h and the includes are adjusted accordingly.
Some method implementations are moved to the corresponding implementation files
to avoid the need to include the nsRefreshDriver.h file in the header.
Differential Revision: https://phabricator.services.mozilla.com/D85764
The new pivot boundaries might consist of accessibles that don't exist
yet in the parent process proxy tree.
I guess we can tweak the timing of the pivot boundaries message to be
sent only after remote tree construction. But this seems like an edge
case that quickly gets corrected after the next cache refresh.
Differential Revision: https://phabricator.services.mozilla.com/D85912