Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6a44b38c10d068df677abf94c3f1d96e75fefb7a
https://github.com/WebKit/WebKit/commit/6a44b38c10d068df677abf94c3f1d96e75fefb7a
Author: Tyler Wilcock <[email protected]>
Date: 2024-10-28 (Mon, 28 Oct 2024)
Changed paths:
M
LayoutTests/accessibility/mac/attributed-string-with-listitem-multiple-lines.html
M LayoutTests/accessibility/mac/ruby-hierarchy-roles-expected.txt
M LayoutTests/accessibility/mac/ruby-hierarchy-roles.html
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AccessibilityMathMLElement.cpp
M Source/WebCore/accessibility/AccessibilityMathMLElement.h
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
M Source/WebCore/accessibility/AccessibilityNodeObject.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.h
M Source/WebCore/accessibility/AccessibilityScrollView.h
M Source/WebCore/accessibility/AccessibilityTable.cpp
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/style/StyleTreeResolver.cpp
Log Message:
-----------
AX: Default to walking the DOM rather than the render tree when building the
accessibility tree
https://bugs.webkit.org/show_bug.cgi?id=281749
rdar://138184652
Reviewed by Chris Fleizach.
Walking the DOM rather than the render tree allows many simplifications to our
code. Before this
patch, we had several display:contents special cases scattered throughout the
code that are no longer
needed:
1. AccessibilityRenderObject::addNodeOnlyChildren() added display:contents
children to the right
place in an object's render-tree children retroactively. This function is
now unnecessary —
we get this property for free by walking the DOM to build the AX tree.
2. AccessibilityObject::insertChild had a special case to prevent
double-insertion of display:contents children.
3. AccessibilityRenderObject::addCanvasChildren() only existed because canvas
descendants are not rendered,
and thus not picked up by a render tree walk. This function is now removed.
4. Numerous other more minor checks throughout the code that only existed
because we had to deal with
anonymous renderers are removed.
The flip side of this is that we don't get "interesting" anonymous renderers
for free anymore, e.g.
list markers, CSS ::before and CSS ::after, mfenced element `open`, `close`,
`separators` anonymous
renderers. This is still a great tradeoff, as there are far more uninteresting
anonymous renderers
than there are interesting ones.
I tried to apply this change to USE(ATSPI) ports, but there are GTK tests that
expect the presence of certain
anonymous renderers that I'm not sure we can outright remove (e.g. those in
accessibility/gtk/replaced-objects-in-anonymous-blocks.html).
I filed a follow-up bug (https://bugs.webkit.org/show_bug.cgi?id=282117) to
track this, more details are there.
Another important aspect of this change is the addition of
AXObjectCache::onStyleChange. We have accessibility
properties cached based on element styles that never get updated, and the
addition of this function gives us the
framework for starting to fix those.
* LayoutTests/accessibility/mac/ruby-hierarchy-roles-expected.txt:
* LayoutTests/accessibility/mac/ruby-hierarchy-roles.html:
Remove an else block from this test that only existed due to a useless
anonymous renderer child.
* Source/WebCore/accessibility/AXCoreObject.h:
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::createObjectFromRenderer):
(WebCore::AXObjectCache::getOrCreate):
(WebCore::AXObjectCache::handleChildrenChanged):
(WebCore::AXObjectCache::onStyleChange):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityMathMLElement.cpp:
(WebCore::AccessibilityMathMLElement::addChildren):
* Source/WebCore/accessibility/AccessibilityMathMLElement.h:
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::parentObject const):
(WebCore::AccessibilityNodeObject::addChildren):
(WebCore::shouldUseAccessibilityObjectInnerText):
(WebCore::AccessibilityNodeObject::parentObjectIfExists const): Deleted.
* Source/WebCore/accessibility/AccessibilityNodeObject.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::insertChild):
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::parentInCoreTree const):
(WebCore::AccessibilityObject::parentObjectIfExists const): Deleted.
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::parentObject const):
(WebCore::AccessibilityRenderObject::textUnderElement const):
(WebCore::AccessibilityRenderObject::shouldGetTextFromNode const):
(WebCore::AccessibilityRenderObject::boundingBoxRect const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
(WebCore::AccessibilityRenderObject::markerRenderer const):
(WebCore::AccessibilityRenderObject::addListItemMarker):
(WebCore::AccessibilityRenderObject::addChildren):
(WebCore::AccessibilityRenderObject::parentObjectIfExists const): Deleted.
(WebCore::AccessibilityRenderObject::addCanvasChildren): Deleted.
(WebCore::AccessibilityRenderObject::addNodeOnlyChildren): Deleted.
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilityScrollView.h:
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::addChildren):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper detailParentForSummaryObject:]):
(-[WebAccessibilityObjectWrapper accessibilitySupportsARIAExpanded]):
(-[WebAccessibilityObjectWrapper accessibilityIsExpanded]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateChildren):
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveComposedTree):
Canonical link: https://commits.webkit.org/285807@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes