RESOLVED FIXED 155034
AX: Implement missing/different accessibility API mappings for SVG
https://bugs.webkit.org/show_bug.cgi?id=155034
Summary AX: Implement missing/different accessibility API mappings for SVG
Joanmarie Diggs
Reported 2016-03-04 13:00:40 PST
The SVG Accessibility API Mappings spec [1] differs from the Core Accessibility API Mappings spec [2] in several areas, including: * Inclusion in/Exclusion from the accessibility tree * Sources and priority of text for the accessible name and accessible description mappings * SVG-specific roles As a result, quite a few of the tests to verify implementation [3] fail in WebKit. [1] https://rawgit.com/w3c/aria/master/svg-aam/svg-aam.html [2] https://rawgit.com/w3c/aria/master/core-aam/core-aam.html [3] https://www.w3.org/wiki/SVG_Accessibility/Testing/Test_Assertions
Attachments
Patch (115.62 KB, patch)
2016-03-04 13:23 PST, Joanmarie Diggs
no flags
Patch (112.48 KB, patch)
2016-03-04 14:40 PST, Joanmarie Diggs
no flags
Patch (115.70 KB, patch)
2016-03-05 01:27 PST, Joanmarie Diggs
no flags
Patch (115.61 KB, patch)
2016-03-05 01:38 PST, Joanmarie Diggs
no flags
Archive of layout-test-results from ews115 for mac-yosemite (1.46 MB, application/zip)
2016-03-05 02:45 PST, Build Bot
no flags
Patch (115.74 KB, patch)
2016-03-05 03:06 PST, Joanmarie Diggs
no flags
Radar WebKit Bug Importer
Comment 1 2016-03-04 13:03:24 PST
Joanmarie Diggs
Comment 2 2016-03-04 13:23:50 PST
Joanmarie Diggs
Comment 3 2016-03-04 14:40:05 PST
Joanmarie Diggs
Comment 4 2016-03-04 15:58:42 PST
Chris: When you get a chance, could you please review this? Thanks!
chris fleizach
Comment 5 2016-03-04 18:16:46 PST
Comment on attachment 273045 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=273045&action=review > Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1997 > + if (role == PresentationalRole && !is<AccessibilitySVGElement>(*this) && supportsARIAAttributes()) can AccessibilitySVGElement just override determineAriaRoleAttribute? > Source/WebCore/accessibility/AccessibilityObject.h:523 > + virtual bool isSVGElement() const { return false; } do we need both of these methods? isAccessibilitySVGElement and isSVGElement > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:126 > + if (target) if (AccessibilityObject* target = targetForUseElement()) return target->... > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:151 > + String describedBy = ariaDescribedByAttribute(); this looks like it duplicates the accessibility description in helpText. I think that will end up double speaking many things > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:169 > + return target->helpText(); this looks ok > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:245 > + svgTextualElementParents.get().add(SVGNames::textTag); since there's only one tag name, it seems like we can avoid the overhead of making a static hash
Joanmarie Diggs
Comment 6 2016-03-05 01:27:25 PST
Joanmarie Diggs
Comment 7 2016-03-05 01:38:25 PST
Joanmarie Diggs
Comment 8 2016-03-05 02:00:00 PST
I'm still waiting for EWS to complete before asking for review again. In the meantime: (In reply to comment #5) > > Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1997 > > + if (role == PresentationalRole && !is<AccessibilitySVGElement>(*this) && supportsARIAAttributes()) > > can AccessibilitySVGElement just override determineAriaRoleAttribute? Yes. Done. > > Source/WebCore/accessibility/AccessibilityObject.h:523 > > + virtual bool isSVGElement() const { return false; } > > do we need both of these methods? isAccessibilitySVGElement and isSVGElement No we don't. Removed the latter. > > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:126 > > + if (target) > > if (AccessibilityObject* target = targetForUseElement()) > return target->... Thanks. Done. > > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:151 > > + String describedBy = ariaDescribedByAttribute(); > > this looks like it duplicates the accessibility description in helpText. I > think that will end up double speaking many things This one I need clarification on. I haven't changed the code (yet) in response to your observation. What I have done, however, is modified the output of the name and description tests so that they always output AXTitle, AXDescription, and (on the mac only) AXHelp. That way we can see if there are duplicate exposures which would be, I assume, the source of any double speaking. I'm not seeing duplicates. > > Source/WebCore/accessibility/AccessibilitySVGElement.cpp:245 > > + svgTextualElementParents.get().add(SVGNames::textTag); > > since there's only one tag name, it seems like we can avoid the overhead of > making a static hash Done. Thanks for the review!
Build Bot
Comment 9 2016-03-05 02:45:33 PST
Comment on attachment 273079 [details] Patch Attachment 273079 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/925982 New failing tests: accessibility/w3c-svg-elements-not-exposed.html accessibility/w3c-svg-roles.html accessibility/svg-labelledby.html accessibility/w3c-svg-presentational-role.html accessibility/container-node-delete-causes-crash.html accessibility/svg-group-element-with-title.html accessibility/mac/media-role-descriptions.html accessibility/w3c-svg-name-calculation.html accessibility/svg-bounds.html accessibility/w3c-svg-description-calculation.html
Build Bot
Comment 10 2016-03-05 02:45:36 PST
Created attachment 273081 [details] Archive of layout-test-results from ews115 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-yosemite Platform: Mac OS X 10.10.5
Joanmarie Diggs
Comment 11 2016-03-05 03:06:48 PST
WebKit Commit Bot
Comment 12 2016-03-05 13:35:49 PST
Comment on attachment 273082 [details] Patch Clearing flags on attachment: 273082 Committed r197616: <http://trac.webkit.org/changeset/197616>
WebKit Commit Bot
Comment 13 2016-03-05 13:35:53 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.