Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2e1aa9ba4fc417f1dda845b0059d27efbd4a7c03
      
https://github.com/WebKit/WebKit/commit/2e1aa9ba4fc417f1dda845b0059d27efbd4a7c03
  Author: Tyler Wilcock <[email protected]>
  Date:   2026-01-13 (Tue, 13 Jan 2026)

  Changed paths:
    M Source/WebCore/accessibility/AXGeometryManager.cpp
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AXUtilities.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
    M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
    M Source/WebCore/loader/EmptyClients.cpp
    M Source/WebCore/loader/EmptyFrameLoaderClient.h
    M Source/WebCore/loader/LocalFrameLoaderClient.h
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h
    M 
Source/WebKit/WebProcess/WebCoreSupport/cocoa/WebLocalFrameLoaderClientCocoa.mm
    M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
    M Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
    M Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h

  Log Message:
  -----------
  AX: Add more debugging information for scenario where all content is 
inaccessible to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=305357
rdar://168035786

Reviewed by Joshua Hoffman.

Sometimes, all web content is entirely inaccessible to VoiceOver. There have 
been several variants of this issue, and
in one, our debugging information tells us there is no isolated tree. This 
commit improves on this debugging information
on several ways:

  - AXObjectCache::m_frameID being std::nullopt would've been one reason an 
isolated tree couldn't be returned. However,
    it should never actually be possible for it to be nullopt, thus the 
optional typing is removed to make it truly
    impossible at compile-time. This has the nice benefit of eliminating 
branches in many places.

  - The old logging didn't differentiate between there being no tree, and 
having a tree with no root. This is an important
    distinction, and the new logging makes it clear.

  - We now log a warning if the webpage doesn't have an isolated tree set, 
which could be one cause of these issues that
    we previously had no visibility into. This is added alongside a 
general-purpose warning infrastructure that we can
    add to over time.

  - We now log if isolated tree mode was off entirely.

  - We now log if the reason we don't have a root node is because we have a 
AXIsolatedTree::m_pendingRootNodeID and
    whether it can or cannot be hydrated into an actual object.

* Source/WebCore/accessibility/AXGeometryManager.cpp:
(WebCore::AXGeometryManager::cacheRectIfNeeded):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::getOrCreateIsolatedTree):
(WebCore::AXObjectCache::buildIsolatedTree):
(WebCore::AXObjectCache::updateLoadingProgress):
(WebCore::AXObjectCache::onPageActivityStateChange):
(WebCore::AXObjectCache::onScrollbarFrameRectChange):
(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::AXObjectCache::onPaint const):
(WebCore::AXObjectCache::onPaint):
(WebCore::AXObjectCache::treeData):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXTreeData::dumpToStderr const):
* Source/WebCore/accessibility/AXUtilities.cpp:
(WebCore::dumpAccessibilityTreeToStderr):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::storeTree):
(WebCore::AXIsolatedTree::unsafeHasObjectForID const):
(WebCore::AXIsolatedTree::pendingRootNodeID):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::treeForFrameID): Deleted.
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper _accessibilityPrintTrees]):
* Source/WebCore/loader/LocalFrameLoaderClient.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::getAccessibilityWebProcessDebugInfo):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:
* 
Source/WebKit/WebProcess/WebCoreSupport/cocoa/WebLocalFrameLoaderClientCocoa.mm:
(WebKit::WebLocalFrameLoaderClient::isolatedTree const):
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::getAccessibilityWebProcessDebugInfo):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
(-[WKAccessibilityWebPageObjectBase isolatedTree]):
* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::isolatedTree const):

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



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

Reply via email to