Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ef14489fb3cce238b351f770d8d69924b55292e1
      
https://github.com/WebKit/WebKit/commit/ef14489fb3cce238b351f770d8d69924b55292e1
  Author: Tyler Wilcock <[email protected]>
  Date:   2026-04-20 (Mon, 20 Apr 2026)

  Changed paths:
    A 
LayoutTests/accessibility/base-select-option-border-radius-path-expected.txt
    A LayoutTests/accessibility/base-select-option-border-radius-path.html
    A 
LayoutTests/accessibility/base-select-option-press-closes-popover-expected.txt
    A LayoutTests/accessibility/base-select-option-press-closes-popover.html
    A LayoutTests/accessibility/element-path-with-css-transforms-expected.txt
    A LayoutTests/accessibility/element-path-with-css-transforms.html
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/ios/TestExpectations
    M LayoutTests/resources/accessibility-helper.js
    M Source/WebCore/accessibility/AccessibilityListBoxOption.cpp
    M Source/WebCore/accessibility/AccessibilityListBoxOption.h
    M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
    M Source/WebCore/html/HTMLOptionElement.cpp
    M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
    M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
    M 
Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp
    M Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.h
    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
    M 
Tools/WebKitTestRunner/InjectedBundle/playstation/AccessibilityUIElementPlayStation.cpp
    M 
Tools/WebKitTestRunner/InjectedBundle/playstation/AccessibilityUIElementPlayStation.h
    M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp
    M Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.h

  Log Message:
  -----------
  AX: Fix base-select VoiceOver support: close popover on selection, fix 
accessibility path positioning when CSS transforms are present
https://bugs.webkit.org/show_bug.cgi?id=312627
rdar://175058883

Reviewed by Joshua Hoffman.

This commit fixes three accessibility bugs with appearance:base-select:

1. VoiceOver selection didn't close the popover. The mouse/keyboard paths
 both call hidePickerPopoverElement() after selecting an option, but the
 two accessibility paths (press via accessKeyAction, and setSelected) did
 not. Fixed by calling optionSelectedByUser() + hidePickerPopoverElement()
 in both paths for base-select.

2. AccessibilityListBoxOption inherited from AccessibilityNodeObject, whose
 renderer() always returns nullptr. This broke supportsPath(),
 elementPath(), and boundingBoxRect() for base-select options that have
 real renderers. Changed to inherit from AccessibilityRenderObject, which
 gracefully handles both cases (renderer present for base-select, absent
 for traditional listbox).

3. elementPath() positioned border-radius and clip-path accessibility paths
 using localToAbsolute() without MapCoordinatesMode::UseTransforms. For
 elements positioned purely via CSS transforms (e.g. a circular menu
 layout), all paths were placed at the same untransformed origin. This
 caused iOS VoiceOver's cursor to stay stuck at one position while
 navigating between menu items. Fixed by passing UseTransforms.

Also adds pathAsBounds to the test infrastructure. Existing utility function 
pathDescription
intentionally omits coordinates to avoid brittle tests, but that means it
can't verify path positioning. pathAsBounds returns the bounding rect of
the path, which is what we need to assert that CSS transforms are reflected
in the path origin.

* LayoutTests/accessibility/base-select-option-border-radius-path-expected.txt: 
Added.
* LayoutTests/accessibility/base-select-option-border-radius-path.html: Added.
* 
LayoutTests/accessibility/base-select-option-press-closes-popover-expected.txt: 
Added.
* LayoutTests/accessibility/base-select-option-press-closes-popover.html: Added.
* LayoutTests/accessibility/element-path-with-css-transforms-expected.txt: 
Added.
* LayoutTests/accessibility/element-path-with-css-transforms.html: Added.
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/resources/accessibility-helper.js:
* Source/WebCore/accessibility/AccessibilityListBoxOption.cpp:
(WebCore::AccessibilityListBoxOption::AccessibilityListBoxOption):
(WebCore::AccessibilityListBoxOption::create):
(WebCore::AccessibilityListBoxOption::elementRect const):
(WebCore::AccessibilityListBoxOption::setSelected):
* Source/WebCore/accessibility/AccessibilityListBoxOption.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::computePathForRenderBox):
(WebCore::AccessibilityRenderObject::elementPath const):
* Source/WebCore/html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::accessKeyAction):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::pathAsBounds const):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::AccessibilityUIElementAtspi::pathAsBounds const):
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.h:
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.h:
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElementIOS::pathAsBounds const):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h:
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElementMac::pathAsBounds const):
* 
Tools/WebKitTestRunner/InjectedBundle/playstation/AccessibilityUIElementPlayStation.cpp:
(WTR::AccessibilityUIElementPlayStation::pathAsBounds const):
* 
Tools/WebKitTestRunner/InjectedBundle/playstation/AccessibilityUIElementPlayStation.h:
* Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:
(WTR::AccessibilityUIElementWin::pathAsBounds const):
* Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.h:

Canonical link: https://commits.webkit.org/311587@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to