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