Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bf8ea4b7402a86e47e7734bd03d1d210ac4ae9d8
      
https://github.com/WebKit/WebKit/commit/bf8ea4b7402a86e47e7734bd03d1d210ac4ae9d8
  Author: Tyler Wilcock <[email protected]>
  Date:   2026-03-17 (Tue, 17 Mar 2026)

  Changed paths:
    A 
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame-expected.txt
    A 
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame.html
    A 
LayoutTests/http/tests/site-isolation/accessibility/resources/iframe-with-list-mock-parent-search.html
    M Source/WebCore/accessibility/AXCrossProcessSearch.cpp
    M Source/WebCore/accessibility/AXCrossProcessSearch.h
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl

  Log Message:
  -----------
  AX: VoiceOver next element searches loop when encountering the end of a 
container (e.g. a list) inside a site-isolated iframe
https://bugs.webkit.org/show_bug.cgi?id=309453
rdar://172029151

Reviewed by Joshua Hoffman.

When a cross-origin child frame performs an immediateDescendantsOnly search
(e.g. like VoiceOver when navigating the children of a ul), the parent frame
has nothing to contribute, as it's clearly not an immediate descendant. But
prior to this fix, we returned the results of the parent search, causing
VoiceOver to loop infinitely thinking the ul-container was never exhausted.

The fix is simple: skip the parent dispatch when immediateDescendantsOnly is 
set.

Add mock-parent-search testing infrastructure to verify this without real
cross-process IPC (which deadlocks in the test runner).

* 
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame-expected.txt:
 Added.
* 
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame.html:
 Added.
* 
LayoutTests/http/tests/site-isolation/accessibility/resources/iframe-with-list-mock-parent-search.html:
 Added.
* Source/WebCore/accessibility/AXCrossProcessSearch.cpp:
(WebCore::setShouldMockParentSearchResultsForTesting):
(WebCore::shouldMockParentSearchResultsForTesting):
(WebCore::performSearchWithParentCoordination):
* Source/WebCore/accessibility/AXCrossProcessSearch.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setShouldMockParentSearchResultsForTesting):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:

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



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

Reply via email to