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

Reply via email to