Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: eed31338f551e7934e2a8901262a1238cb8b1142
https://github.com/WebKit/WebKit/commit/eed31338f551e7934e2a8901262a1238cb8b1142
Author: Tyler Wilcock <[email protected]>
Date: 2025-04-04 (Fri, 04 Apr 2025)
Changed paths:
M LayoutTests/accessibility/image-map-title-causes-crash-expected.txt
M LayoutTests/accessibility/image-map-title-causes-crash.html
M
LayoutTests/imported/w3c/web-platform-tests/html-aam/fragile/area-role-expected.txt
M LayoutTests/platform/glib/accessibility/image-map2-expected.txt
M Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
M Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AccessibilityImageMapLink.cpp
M Source/WebCore/accessibility/AccessibilityImageMapLink.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp
M Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/page/InteractionRegion.cpp
Log Message:
-----------
AX: For every clearChildren-addChildren cycle, we create new
AccessibilityImageMapLink instances and never clean them up, causing a memory
leak
https://bugs.webkit.org/show_bug.cgi?id=284125
rdar://141013232
Reviewed by Joshua Hoffman.
Like most other things generated by AXObjectCache::create(AccessibilityRole),
AccessibilityImageMapLinks are never
are not persisted between clear-children add-children cycles, and are never
passed in a call to AXObjectCache::remove,
meaning they leak forever.
Fix this by making AccessibilityImageMapLink subclass AccessibilityNodeObject,
inherently tying their lifetime to the
HTMLAreaElement that they represent.
This commit also eliminates redundant role ImageMapLink. There is no reason for
this role to exist over other existing
roles, WebCoreLink and Link.
* LayoutTests/accessibility/image-map-title-causes-crash-expected.txt:
* LayoutTests/accessibility/image-map-title-causes-crash.html:
*
LayoutTests/imported/w3c/web-platform-tests/html-aam/fragile/area-role-expected.txt:
* LayoutTests/platform/glib/accessibility/image-map2-expected.txt:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::isLink const):
(WebCore::AXCoreObject::isImplicitlyInteractive const):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::accessibilityRoleToString):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::focusedImageMapUIElement):
(WebCore::AXObjectCache::createFromNode):
(WebCore::AXObjectCache::getOrCreate):
(WebCore::AXObjectCache::create):
* Source/WebCore/accessibility/AccessibilityImageMapLink.cpp:
(WebCore::AccessibilityImageMapLink::AccessibilityImageMapLink):
(WebCore::AccessibilityImageMapLink::create):
(WebCore::AccessibilityImageMapLink::parentObject const):
(WebCore::AccessibilityImageMapLink::determineAccessibilityRole):
(WebCore::AccessibilityImageMapLink::anchorElement const):
(WebCore::AccessibilityImageMapLink::url const):
(WebCore::AccessibilityImageMapLink::imageMapLinkRenderer const):
(WebCore::AccessibilityImageMapLink::elementPath const):
(WebCore::AccessibilityImageMapLink::elementRect const):
(WebCore::AccessibilityImageMapLink::setHTMLAreaElement): Deleted.
(WebCore::AccessibilityImageMapLink::detachFromParent): Deleted.
* Source/WebCore/accessibility/AccessibilityImageMapLink.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::documentLinks):
(WebCore::AccessibilityRenderObject::addImageMapChildren):
(WebCore::AccessibilityRenderObject::addChildren):
* Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp:
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::atspiRole):
* Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm:
(WebCore::Accessibility::createPlatformRoleMap):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(children):
Canonical link: https://commits.webkit.org/293278@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