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