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

Reply via email to