Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bb58abdbbee5c361b465e1e99bc0eb921281f3f1
      
https://github.com/WebKit/WebKit/commit/bb58abdbbee5c361b465e1e99bc0eb921281f3f1
  Author: Joshua Hoffman <[email protected]>
  Date:   2026-01-26 (Mon, 26 Jan 2026)

  Changed paths:
    M Source/WebCore/accessibility/AXCoreObject.cpp
    M Source/WebCore/accessibility/AXCoreObject.h
    M Source/WebCore/accessibility/AXLocalFrame.cpp
    M Source/WebCore/accessibility/AXLocalFrame.h
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AXObjectCacheInlines.h
    M Source/WebCore/accessibility/AXRemoteFrame.cpp
    M Source/WebCore/accessibility/AXRemoteFrame.h
    M Source/WebCore/accessibility/AccessibilityObject.cpp
    M Source/WebCore/accessibility/AccessibilityObject.h
    M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
    M Source/WebCore/accessibility/AccessibilityScrollView.cpp
    M Source/WebCore/accessibility/AccessibilityScrollView.h
    M Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp
    M Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp
    M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
    M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

  Log Message:
  -----------
  AX: propagate aria-hidden state between (local) frames
https://bugs.webkit.org/show_bug.cgi?id=306057
rdar://168699629

Reviewed by Tyler Wilcock.

This patch lays the groundwork for propagating the aria-hidden state of an 
iframe to its
hosted frame/children, which live in a separate cache when 
ENABLE_ACCESSIBILITY_LOCAL_FRAME
is enabled. To do this, whenever the aria-hidden state of the FrameHost 
changes, we send
an update to the child frame (via its cache and root) so that it can store this 
state and
inherit it when computing isIgnored, despite being in a different AXObjectCache.

The above can happen with a direct call between caches for local frames. But, 
with site
isolation (and remote frames), this will need to happen via IPC. I have left 
comments in
the code where this needs to happen, and will follow up with a patch to 
implement those
messages.

This work is covered by the existing test, 
accessibility/mac/iframe-aria-hidden.html, which
passes after this PR with and without isolated tree mode enabled.

Since this patch doesn't implement support for inert and visibility 
propagation, tests
that involve those properties will become broken 
(accessibility/iframe-content-inert.html
and accessibility/iframe-content-visibility.html) only when the
ENABLE_ACCESSIBILITY_LOCAL_FRAME flag is set to 1. But, those will be resolved 
by follow-
up patches.

* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::contents):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXCoreObject::isScrollArea const):
(WebCore::AXCoreObject::axScrollView const):
(WebCore::AXCoreObject::isScrollView const): Deleted.
* Source/WebCore/accessibility/AXLocalFrame.cpp:
(WebCore::AXLocalFrame::computeIsIgnored const):
* Source/WebCore/accessibility/AXLocalFrame.h:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::rootWebArea):
(WebCore::AXObjectCache::objectBecameIgnored):
(WebCore::AXObjectCache::objectBecameUnignored):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AXObjectCacheInlines.h:
(WebCore::AXObjectCache::objectBecameIgnored): Deleted.
(WebCore::AXObjectCache::objectBecameUnignored): Deleted.
* Source/WebCore/accessibility/AXRemoteFrame.cpp:
(WebCore::AXRemoteFrame::computeIsIgnored const):
* Source/WebCore/accessibility/AXRemoteFrame.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::language const):
(WebCore::AccessibilityObject::scrollToMakeVisible const):
(WebCore::AccessibilityObject::scrollToMakeVisibleWithSubFocus const):
(WebCore::AccessibilityObject::scrollToGlobalPoint const):
(WebCore::AccessibilityObject::isIgnoredWithoutCache const):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::getScrollableAreaIfScrollable const):
* Source/WebCore/accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::isRoot const):
(WebCore::AccessibilityScrollView::updateScrollbars):
(WebCore::AccessibilityScrollView::determineAccessibilityRole):
(WebCore::AccessibilityScrollView::computeIsIgnored const):
(WebCore::AccessibilityScrollView::addLocalFrameChild):
(WebCore::AccessibilityScrollView::addRemoteFrameChild):
(WebCore::AccessibilityScrollView::addChildren):
(WebCore::AccessibilityScrollView::parentObject const):
(WebCore::AccessibilityScrollView::isAXHidden const):
(WebCore::AccessibilityScrollView::isARIAHidden const):
(WebCore::AccessibilityScrollView::updateHostedFrameInheritedState):
* Source/WebCore/accessibility/AccessibilityScrollView.h:
(WebCore::InheritedFrameState::InheritedFrameState):
(isType):
* Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp:
(WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):
* Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::scrollToMakeVisible const):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityContainer]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::createEmptyContent):
(WebCore::createIsolatedObjectData):
* Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:
(WebCore::appendPlatformProperties):
(WebCore::AXIsolatedObject::remoteParent const):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(children):
(scrollViewParent):
(-[WebAccessibilityObjectWrapper _accessibilityShowContextMenu]):
(-[WebAccessibilityObjectWrapper 
_accessibilityChildrenFromIndex:maxCount:returnPlatformElements:]):

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



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

Reply via email to