Open Bug 1769586 Opened 2 years ago Updated 1 month ago

Implement ARIA element reflection

Categories

(Core :: Disability Access APIs, enhancement)

enhancement

Tracking

()

People

(Reporter: rego, Assigned: eeejay)

References

(Depends on 1 open bug, Blocks 9 open bugs)

Details

Attachments

(2 files)

Steps to reproduce:

After the work for simple attributes have been done (see https://bugzilla.mozilla.org/show_bug.cgi?id=1628418), the next step would be to implement IDREF element reflection.

HTML PR spec: https://github.com/whatwg/html/pull/3917
WPT test: https://github.com/web-platform-tests/wpt/blob/master/dom/nodes/aria-element-reflection.tentative.html

JFYI, Chromium (https://bugs.chromium.org/p/chromium/issues/detail?id=981423) and WebKit (https://bugs.webkit.org/show_bug.cgi?id=196843) already have an implementation.

Blocks: aria
Webcompat Priority: --- → ?

https://github.com/webcompat/web-bugs/issues/112375 is covered by bug 1785412, not this one. Note that this part of ARIA reflection is implemented, but not shipped yet; see bug 1785412 for the reasons.

Ah, thanks!

Webcompat Priority: ? → ---
Blocks: 1689070, 1689151
Depends on: 1870783, 1823757
Duplicate of this bug: 1878816
Summary: Implement IDREF element reflection → Implement ARIA element reflection
Depends on: 1879255
No longer depends on: 1870783
Status: UNCONFIRMED → NEW
Ever confirmed: true
Depends on: 1859211

Explainer: https://wicg.github.io/aom/aria-reflection-explainer.html#reflecting-element-references
Spec:
https://w3c.github.io/aria/#ARIAMixin
https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:element

  1. Bug 1823757 implements the DOM concepts of explicitly set attr-element and attr-associated element. However, some ARIA properties are an array of elements. We'll need to extend DOM to handle attr-element arrays. See dom::Element::ExplicitlySetAttrElement, GetExplicitlySetAttrElement, ClearExplicitlySetAttrElement, GetAttrAssociatedElement, etc.
  2. Bug 1879255 implements a11y engine support for a single explicitly set attr-element. We'll need to extend that to handle attr-element arrays. That should be fairly straightforward. See DocAccessible::AddDependentElementsFor, DocAccessible::RemoveDependentElementsFor, and the mIsWalkingDependentElements bits in RelatedAccIterator.
  3. The a11y engine will also need to be taught how to calculate ARIA relations from explicitly set attr-elements. RelatedAccIterator already handles the reverse relations thanks to bug 1879255. The forward side uses IDRefsIterator, which only knows about ids. We'll need to extend (and ideally rename) IDRefsIterator, similar to what was done for RelatedAccIterator.
  4. ElementInternals doesn't support explicitly set attr-elements at all, neither singular nor array. We'll need to extend it to handle this.
  5. We'll need to add the ARIA element attributes to ARIAMixin.webidl and implement them in dom::Element and ElementInternals.
  6. We'll need to ensure that setting an ARIA content attribute clears the explicitly set attr-element. We do this here for popovertarget. We'll probably need to do this in dom::Element for ARIA attributes, though.
  7. Finally, we'll need to teach the a11y engine how to get attr-elements from ElementInternals, in all places where we do this for normal elements.
Assignee: nobody → eitan
Blocks: 1799821
Depends on: 1883996
Depends on: 1885607
Depends on: 1891784
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: