Hi David, Responses inline 🙂. I've also linked the design doc if you'd like to take a further look: https://docs.google.com/document/d/1pz7KQUgd3zjjH7aTWFTFBEps_GrxXF3pZjaV8H76WjA/edit?usp=sharing
Cheers, Sara ________________________________ From: David Tseng <dts...@google.com> Sent: Monday, March 7, 2022 4:44 PM To: blink-dev <blink-dev@chromium.org> Cc: Sara Tang <sara.t...@microsoft.com> Subject: [EXTERNAL] Re: Intent to Prototype: Confirmation of Action API Hi there, A few additional questions/comments: - this api will be a separate channel from ordinary live regions. If we mix the two techniques, wouldn't the output be interleave? For example, an iframe with a live region, and another iframe wherein we call document.ariaNotify? In the Windows implementation, we are indeed using a different channel than live regions. However, the final invocation out of Chromium for both this API and live regions is into UIA, which has its own queuing mechanism. While it is possible for notifications to interleave, they will never interrupt each other (unless specifically intended) The plan for other systems is to hook our API into the existing ARIA live region machinery. It will have a similar outcome as above, where ariaNotify notifications may interleave with live ARIA region ones, but they won't interrupt or interfere with each other. - the way Chrome (at least) works is based on the serialization of a tree structure. This api appears to be a imperitive call, making it seem like the call gets honored immediately. However, the a11y tree gets pushed only on layout clean. - what happens if I repeatedly call document.ariaNotify? Would these announcements queue up? Would they flush tts? Would it trigger a refresh of the accessibility tree? This is a good point! We mark the a11y tree as dirty whenever document.ariaNotify is called and store unqueued notifications on AXTreeData. - live regions have the aria-live polite|assertive properties which roughly (though not really for all screen readers) map to queue vs flushing tts. Is there something equivalent for this api? Yes! One of the goals for this API was to have more indicative properties to describe how notification behave. Currently, we have any combination of the following two properties (naming tbd): * PlaceInQueue: (front | back | newest-only) * front: place the notification in the front of the queue * back: place the notification in the back of the queue * newest-only: place the notification in the back of the queue, but also drop all existing notifications from the same element (good for progress bars, latest status, etc.) * Interrupt: (true | false) * true: if a notification is currently speaking and shares the same source as the one being queued, interrupt it and move to the next notification in the queue * false: let the current notification speak to completion - many screen readers actually suppress live regions (e.g. NVDA) or give users a way to turn them off. This api might reduce the ability for screen readers to do this depending on how it gets implemented. Another good point! I think it makes sense that if live regions are suppressed, we would want this API to also be suppressed. On non-Windows systems, since we will be hooking directly into the existing ARIA live regions implementation, we will share the same behavior as ARIA live regions (aka. suppress live regions => suppress JS API). I'm not so sure in the Windows implementation, I'll do more research on how live regions are suppressed in screen readers. - at least via the current proposed change, it looks like notify is trying hard to be a direct tts channel to the screen reader. It has very little to do with ARIA? That is correct, but we decided to keep the ARIA-naming because many web authors associate accessibility with ARIA. Thus, this naming most succinctly expresses the intention of the API. On Friday, January 28, 2022 at 4:26:36 PM UTC-8 Sara Tang wrote: Contact emails sar...@microsoft.com Explainer https://github.com/WICG/aom/blob/gh-pages/notification-api.md<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWICG%2Faom%2Fblob%2Fgh-pages%2Fnotification-api.md&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=bmDurw1dfMcZzwWxl0WSOyQl8ox6TdHm77wlXE%2FWXGY%3D&reserved=0> Specification Summary This effort aims to create a JavaScript API so that developers can better notify AT users of actions/changes to a webpage not necessarily tied to UI elements. Blink component Blink>Accessibility<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Flist%3Fq%3Dcomponent%3ABlink%253EAccessibility&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=%2B7teELybGISEmodZGVNnWE4zMLn5aVigsfcoO5%2Fco8Y%3D&reserved=0> Motivation Currently the only mechanism available today that communicates content changes in a web app down to the accessibility layer is via ARIA live regions. One major limitation to ARIA live regions is that they assume the change to a webpage is tied to a DOM element. This leads to content authors employing various inefficient or inconsistent tricks and hacks to notify of changes that are not associated with the DOM. We propose a separate notification API to address these scenarios, called Confirmation of Action. Initial public proposal https://github.com/WICG/aom/blob/gh-pages/notification-api.md<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWICG%2Faom%2Fblob%2Fgh-pages%2Fnotification-api.md&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=bmDurw1dfMcZzwWxl0WSOyQl8ox6TdHm77wlXE%2FWXGY%3D&reserved=0> TAG review TAG review status Pending Risks Interoperability and Compatibility Gecko: No signal WebKit: No signal Web developers: Positive (https://github.com/w3c/aria/issues/832<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fissues%2F832&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=W0%2FAsv6K%2F5CeT6GxPW6HHqCziXXWGMK9Nll%2BVHggQAU%3D&reserved=0>) Other signals: Debuggability TBD Is this feature fully tested by web-platform-tests<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%2F%2B%2Fmaster%2Fdocs%2Ftesting%2Fweb_platform_tests.md&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=akUlWNqeA4RHrn6mQZIiW1LoAr1pkKJFdVhrvWNWSaQ%3D&reserved=0>? No Flag name --enable-blink-features=ConfirmationOfAction Requires code in //chrome? False Tracking bug https://bugs.chromium.org/p/chromium/issues/detail?id=1291098<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Fdetail%3Fid%3D1291098&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=BQUfSHBw3XVqZs6wSTImhJQd25aU%2Bc%2F5Y89lElQ6yAE%3D&reserved=0> Estimated milestones No milestones specified Link to entry on the Chrome Platform Status https://chromestatus.com/feature/5745430754230272<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2Ffeature%2F5745430754230272&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663462541%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=7nj2NaJ%2FGA9kC8wyOm0R4%2F5Qaoo6eE0nNupUWdErYvQ%3D&reserved=0> This intent message was generated by Chrome Platform Status<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2F&data=04%7C01%7CSara.Tang%40microsoft.com%7C773383cd75244918a82508da009cc969%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637822970663513114%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=LHugQqUWNGi2bSoWLBEnNpFbx4oF2SMSTJ2MvvlgFTI%3D&reserved=0>. -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/MN2PR00MB0685556DC6613E8B3FB43269F20A9%40MN2PR00MB0685.namprd00.prod.outlook.com.