Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e6f95871da78d511ad2bdb4a1bb135818288d4d4
https://github.com/WebKit/WebKit/commit/e6f95871da78d511ad2bdb4a1bb135818288d4d4
Author: Tyler Wilcock <[email protected]>
Date: 2024-12-11 (Wed, 11 Dec 2024)
Changed paths:
M LayoutTests/accessibility/display-contents/role-row-headers-expected.txt
M LayoutTests/accessibility/image-link-expected.txt
M LayoutTests/accessibility/image-map2-expected.txt
M LayoutTests/accessibility/mac/aria-columnrowheaders-expected.txt
M LayoutTests/accessibility/mac/bounds-for-range-expected.txt
M LayoutTests/accessibility/mac/document-attributes-expected.txt
M LayoutTests/accessibility/mac/document-links-expected.txt
M LayoutTests/accessibility/mac/internal-link-anchors-expected.txt
M LayoutTests/accessibility/table-attributes-expected.txt
M LayoutTests/accessibility/table-cell-spans-expected.txt
M LayoutTests/accessibility/table-cells-expected.txt
M LayoutTests/accessibility/table-multiple-tbodies-expected.txt
M LayoutTests/accessibility/table-thead-tfoot-expected.txt
M LayoutTests/accessibility/table-with-rules-expected.txt
M LayoutTests/platform/mac/accessibility/lists-expected.txt
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp
M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
Log Message:
-----------
AX: accessibilityAttributeNames does several unnecessary NSArray copies and
ancestry traversals
https://bugs.webkit.org/show_bug.cgi?id=284212
rdar://141080358
Reviewed by Chris Fleizach.
Prior to this commit, -[WebAccessibilityObjectWrapperMac
accessibilityAttributeNames] would unnecessarily call
arrayByAddingObjectsFromArray several times, which makes a copy of the NSArray
(at least 2 unnecessary copies were made
for every object, with as many as 4 possible depending on the ARIA attributes
and role combination). With this commit,
we are guaranteed to do at most 1, and significantly more often will not need
to do any copy at all (e.g. for static
text objects, which are obviously one of the most common types). This saves 230
samples on a slow webpage.
This patch further optimizes -[WebAccessibilityObjectWrapperMac
accessibilityAttributeNames] by combining three separate
ancestry traversals into one. This saves ~400 samples on a slow webpage.
Finally, this patch optimizes AXIsolatedObject creation. Prior to this patch,
computing AXPropertyName::SortDirection
did an ancestry traversal for every single object in search of a row or column
header, the only objects that are valid
to have aria-sort. With this commit, each object only checks its own role and
aria-sort presence, saving an ancestry traversal.
Furthermore, this decreases memory usage, as prior to this patch, every
descendant of a row or column header with aria-sort
would store that aria-sort value (since every object iterated upwards to find a
sort-direction-having ancestor).
* LayoutTests/accessibility/display-contents/role-row-headers-expected.txt:
* LayoutTests/accessibility/image-link-expected.txt:
* LayoutTests/accessibility/image-map2-expected.txt:
* LayoutTests/accessibility/mac/aria-columnrowheaders-expected.txt:
* LayoutTests/accessibility/mac/bounds-for-range-expected.txt:
* LayoutTests/accessibility/mac/document-attributes-expected.txt:
* LayoutTests/accessibility/mac/document-links-expected.txt:
* LayoutTests/accessibility/mac/internal-link-anchors-expected.txt:
* LayoutTests/accessibility/table-attributes-expected.txt:
* LayoutTests/accessibility/table-cell-spans-expected.txt:
* LayoutTests/accessibility/table-cells-expected.txt:
* LayoutTests/accessibility/table-multiple-tbodies-expected.txt:
* LayoutTests/accessibility/table-thead-tfoot-expected.txt:
* LayoutTests/accessibility/table-with-rules-expected.txt:
* LayoutTests/platform/mac/accessibility/lists-expected.txt:
AXBusy is reordered in attribute name lists.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::hasPopup const):
(WebCore::AXCoreObject::selfOrAncestorLinkHasPopup const):
(WebCore::AXCoreObject::sortDirectionIncludingAncestors const):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXCoreObject::isInsideLiveRegion const): Deleted.
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::sortDirection const):
(WebCore::AccessibilityObject::buttonRoleType const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::states const):
(WebCore::AccessibilityObjectAtspi::attributes const):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityHasPopup]):
(-[WebAccessibilityObjectWrapper accessibilitySortDirection]):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper _additionalAccessibilityAttributeNames:]):
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
* Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp:
(WebCore::InspectorAuditAccessibilityObject::getComputedProperties):
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
Canonical link: https://commits.webkit.org/287686@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