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

Reply via email to