Skip to content
  • cfleizach@apple.com's avatar
    AX: The bounding paths should be made available through accessibility · 81f8cd51
    cfleizach@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=113817
    
    Reviewed by David Kilzer.
    
    Source/WebCore: 
    
    This allows bounding paths to be returned for some web elements (image map areas and SVG shapes).
    This provides more accuracy when assistive technologies highlight elements.
    The Mac and iOS platforms share some code to help transform paths to their screen coordinates.
    
    Tests: platform/iphone-simulator/accessibility/element-paths.html
           platform/mac/accessibility/element-paths.html
    
    * accessibility/AccessibilityImageMapLink.cpp:
    (WebCore::AccessibilityImageMapLink::imageMapLinkRenderer):
    (WebCore):
    (WebCore::AccessibilityImageMapLink::elementPath):
    (WebCore::AccessibilityImageMapLink::elementRect):
    * accessibility/AccessibilityImageMapLink.h:
    (AccessibilityImageMapLink):
    (WebCore::AccessibilityImageMapLink::supportsPath):
    * accessibility/AccessibilityObject.h:
    (WebCore::AccessibilityObject::elementPath):
    (WebCore::AccessibilityObject::supportsPath):
    * accessibility/AccessibilityRenderObject.cpp:
    (WebCore):
    (WebCore::AccessibilityRenderObject::supportsPath):
    (WebCore::AccessibilityRenderObject::elementPath):
    * accessibility/AccessibilityRenderObject.h:
    (AccessibilityRenderObject):
    * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
    (-[WebAccessibilityObjectWrapper _accessibilityPath]):
    (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
    (-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]):
    (-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
    (-[WebAccessibilityObjectWrapper accessibilityFrame]):
    (-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
    * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
    (WebCore):
    * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
    (PathConversionInfo):
    (ConvertPathToScreenSpaceFunction):
    (-[WebAccessibilityObjectWrapperBase convertPathToScreenSpace:]):
    (-[WebAccessibilityObjectWrapperBase convertPointToScreenSpace:]):
    * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
    (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
    (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
    (WebTransformCGPathToNSBezierPath):
    (-[WebAccessibilityObjectWrapper bezierPathFromPath:]):
    (-[WebAccessibilityObjectWrapper path]):
    (-[WebAccessibilityObjectWrapper position]):
    (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
    
    Tools: 
    
    Add a pathDescription property for testing so that it's possible
    to verify that a path is being returned correctly.
    
    * DumpRenderTree/AccessibilityUIElement.cpp:
    (getPathDescriptionCallback):
    (AccessibilityUIElement::pathDescription):
    (AccessibilityUIElement::getJSClass):
    * DumpRenderTree/AccessibilityUIElement.h:
    (AccessibilityUIElement):
    * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
    (_CGPathEnumerationIteration):
    (AccessibilityUIElement::pathDescription):
    * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
    (AccessibilityUIElement::pathDescription):
    * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
    (WTR::AccessibilityUIElement::pathDescription):
    (WTR):
    * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
    (AccessibilityUIElement):
    * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
    * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
    (WTR::AccessibilityUIElement::pathDescription):
    (WTR):
    
    LayoutTests: 
    
    Add new tests for Mac and iOS to verify that path output works.
    Modify existing tests to indicate that there is a new AXAttribute, AXPath.
    
    * platform/iphone-simulator/accessibility/element-paths-expected.txt: Added.
    * platform/iphone-simulator/accessibility/element-paths.html: Added.
    * platform/mac/accessibility/document-links-expected.txt:
    * platform/mac/accessibility/element-paths-expected.txt: Added.
    * platform/mac/accessibility/element-paths.html: Added.
    * platform/mac/accessibility/image-map2-expected.txt:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148033 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    81f8cd51