Intent to Prototype: ExportID for cross ShadowRoot ARIA

227 views
Skip to first unread message

Ben Howell

unread,
Sep 22, 2023, 7:35:09 PM9/22/23
to blin...@chromium.org, Alex Russell

Contact emails

sligh...@chromium.orgalexr...@microsoft.combeho...@microsoft.com


Explainer

https://github.com/WICG/aom/blob/gh-pages/exportid-explainer.md


Specification

None


Summary

Exported IDs are a way to refer to elements inside a shadow tree from an ID reference attribute like `aria-labelledby` or `for`, while preserving shadow DOM encapsulation. There is a new attribute `exportid` to mark an element as having its ID exported from the shadow root, and a new syntax to refer to the element from outside the shadow root: `for="host::id(child)"`. There is also a new attribute `useids` to allow referring to elements outside of the shadow tree. More details are in the explainer. Together these features allow creating ARIA relationships across the shadow tree boundary.




Blink component

Blink>DOM>ShadowDOM


Motivation

The Shadow DOM presents a problem for accessibility: there is not a way to establish semantic relationships between elements on in different shadow trees (such as aria-labelledby). This limits the ability to design web components in a way that works with accessibility tools such as screen readers. Exported IDs solve this problem by giving a way to create semantic relationships between elements in a way that respects shadow DOM encapsulation. The specifics of the proposal are detailed in the linked explainer.




Initial public proposal

https://github.com/WICG/aom/pull/204


TAG review

None


TAG review status

Pending


Risks




Interoperability and Compatibility

None



Gecko: No signal

WebKit: No signal

Web developers: No signals

Other signals:


WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

None




Debuggability

None




Is this feature fully tested by web-platform-tests?

No


Flag name on chrome://flags

None


Finch feature name

None


Non-finch justification

None


Requires code in //chrome?

False


Estimated milestones

No milestones specified




Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5188237101891584

This intent message was generated by Chrome Platform Status.

 

Aaron Leventhal

unread,
Feb 15, 2024, 6:05:50 PMFeb 15
to blink-dev, Ben Howell, Alex Russell, Alice Boxhall, Benjamin Beaudry, Chris Harrelson, David Bolter, Mason Freed
Also wondering about ARIA element reflection (ariaDescribedByElements, ariaOwnsElements, etc.) ? 

We already have an implementation of ARIA element reflection in Blink, but it isn't shipping yet, and has likely fallen into disrepair (for more info about that, I just added comment 25 in the original feature bug).

I feel like in order to ship the new exciting technique, we should also ship the original technique. 
Interested in hearing everyone's thoughts.

Thanks,
Aaron

Aaron Leventhal

unread,
Feb 15, 2024, 6:12:32 PMFeb 15
to blink-dev, Ben Howell, Alex Russell, Benjamin Beaudry, Chris Harrelson, David Bolter, Mason Freed, abox...@igalia.com

Ben Howell

unread,
Feb 15, 2024, 8:08:35 PMFeb 15
to Aaron Leventhal, blink-dev, Alex Russell, Benjamin Beaudry, chrishtr, David Bolter, Mason Freed, abox...@igalia.com

Hi Aaron,

 

The plan has changed a bit since the original I2P. I got some feedback that the Export ID proposal was overly complicated for end users, and there should be a simpler feature that works towards enabling web components to be drop-in replacements for builtins. The new plan is to implement Reference Target (https://github.com/WICG/aom/pull/207), which is simpler and more scoped to solving cross-root ARIA.

 

I’ve updated the chromestatus feature to refer to Reference Target instead: https://chromestatus.com/feature/5188237101891584. I’m going to update the Export ID explainer in the AOM repo once the new one is merged.

 

That said, Reference Target relies on element reflection from the ARIAMixin in order to make a complete solution for cross-root ARIA, so it’s concerning that it has fallen into disrepair... Your link to your comment 25 is broken – could you send the link again and/or a link to the feature bug you’re referring to?

 

Thanks,

Ben

 

From: Aaron Leventhal <aleve...@google.com>
Sent: Thursday, February 15, 2024 3:12 PM
To: blink-dev <blin...@chromium.org>
Cc: Ben Howell <beho...@microsoft.com>; Alex Russell <alexr...@microsoft.com>; Benjamin Beaudry <Benjamin...@microsoft.com>; chrishtr <chri...@google.com>; David Bolter <dbo...@google.com>; Mason Freed <mas...@google.com>; abox...@igalia.com
Subject: [EXTERNAL] Re: Intent to Prototype: ExportID for cross ShadowRoot ARIA

 

Chris Harrelson

unread,
Feb 15, 2024, 8:14:33 PMFeb 15
to Ben Howell, Aaron Leventhal, blink-dev, Alex Russell, Benjamin Beaudry, David Bolter, Mason Freed, abox...@igalia.com
On Thu, Feb 15, 2024 at 5:08 PM Ben Howell <beho...@microsoft.com> wrote:

Hi Aaron,

 

The plan has changed a bit since the original I2P. I got some feedback that the Export ID proposal was overly complicated for end users, and there should be a simpler feature that works towards enabling web components to be drop-in replacements for builtins. The new plan is to implement Reference Target (https://github.com/WICG/aom/pull/207), which is simpler and more scoped to solving cross-root ARIA.

 

I’ve updated the chromestatus feature to refer to Reference Target instead: https://chromestatus.com/feature/5188237101891584. I’m going to update the Export ID explainer in the AOM repo once the new one is merged.

 

That said, Reference Target relies on element reflection from the ARIAMixin in order to make a complete solution for cross-root ARIA, so it’s concerning that it has fallen into disrepair... Your link to your comment 25 is broken – could you send the link again and/or a link to the feature bug you’re referring to?


Reply all
Reply to author
Forward
0 new messages