Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 10cf146df71dda384d82998189b436a8af1d04ed
https://github.com/WebKit/WebKit/commit/10cf146df71dda384d82998189b436a8af1d04ed
Author: Tyler Wilcock <[email protected]>
Date: 2026-05-07 (Thu, 07 May 2026)
Changed paths:
M LayoutTests/accessibility-isolated-tree/TestExpectations
M LayoutTests/accessibility/aria-owns-deep-chain-no-timeout.html
M LayoutTests/accessibility/element-reflection-ariaactivedescendant.html
M LayoutTests/accessibility/element-reflection-ariacontrols.html
M LayoutTests/accessibility/element-reflection-ariadetails.html
M LayoutTests/accessibility/element-reflection-ariaerrormessage.html
M LayoutTests/accessibility/element-reflection-ariaflowto.html
M LayoutTests/accessibility/element-reflection-ariaowns.html
M LayoutTests/accessibility/heading-level.html
M LayoutTests/accessibility/image-load-on-delay.html
M LayoutTests/accessibility/insert-text-into-password-field-expected.txt
M LayoutTests/accessibility/insert-text-into-password-field.html
M
LayoutTests/accessibility/mac/async-increment-decrement-action-expected.txt
M LayoutTests/accessibility/mac/async-increment-decrement-action.html
M LayoutTests/accessibility/roles-computedRoleString.html
M LayoutTests/accessibility/roles-exposed.html
M LayoutTests/accessibility/roles-table-and-cell.html
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
Log Message:
-----------
AX: Fix isolated tree mode test failures for sync actions, element-by-ID
lookup, and async tree updates
https://bugs.webkit.org/show_bug.cgi?id=314200
rdar://176364545
Reviewed by Dominic Mazzoni.
C++ Source changes:
- Add syncIncrement(), syncDecrement(), syncPress() to AXIsolatedObject that
use
performFunctionOnMainThreadAndWaitWithTimeout with InteractiveTimeout. The
regular
increment()/decrement() remain async (fire-and-forget) for real client use.
- WebAccessibilityObjectWrapperMac's accessibilityPerformAction: now calls
syncIncrement()/syncDecrement()/syncPress() directly for AXSync* action
variants
instead of going through the _accessibilityPerform*Action helpers.
- In test mode, AXProperty::IdentifierAttribute is now eagerly cached during
isolated tree
construction (for all objects, including ignored ones) and kept up-to-date
via IdAttributeChanged notifications.
This allows accessibleElementById to find elements by DOM ID without a
main-thread round-trip, avoiding the 25ms
timeout that failed when the main thread was busy (e.g. processing large
deferred cache updates as part of
deep-aria-owns-chain.html and most critically: client tests).
Tests that dynamically assigned IDs solely for lookup purposes
(roles-exposed, roles-computedRoleString,
roles-table-and-cell, heading-level) were updated to use static IDs
instead, since they weren't intending
to test dynamic ID behavior. Tests that intentionally test dynamic ID
changes (element-reflection-aria*)
use await waitForElementById to wait for the change to propagate.
- AXIsolatedObject::identifierAttribute(), in test mode only, now uses
callOnMainThreadAndWait
(no timeout) instead of the 25ms-timeout dispatch, which failed us in tests
that
caused the main-thread to do a lot of work (e.g.
aria-owns-deep-chain-no-timeout.html).
Test runner changes:
- AccessibilityUIElementMac::performAction uses executeOnAXThreadAndWait for
sync
actions (AXSync* prefix) so JS waits for the AX thread to complete the
action.
Test changes:
- insert-text-into-password-field: made async, uses expectAsync to wait for
value.
- image-load-on-delay: uses waitFor(() => childrenCount === 3) to explicitly
wait for
the condition we expect rather than hoping we get lucky with timing on a
setTimeout(0).
- async-increment-decrement-action: sync actions are now actually sync per
above. async actions
now use expectAsync to wait for values to propagate between operations.
- loading-iframe-sends-notification: marked [ Pass Failure ] in ITM
TestExpectations
due to a pre-existing cross-frame isolated tree bug (child frame's
AXObjectCache
doesn't reliably notify parent to re-fetch cross-frame children after load).
- keyevents-for-actions-mimic-real-key-events and
keyevents-posted-for-increment-actions: removed [ Failure ] expectation
since the
performAction sync fix makes them pass.
Overall, this fixes the following tests when run with ITM:
1. accessibility/aria-owns-deep-chain-no-timeout.html
2. accessibility/insert-text-into-password-field.html
3. accessibility/image-load-on-delay.html
4. accessibility/mac/async-increment-decrement-action.html
5. accessibility/keyevents-for-actions-mimic-real-key-events.html
6. accessibility/keyevents-posted-for-increment-actions.html
* LayoutTests/accessibility-isolated-tree/TestExpectations:
* LayoutTests/accessibility/aria-owns-deep-chain-no-timeout.html:
* LayoutTests/accessibility/image-load-on-delay.html:
* LayoutTests/accessibility/insert-text-into-password-field-expected.txt:
* LayoutTests/accessibility/insert-text-into-password-field.html:
* LayoutTests/accessibility/mac/async-increment-decrement-action-expected.txt:
* LayoutTests/accessibility/mac/async-increment-decrement-action.html:
* Source/WebCore/accessibility/AXCoreObject.h:
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::syncPress):
(WebCore::AXIsolatedObject::syncIncrement):
(WebCore::AXIsolatedObject::syncDecrement):
(WebCore::AXIsolatedObject::identifierAttribute const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElementMac::performAction const):
Canonical link: https://commits.webkit.org/312848@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications