Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 329677707e9488c112f38b66eb9f94ced7a3d607
https://github.com/WebKit/WebKit/commit/329677707e9488c112f38b66eb9f94ced7a3d607
Author: Andres Gonzalez <[email protected]>
Date: 2023-10-24 (Tue, 24 Oct 2023)
Changed paths:
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
Log Message:
-----------
AX: AXIsolatedTree::createEmptyContent takes too long.
https://bugs.webkit.org/show_bug.cgi?id=263403
<rdar://problem/117224271>
Reviewed by Chris Fleizach and Tyler Wilcock.
The first cause of this method being slow is the calculation of the
DocumentLinks property for the WebArea. That causes a traversal of the entire
DOM tree. This property should return an empty array in the case of the empty
content tree, so the calculation is unnecessary any way. Not performing this
calculation for the empty content tree WebArea reduces the execution time of
the mehtod to ~1/10 of the original time.
In addition, this patch re-writes AXIsolatedTree::createEmptyContent to perform
the minimum possible operations in creating the isolated objects for the
ScrollView and WebARea, and adding them to the corresponding data structures.
In particular, this r-write avoids calling children() on the WebArea live
object that can result in the traversal of many levels of the DOM and Render
trees.
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::Accessibility::findChild):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::createEmptyContent):
(WebCore::AXIsolatedTree::collectNodeChangesForChildrenMatching): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::isEmptyContentTree const):
(WebCore::AXIsolatedTree::isCollectingNodeChanges const):
Canonical link: https://commits.webkit.org/269708@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes