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

Reply via email to