Summary: | [ATK] Object attributes are missing for ARIA live region roles | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Joanmarie Diggs <jdiggs> | ||||||||||
Component: | Accessibility | Assignee: | Joanmarie Diggs <jdiggs> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | aboxhall, apinheiro, buildbot, cfleizach, commit-queue, dmazzoni, jcraig, samuel_white, webkit-bug-importer | ||||||||||
Priority: | P2 | Keywords: | InRadar | ||||||||||
Version: | WebKit Nightly Build | ||||||||||||
Hardware: | All | ||||||||||||
OS: | All | ||||||||||||
Attachments: |
|
Description
Joanmarie Diggs
2017-04-22 16:10:13 PDT
Created attachment 321486 [details]
Patch
As indicated in the updated summary/title: Turns out we're not exposing any live region attributes to ATK. Attached patch solves that. I'll tackle the missing events in a subsequent bug. Comment on attachment 321486 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=321486&action=review > Source/WebCore/accessibility/AccessibilityObject.cpp:2510 > + return const_cast<AccessibilityObject*>(AccessibilityObject::matchedParent(*this, false, [] (const AccessibilityObject& object) { what if ariaLiveRegionAncestor also considered "this". then we can probably write bool AccessibilityObject::isInsideARIALiveRegion() const { return ariaLiveRegionAncestor() } and it looks like some of your GTK code could be combined instead of having separating paths for ancestor and this aria live region status Created attachment 321553 [details]
Patch
> what if ariaLiveRegionAncestor also considered "this". then we can probably > write > > bool AccessibilityObject::isInsideARIALiveRegion() const { > return ariaLiveRegionAncestor() > } Done. > and it looks like some of your GTK code could be combined instead of having > separating paths for ancestor and this aria live region status Sorta done. Sadly, the current mappings are less than ideal (and pre-date my involvement), but they are what's in the Core AAM. And they specify exposure in slightly different ways depending on whether the element is the live region or a descendant of the live region. Anyway, I tried to combine things, and where the separate paths were still needed, I added comments to hopefully makes it clear why. Related to the above changes: In the original patch, I was actually using the value returned by ariaLiveRegionStatus() deliberately, because on my platform, even disabled/off live regions need to be treated as live regions as far as mapping/exposure of properties is concerned. WebCore only treats elements as supporting live regions if they are enabled/{polite,assertive}. So using ariaLiveRegionAncestor() for the current element rather than the status requires it (be able to) treat disabled/off live regions as live regions. I assume what's in WebCore now was done for your platform's needs, so I added the optional argument excludeIfOff defaulting to true to not change existing behavior. If I'm wrong about my assumptions, please let me know. Thanks again! Created attachment 321582 [details]
Patch
Created attachment 321633 [details]
Patch
Comment on attachment 321633 [details] Patch Clearing flags on attachment: 321633 Committed r222433: <http://trac.webkit.org/changeset/222433> All reviewed patches have been landed. Closing bug. |