Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e5a92c63a66a763a8b1bfdf6b872d4aa19e22920
https://github.com/WebKit/WebKit/commit/e5a92c63a66a763a8b1bfdf6b872d4aa19e22920
Author: Tyler Wilcock <[email protected]>
Date: 2025-05-06 (Tue, 06 May 2025)
Changed paths:
M LayoutTests/accessibility/link-becomes-visited-expected.txt
M LayoutTests/accessibility/link-becomes-visited.html
A LayoutTests/platform/ios/accessibility/link-becomes-visited-expected.txt
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXLogger.cpp
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXSearchManager.cpp
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
Log Message:
-----------
AX: Text descendants of links can incorrectly return
InsideLink::InsideVisited or InsideLink::InsideUnvisited despite not being
links, in turn causing AXProperty::InsideLink to be cached for them, wasting
memory
https://bugs.webkit.org/show_bug.cgi?id=292622
rdar://150779990
Reviewed by Joshua Hoffman.
RenderTexts take their parent's style, which is a problem for the
implementation of AccessibilityObject::insideLink
prior to this commit, as RenderStyle::isLink would return true for these
RenderTexts, despite them not actually being
links. This is confusing and wrong from a behavioral standpoint, and also
caused AXProperty::InsideLink to be cached
for objects associated with these RenderTexts, wasting memory.
Fix this by adding an AXCoreObject::isLink check. Also replace
AXProperty::InsideLink with AXProperty::IsVisited,
meaning we only ever cache a value for visited links. Some webpages have tens
of thousands of links, so this can
make quite a significant difference.
* LayoutTests/accessibility/link-becomes-visited-expected.txt:
* LayoutTests/accessibility/link-becomes-visited.html:
New testcase added ensuring static text doesn't think it is ever `isVisited`.
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXCoreObject::isUnvisitedLink const):
(WebCore::AXCoreObject::isVisitedLink const):
(WebCore::AXCoreObject::isUnvisited const): Deleted.
(WebCore::AXCoreObject::isVisited const): Deleted.
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::updateIsolatedTree):
* Source/WebCore/accessibility/AXSearchManager.cpp:
(WebCore::AXSearchManager::matchForSearchKeyAtIndex):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isVisited const):
(WebCore::AccessibilityObject::insideLink const): Deleted.
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):
(-[WebAccessibilityObjectWrapper accessibilityTraits]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::setProperty):
(WebCore::AXIsolatedObject::boolAttributeValue const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeProperties):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
Canonical link: https://commits.webkit.org/294598@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