Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 69bb8cb9c0309011f88a5736dd5fb4e4f83f75fe
https://github.com/WebKit/WebKit/commit/69bb8cb9c0309011f88a5736dd5fb4e4f83f75fe
Author: Tyler Wilcock <[email protected]>
Date: 2026-04-22 (Wed, 22 Apr 2026)
Changed paths:
A LayoutTests/accessibility/image-data-expected.txt
A LayoutTests/accessibility/image-data.html
M LayoutTests/accessibility/image-link-expected.txt
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/ios/TestExpectations
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/cocoa/CocoaAccessibilityConstants.h
M Source/WebCore/accessibility/cocoa/WebAccessibilityObjectWrapperBase.h
M Source/WebCore/accessibility/cocoa/WebAccessibilityObjectWrapperBase.mm
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.h
M Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
Log Message:
-----------
AX: Add the ability to get the RGBA representation of an image via the
accessibility API
https://bugs.webkit.org/show_bug.cgi?id=310322
rdar://172968062
Reviewed by Joshua Hoffman (OOPS\!).
Some ATs can benefit from being able to get the image data associated
with an accessibility object.
There was an earlier attempt at doing something similar in 307711@main,
but that was reverted because it's not safe to return PNGs outside the
web content process.
This implementation uses two new attributes:
- AXImageDataSize: a regular attribute returning native pixel dimensions
as NSValue (CGSize).
- AXImageData: a parameterized attribute taking an NSDictionary with
resize dimensions, format ("RGBA"), and optional subrect keys. Returns
raw uncompressed RGBA pixel data as NSData, satisfying the security
constraint of only allowing uncompressed pixels to egress from the
WebContent process.
The pixel data is capped at 4 million pixels (preserving aspect ratio)
to bound memory usage, and supports efficient partial fetches via
subrect extraction. Out-of-bounds subrects are clipped and zero-filled.
* LayoutTests/accessibility/image-data-expected.txt: Added.
* LayoutTests/accessibility/image-data.html: Added.
* LayoutTests/accessibility/image-link-expected.txt:
* LayoutTests/platform/glib/TestExpectations: Disable new test.
* LayoutTests/platform/ios/TestExpectations: Enable new test.
* Source/WebCore/accessibility/AXCoreObject.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::imageFromRenderer):
(WebCore::AccessibilityObject::imageDataSize const):
(WebCore::AccessibilityObject::imageData const):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityImageDataSize]):
(-[WebAccessibilityObjectWrapper _accessibilityImageDataWithParameters:]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::imageDataSize const):
(WebCore::AXIsolatedObject::imageData const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/mac/CocoaAccessibilityConstants.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(WebCore::imageDataParametersFromDictionary):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(handleImageDataSizeAttribute):
(createAttributeHandlerMap):
(-[WebAccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
(handleImageDataParameterizedAttribute):
(createParameterizedAttributeHandlerMap):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::imageDataSize const):
(WTR::AccessibilityUIElement::imageDataForParameters const):
(WTR::AccessibilityUIElement::imageDataForParametersWithFormat const):
(WTR::AccessibilityUIElement::imageDataForSubrect const):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.h:
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElementIOS::imageDataSize const):
(WTR::AccessibilityUIElementIOS::imageDataForParameters const):
(WTR::AccessibilityUIElementIOS::imageDataForParametersWithFormat const):
(WTR::AccessibilityUIElementIOS::imageDataForSubrect const):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h:
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::attributeValue):
(WTR::AccessibilityUIElementMac::imageDataSize const):
(WTR::AccessibilityUIElementMac::imageDataForParameters const):
(WTR::AccessibilityUIElementMac::imageDataForParametersWithFormat const):
(WTR::AccessibilityUIElementMac::imageDataForSubrect const):
Canonical link: https://commits.webkit.org/311801@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications