Changeset 197616 in webkit
- Timestamp:
- Mar 5, 2016, 1:35:57 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 21 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r197611 r197616 1 2016-03-05 Joanmarie Diggs <jdiggs@igalia.com> 2 3 AX: Implement missing/different accessibility API mappings for SVG 4 https://bugs.webkit.org/show_bug.cgi?id=155034 5 6 Reviewed by Chris Fleizach. 7 8 * accessibility/svg-group-element-with-title.html: Modified to reflect correct ATK results. 9 * accessibility/svg-image.html: Modified to reflect correct ATK results. 10 * accessibility/svg-labelledby.html: Modified to reflect correct ATK results. 11 * accessibility/svg-remote-element.html: Modified to reflect correct ATK results. 12 * accessibility/w3c-svg-description-calculation.html: Added. 13 * accessibility/w3c-svg-elements-not-exposed.html: Added. 14 * accessibility/w3c-svg-name-calculation.html: Added. 15 * accessibility/w3c-svg-presentational-role.html: Added. 16 * accessibility/w3c-svg-roles.html: Added. 17 * platform/gtk/accessibility/svg-group-element-with-title-expected.txt: Added. 18 * platform/gtk/accessibility/svg-image-expected.txt: Added. 19 * platform/gtk/accessibility/svg-labelledby-expected.txt: Added. 20 * platform/gtk/accessibility/svg-remote-element-expected.txt: Added. 21 * platform/gtk/accessibility/w3c-svg-description-calculation-expected.txt: Added. 22 * platform/gtk/accessibility/w3c-svg-elements-not-exposed-expected.txt: Added. 23 * platform/gtk/accessibility/w3c-svg-name-calculation-expected.txt: Added. 24 * platform/gtk/accessibility/w3c-svg-presentational-role-expected.txt: Added. 25 * platform/gtk/accessibility/w3c-svg-roles-expected.txt: Added. 26 * platform/mac/accessibility/w3c-svg-description-calculation-expected.txt: Added. 27 * platform/mac/accessibility/w3c-svg-elements-not-exposed-expected.txt: Added. 28 * platform/mac/accessibility/w3c-svg-name-calculation-expected.txt: Added. 29 * platform/mac/accessibility/w3c-svg-presentational-role-expected.txt: Added. 30 * platform/mac/accessibility/w3c-svg-roles-expected.txt: Added. 31 1 32 2016-03-04 Ryosuke Niwa <rniwa@webkit.org> 2 33 -
trunk/LayoutTests/accessibility/svg-group-element-with-title.html
r168313 r197616 25 25 var group1 = accessibilityController.accessibleElementById("group1"); 26 26 shouldBe("group1.role", "'AXRole: AXGroup'"); 27 shouldBe("group1.description", "'AXDescription: SVG TITLE 1'"); 27 if (accessibilityController.platformName == "atk") 28 shouldBe("group1.title", "'AXTitle: SVG TITLE 1'"); 29 else 30 shouldBe("group1.description", "'AXDescription: SVG TITLE 1'"); 28 31 29 32 debug("\nVerify that you can hit-test to the SVG group."); -
trunk/LayoutTests/accessibility/svg-image.html
r155274 r197616 28 28 var svgImage = accessibilityController.focusedElement; 29 29 shouldBe("svgImage.role", "realImage.role"); 30 shouldBe("svgImage.description", "realImage.description"); 30 if (accessibilityController.platformName == "atk") 31 shouldBe("svgImage.title", "realImage.title"); 32 else 33 shouldBe("svgImage.description", "realImage.description"); 31 34 32 35 debug("SVG Image Role: " + svgImage.role); 33 debug("SVG Image Description: " + svgImage.description); 36 if (accessibilityController.platformName == "atk") 37 debug("SVG Image Title: " + svgImage.title); 38 else 39 debug("SVG Image Description: " + svgImage.description); 34 40 } 35 41 -
trunk/LayoutTests/accessibility/svg-labelledby.html
r166917 r197616 29 29 if (window.accessibilityController) { 30 30 var image = accessibilityController.accessibleElementById("Sudan"); 31 debug("SVG Element: " + image.description); 31 if (accessibilityController.platformName == "atk") 32 debug("SVG Element: " + image.title); 33 else 34 debug("SVG Element: " + image.description); 32 35 } 33 36 -
trunk/LayoutTests/accessibility/svg-remote-element.html
r155274 r197616 22 22 } 23 23 24 function label(axElement) { 25 return accessibilityController.platformName == "atk" ? axElement.title : axElement.description; 26 } 27 24 28 function runAXTest() { 25 29 var container = accessibilityController.accessibleElementById("svg-image"); … … 32 36 var face = container.childAtIndex(0); 33 37 debug('Face role: ' + face.role); 34 debug('Face label: ' + face.description);38 debug('Face label: ' + label(face)); 35 39 debug('FaceX: ' + (pageX(face) - x)); 36 40 debug('FaceY: ' + Math.abs(pageY(face) - y)); … … 39 43 var eye = container.childAtIndex(1); 40 44 debug('Eye role: ' + eye.role); 41 debug('Eye label: ' + eye.description);45 debug('Eye label: ' + label(eye)); 42 46 debug('EyeX: ' + (pageX(eye) - x)); 43 47 debug('EyeY: ' + Math.abs(pageY(eye) - y)); … … 46 50 var nose = container.childAtIndex(3); 47 51 debug('Nose role: ' + nose.role); 48 debug('Nose label: ' + nose.description);52 debug('Nose label: ' + label(nose)); 49 53 debug('NoseX: ' + (pageX(nose) - x)); 50 54 debug('NoseY: ' + Math.abs(pageY(nose) - y)); … … 53 57 var mouth = container.childAtIndex(4); 54 58 debug('Mouth role: ' + mouth.role); 55 debug('Mouth label: ' + mouth.description);59 debug('Mouth label: ' + label(mouth)); 56 60 debug('MouthX: ' + (pageX(mouth) - x)); 57 61 debug('MouthY: ' + Math.floor(Math.abs(pageY(mouth) - y))); -
trunk/Source/WebCore/CMakeLists.txt
r197611 r197616 1061 1061 accessibility/AccessibilityProgressIndicator.cpp 1062 1062 accessibility/AccessibilityRenderObject.cpp 1063 accessibility/AccessibilitySVGElement.cpp 1063 1064 accessibility/AccessibilitySVGRoot.cpp 1064 1065 accessibility/AccessibilityScrollView.cpp -
trunk/Source/WebCore/ChangeLog
r197614 r197616 1 2016-03-05 Joanmarie Diggs <jdiggs@igalia.com> 2 3 AX: Implement missing/different accessibility API mappings for SVG 4 https://bugs.webkit.org/show_bug.cgi?id=155034 5 6 Reviewed by Chris Fleizach. 7 8 Create an AccessibilitySVGElement class for the SVG-specific mappings; 9 fix name and description mappings for ATK; add new AccessibilityRole 10 types (SVGTextRole, SVGTSpanRole, SVGTextPathRole) and map them for 11 ATK and AX API. 12 13 Tests: accessibility/w3c-svg-description-calculation.html 14 accessibility/w3c-svg-elements-not-exposed.html 15 accessibility/w3c-svg-name-calculation.html 16 accessibility/w3c-svg-presentational-role.html 17 accessibility/w3c-svg-roles.html 18 19 * CMakeLists.txt: 20 * WebCore.xcodeproj/project.pbxproj: 21 * accessibility/AXObjectCache.cpp: 22 (WebCore::createFromRenderer): 23 * accessibility/AccessibilityAllInOne.cpp: 24 * accessibility/AccessibilityNodeObject.cpp: 25 (WebCore::AccessibilityNodeObject::alternativeText): Deleted. 26 (WebCore::AccessibilityNodeObject::accessibilityDescription): Deleted. 27 * accessibility/AccessibilityObject.h: 28 (WebCore::AccessibilityObject::isAccessibilitySVGElement): 29 * accessibility/AccessibilityRenderObject.cpp: 30 (WebCore::AccessibilityRenderObject::determineAccessibilityRole): Deleted. 31 * accessibility/AccessibilitySVGElement.cpp: Added. 32 (WebCore::AccessibilitySVGElement::AccessibilitySVGElement): 33 (WebCore::AccessibilitySVGElement::~AccessibilitySVGElement): 34 (WebCore::AccessibilitySVGElement::create): 35 (WebCore::AccessibilitySVGElement::targetForUseElement): 36 (WebCore::AccessibilitySVGElement::accessibilityText): 37 (WebCore::AccessibilitySVGElement::accessibilityDescription): 38 (WebCore::AccessibilitySVGElement::helpText): 39 (WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored): 40 (WebCore::AccessibilitySVGElement::inheritsPresentationalRole): 41 (WebCore::AccessibilitySVGElement::determineAriaRoleAttribute): 42 (WebCore::AccessibilitySVGElement::determineAccessibilityRole): 43 * accessibility/AccessibilitySVGElement.h: Added. 44 * accessibility/atk/WebKitAccessibleWrapperAtk.cpp: 45 (webkitAccessibleGetName): 46 (webkitAccessibleGetDescription): 47 (atkRole): 48 * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: 49 (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): 50 * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: 51 (createAccessibilityRoleMap): 52 * rendering/RenderObject.h: 53 (WebCore::RenderObject::isSVGTSpan): 54 * rendering/svg/RenderSVGTSpan.h: 55 1 56 2016-03-05 Yusuke Suzuki <utatane.tea@gmail.com> 2 57 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r197611 r197616 2504 2504 65E0E9441133C89F00B4CB10 /* JSDOMWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2505 2505 65FEA86909833ADE00BED4AB /* Page.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65FEA86809833ADE00BED4AB /* Page.cpp */; }; 2506 69A6CBAC1C6BE42C00B836E9 /* AccessibilitySVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 697101071C6BE1550018C7F1 /* AccessibilitySVGElement.cpp */; }; 2507 69A6CBAD1C6BE42C00B836E9 /* AccessibilitySVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 697101081C6BE1550018C7F1 /* AccessibilitySVGElement.h */; }; 2506 2508 6B3480940EEF50D400AC1B41 /* NativeImagePtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3480920EEF50D400AC1B41 /* NativeImagePtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2507 2509 6B693A2E1C51A82E00B03BEF /* ResourceLoadObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 10092 10094 65F80697054D9F86008BF776 /* BlockExceptions.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BlockExceptions.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 10093 10095 65FEA86809833ADE00BED4AB /* Page.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Page.cpp; sourceTree = "<group>"; }; 10096 697101071C6BE1550018C7F1 /* AccessibilitySVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySVGElement.cpp; sourceTree = "<group>"; }; 10097 697101081C6BE1550018C7F1 /* AccessibilitySVGElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySVGElement.h; sourceTree = "<group>"; }; 10094 10098 6B3480920EEF50D400AC1B41 /* NativeImagePtr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NativeImagePtr.h; sourceTree = "<group>"; }; 10095 10099 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadObserver.h; sourceTree = "<group>"; }; … … 16470 16474 29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */, 16471 16475 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */, 16476 697101071C6BE1550018C7F1 /* AccessibilitySVGElement.cpp */, 16477 697101081C6BE1550018C7F1 /* AccessibilitySVGElement.h */, 16472 16478 AAC08CF015F941FC00F1E188 /* AccessibilitySVGRoot.cpp */, 16473 16479 AAC08CF115F941FC00F1E188 /* AccessibilitySVGRoot.h */, … … 26266 26272 5185FC8B1BB4C4E80012898F /* IDBEventDispatcher.h in Headers */, 26267 26273 5185FC8D1BB4C4E80012898F /* IDBFactory.h in Headers */, 26274 51F41A721BA73B5B002E053B /* IDBFactoryBackendInterface.h in Headers */, 26275 69A6CBAD1C6BE42C00B836E9 /* AccessibilitySVGElement.h in Headers */, 26268 26276 510310501BA8CC03003329C0 /* IDBFactoryImpl.h in Headers */, 26269 26277 5185FC8F1BB4C4E80012898F /* IDBGetResult.h in Headers */, … … 30066 30074 FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */, 30067 30075 FDA15E9F12B03EE1003A583A /* JSAudioBufferSourceNode.cpp in Sources */, 30076 69A6CBAC1C6BE42C00B836E9 /* AccessibilitySVGElement.cpp in Sources */, 30068 30077 FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */, 30069 30078 FDA15EA512B03EE1003A583A /* JSAudioContext.cpp in Sources */, -
trunk/Source/WebCore/accessibility/AXObjectCache.cpp
r196853 r197616 46 46 #include "AccessibilityProgressIndicator.h" 47 47 #include "AccessibilityRenderObject.h" 48 #include "AccessibilitySVGElement.h" 48 49 #include "AccessibilitySVGRoot.h" 49 50 #include "AccessibilityScrollView.h" … … 81 82 #include "RenderTableRow.h" 82 83 #include "RenderView.h" 84 #include "SVGElement.h" 83 85 #include "ScrollView.h" 84 86 #include "TextBoundaries.h" … … 405 407 return AccessibilitySVGRoot::create(renderer); 406 408 409 if (is<SVGElement>(node)) 410 return AccessibilitySVGElement::create(renderer); 411 407 412 if (is<RenderBoxModelObject>(*renderer)) { 408 413 RenderBoxModelObject& cssBox = downcast<RenderBoxModelObject>(*renderer); -
trunk/Source/WebCore/accessibility/AccessibilityAllInOne.cpp
r187584 r197616 43 43 #include "AccessibilityProgressIndicator.cpp" 44 44 #include "AccessibilityRenderObject.cpp" 45 #include "AccessibilitySVGElement.cpp" 45 46 #include "AccessibilitySVGRoot.cpp" 46 47 #include "AccessibilityScrollView.cpp" -
trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
r195743 r197616 1321 1321 } 1322 1322 1323 // SVG elements all can have a <svg:title> element inside which should act as the descriptive text.1324 if (node->isSVGElement())1325 textOrder.append(AccessibilityText(downcast<SVGElement>(*node).title(), AlternativeText));1326 1327 1323 #if ENABLE(MATHML) 1328 1324 if (node->isMathMLElement()) … … 1507 1503 return alt; 1508 1504 } 1509 1510 // SVG elements all can have a <svg:title> element inside which should act as the descriptive text.1511 if (m_node && m_node->isSVGElement())1512 return downcast<SVGElement>(*m_node).title();1513 1505 1514 1506 #if ENABLE(MATHML) -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r195463 r197616 203 203 SystemWideRole, 204 204 SVGRootRole, 205 SVGTextRole, 206 SVGTSpanRole, 207 SVGTextPathRole, 205 208 TabGroupRole, 206 209 TabListRole, … … 466 469 virtual bool isAccessibilityScrollView() const { return false; } 467 470 virtual bool isAccessibilitySVGRoot() const { return false; } 471 virtual bool isAccessibilitySVGElement() const { return false; } 468 472 469 473 bool accessibilityObjectContainsText(String *) const; -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
r195463 r197616 2579 2579 return HeadingRole; 2580 2580 2581 if (m_renderer->isSVGImage())2582 return ImageRole;2583 2581 if (m_renderer->isSVGRoot()) 2584 2582 return SVGRootRole; 2585 if (node && node->hasTagName(SVGNames::gTag))2586 return GroupRole;2587 2583 2588 2584 if (isStyleFormatGroup()) -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
r195951 r197616 46 46 #include "HostWindow.h" 47 47 #include "RenderObject.h" 48 #include "SVGElement.h" 48 49 #include "Settings.h" 49 50 #include "TextIterator.h" … … 133 134 } 134 135 136 if (is<SVGElement>(coreObject->element())) { 137 Vector<AccessibilityText> textOrder; 138 coreObject->accessibilityText(textOrder); 139 140 for (const auto& text : textOrder) { 141 if (text.textSource != HelpText && text.textSource != SummaryText) 142 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, text.text); 143 } 144 // FIXME: This is to keep the next blocks from returning duplicate text. 145 // This behavior should be extended to all elements; not just SVG. 146 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, ""); 147 } 148 135 149 if (coreObject->isImage() || coreObject->isInputImage() || coreObject->isImageMap() || coreObject->isImageMapLink()) { 136 150 Node* node = coreObject->node(); … … 168 182 if (coreObject->isAccessibilityRenderObject()) 169 183 node = coreObject->node(); 184 185 if (is<SVGElement>(node)) { 186 Vector<AccessibilityText> textOrder; 187 coreObject->accessibilityText(textOrder); 188 189 for (const auto& text : textOrder) { 190 if (text.textSource == HelpText || text.textSource == SummaryText || text.textSource == TitleTagText) 191 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, text.text); 192 } 193 // FIXME: This is to keep the next blocks from returning duplicate text. 194 // This behavior should be extended to all elements; not just SVG. 195 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, ""); 196 } 197 170 198 if (!is<HTMLElement>(node) || coreObject->ariaRoleAttribute() != UnknownRole || coreObject->isImage()) 171 199 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, accessibilityDescription(coreObject)); … … 573 601 case GroupRole: 574 602 case RadioGroupRole: 603 case SVGRootRole: 575 604 case TabPanelRole: 576 605 return ATK_ROLE_PANEL; … … 621 650 case DivRole: 622 651 case PreRole: 652 case SVGTextRole: 623 653 return ATK_ROLE_SECTION; 624 654 case FooterRole: … … 697 727 #if ATK_CHECK_VERSION(2, 15, 2) 698 728 case InlineRole: 729 case SVGTextPathRole: 730 case SVGTSpanRole: 699 731 return ATK_ROLE_STATIC; 700 732 #endif -
trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
r196546 r197616 858 858 case SystemWideRole: 859 859 case SVGRootRole: 860 case SVGTextPathRole: 861 case SVGTextRole: 862 case SVGTSpanRole: 860 863 case TabGroupRole: 861 864 case TabListRole: -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
r196824 r197616 2182 2182 { DetailsRole, NSAccessibilityGroupRole }, 2183 2183 { SummaryRole, NSAccessibilityGroupRole }, 2184 { SVGTextPathRole, NSAccessibilityGroupRole }, 2185 { SVGTextRole, NSAccessibilityGroupRole }, 2186 { SVGTSpanRole, NSAccessibilityGroupRole }, 2184 2187 }; 2185 2188 AccessibilityRoleMap& roleMap = *new AccessibilityRoleMap; -
trunk/Source/WebCore/rendering/RenderObject.h
r197563 r197616 414 414 virtual bool isSVGText() const { return false; } 415 415 virtual bool isSVGTextPath() const { return false; } 416 virtual bool isSVGTSpan() const { return false; } 416 417 virtual bool isSVGInline() const { return false; } 417 418 virtual bool isSVGInlineText() const { return false; } -
trunk/Source/WebCore/rendering/svg/RenderSVGTSpan.h
r197563 r197616 39 39 void graphicsElement() const = delete; 40 40 const char* renderName() const override { return "RenderSVGTSpan"; } 41 bool isSVGTSpan() const override { return true; } 41 42 }; 42 43 } 43 44 45 SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGTSpan, isSVGTSpan()) 46 44 47 #endif // !RenderSVGTSpan_h
Note:
See TracChangeset
for help on using the changeset viewer.