[webkit-changes] [WebKit/WebKit] 0aca7b: AX: After dynamic page changes, WebKit can report ...

Tyler Wilcock noreply at github.com
Sat Feb 22 15:44:42 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0aca7bdaf628ee0b9ddf5d444df66f14e3dbd515
      https://github.com/WebKit/WebKit/commit/0aca7bdaf628ee0b9ddf5d444df66f14e3dbd515
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2025-02-22 (Sat, 22 Feb 2025)

  Changed paths:
    A LayoutTests/accessibility/mac/dynamic-empty-group-expected.txt
    A LayoutTests/accessibility/mac/dynamic-empty-group.html
    M Source/WebCore/accessibility/AXCoreObject.cpp
    M Source/WebCore/accessibility/AXCoreObject.h
    M Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm
    M Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
    M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

  Log Message:
  -----------
  AX: After dynamic page changes, WebKit can report the wrong AXEmptyGroup subrole state to assistive technologies
https://bugs.webkit.org/show_bug.cgi?id=288215
rdar://145306055

Reviewed by Chris Fleizach.

We cache AXProperty::SubrolePlatformString, but never update it after dynamic page changes, meaning we can return
a stale value when considering AXEmptyGroup, which is dependent on whether an object has unignored children.

This was never a problem prior to ENABLE(INCLUDE_IGNORED_IN_CORE_TREE), as anytime an object's unignored chlidren changed,
we created a whole new node change for it. But with this feature, we no longer do that, since each object's unignored
children is dependent on arbitrary layers of descendants underneath it.

Fix this by computing isEmptyGroup lazily off the main-thread, ensuring we never use stale information.

* LayoutTests/accessibility/mac/dynamic-empty-group-expected.txt: Added.
* LayoutTests/accessibility/mac/dynamic-empty-group.html: Added.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::isValidChildForTable):
(WebCore::AXCoreObject::unignoredChildren):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXCoreObject::onlyAddsUnignoredChildren const):
* Source/WebCore/accessibility/AXSearchManager.cpp:
(WebCore::appendChildrenToArray):
* Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm:
(WebCore::renderWidgetChildren):
(WebCore::AXCoreObject::isEmptyGroup):
* Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:
(WebCore::AccessibilityObject::subrolePlatformString const):
(WebCore::isEmptyGroup): Deleted.
(WebCore::renderWidgetChildren): Deleted.
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(subroleString):

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



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


More information about the webkit-changes mailing list