Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 41d4dd496795863c1a114a1cb123d22c875c27c8
https://github.com/WebKit/WebKit/commit/41d4dd496795863c1a114a1cb123d22c875c27c8
Author: Tyler Wilcock <[email protected]>
Date: 2023-10-03 (Tue, 03 Oct 2023)
Changed paths:
M Source/WebCore/accessibility/AXImage.cpp
M Source/WebCore/accessibility/AXImage.h
M Source/WebCore/accessibility/AccessibilityAttachment.h
M Source/WebCore/accessibility/AccessibilityImageMapLink.cpp
M Source/WebCore/accessibility/AccessibilityImageMapLink.h
M Source/WebCore/accessibility/AccessibilityLabel.h
M Source/WebCore/accessibility/AccessibilityList.cpp
M Source/WebCore/accessibility/AccessibilityList.h
M Source/WebCore/accessibility/AccessibilityListBox.h
M Source/WebCore/accessibility/AccessibilityListBoxOption.h
M Source/WebCore/accessibility/AccessibilityMenuList.h
M Source/WebCore/accessibility/AccessibilityMenuListOption.h
M Source/WebCore/accessibility/AccessibilityMenuListPopup.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/AccessibilityProgressIndicator.cpp
M Source/WebCore/accessibility/AccessibilityProgressIndicator.h
M Source/WebCore/accessibility/AccessibilityRenderObject.h
M Source/WebCore/accessibility/AccessibilitySVGElement.h
M Source/WebCore/accessibility/AccessibilitySVGRoot.cpp
M Source/WebCore/accessibility/AccessibilitySVGRoot.h
M Source/WebCore/accessibility/AccessibilityScrollView.h
M Source/WebCore/accessibility/AccessibilityScrollbar.h
M Source/WebCore/accessibility/AccessibilitySlider.h
M Source/WebCore/accessibility/AccessibilitySpinButton.h
M Source/WebCore/accessibility/AccessibilityTable.h
M Source/WebCore/accessibility/AccessibilityTableColumn.h
M Source/WebCore/accessibility/AccessibilityTableHeaderContainer.h
Log Message:
-----------
AX: AccessibilityRenderObject::updateRoleAfterChildrenCreation causes
unnecessary AXRoleChanged notifications for several subclasses
https://bugs.webkit.org/show_bug.cgi?id=262351
rdar://problem/116213145
Reviewed by Andres Gonzalez.
AccessibilityRenderObject::updateRoleAfterChildrenCreation is predicated on the
assumption that the
class uses m_role. However, many subclasses don't, instead hard-coding a value
like so:
AccessibilityRole roleValue() const final { return AccessibilityRole::Label; }
This means that m_role (not actually used) may differ from roleValue(), causing
updateRoleAfterChildrenCreation
to post a spurious AXRoleChanged notification every time the object's children
are cleared and re-added, in turn
causing lots of wasted work, as AXRoleChanged causes a full node update in the
isolated tree.
With this patch, we move most subclasses towards using `m_role` rather than
overriding roleValue(),
preventing spurious AXRoleChanged notifications (because now we will properly
detect that the role has not changed).
This saves 10k node changes of 132k total node changes on an internal web page,
as this webpage has thousands
of SVG elements that cleared and re-added their children a few times.
* Source/WebCore/accessibility/AXImage.cpp:
(WebCore::AXImage::determineAccessibilityRole):
(WebCore::AXImage::roleValue const): Deleted.
* Source/WebCore/accessibility/AXImage.h:
* Source/WebCore/accessibility/AccessibilityAttachment.h:
* Source/WebCore/accessibility/AccessibilityImageMapLink.cpp:
(WebCore::AccessibilityImageMapLink::setHTMLAreaElement):
(WebCore::AccessibilityImageMapLink::determineAccessibilityRole):
(WebCore::AccessibilityImageMapLink::detachFromParent):
(WebCore::AccessibilityImageMapLink::roleValue const): Deleted.
* Source/WebCore/accessibility/AccessibilityImageMapLink.h:
* Source/WebCore/accessibility/AccessibilityLabel.h:
* Source/WebCore/accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::determineAccessibilityRole):
(WebCore::AccessibilityList::roleValue const): Deleted.
* Source/WebCore/accessibility/AccessibilityList.h:
* Source/WebCore/accessibility/AccessibilityListBox.h:
* Source/WebCore/accessibility/AccessibilityListBoxOption.h:
* Source/WebCore/accessibility/AccessibilityMenuList.h:
* Source/WebCore/accessibility/AccessibilityMenuListOption.h:
* Source/WebCore/accessibility/AccessibilityMenuListPopup.h:
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::init):
(WebCore::AccessibilityNodeObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityNodeObject::updateRole): Deleted.
* Source/WebCore/accessibility/AccessibilityNodeObject.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::init):
(WebCore::AccessibilityObject::updateRole):
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::init): Deleted.
(WebCore::AccessibilityObject::updateRole): Deleted.
* Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:
(WebCore::AccessibilityProgressIndicator::determineAccessibilityRole):
(WebCore::AccessibilityProgressIndicator::roleValue const): Deleted.
* Source/WebCore/accessibility/AccessibilityProgressIndicator.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilitySVGElement.h:
* Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:
(WebCore::AccessibilitySVGRoot::determineAccessibilityRole):
(WebCore::AccessibilitySVGRoot::roleValue const): Deleted.
* Source/WebCore/accessibility/AccessibilitySVGRoot.h:
* Source/WebCore/accessibility/AccessibilityScrollView.h:
* Source/WebCore/accessibility/AccessibilityScrollbar.h:
* Source/WebCore/accessibility/AccessibilitySlider.h:
* Source/WebCore/accessibility/AccessibilitySpinButton.h:
* Source/WebCore/accessibility/AccessibilityTable.h:
* Source/WebCore/accessibility/AccessibilityTableColumn.h:
* Source/WebCore/accessibility/AccessibilityTableHeaderContainer.h:
Canonical link: https://commits.webkit.org/268789@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes