Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a4221ebed1c01347b5862a53f4f0ab5d303058b6 https://github.com/WebKit/WebKit/commit/a4221ebed1c01347b5862a53f4f0ab5d303058b6 Author: Tyler Wilcock <tyle...@apple.com> Date: 2024-11-11 (Mon, 11 Nov 2024)
Changed paths: M LayoutTests/accessibility-isolated-tree/TestExpectations M Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AccessibilitySpinButton.cpp M Source/WebCore/accessibility/AccessibilitySpinButton.h A Source/WebCore/accessibility/AccessibilitySpinButtonPart.cpp A Source/WebCore/accessibility/AccessibilitySpinButtonPart.h M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp Log Message: ----------- AX: Two new AccessibilitySpinButtonParts are created and never cleaned up for every clearChildren-addChildren cycle of AccessibilitySpinButton, causing a memory leak https://bugs.webkit.org/show_bug.cgi?id=282879 rdar://139572476 Reviewed by Chris Fleizach. Prior to this commit, every time an AccessibilitySpinButton calls clearChildren() and addChildren(), we would create two brand new AccessibilitySpinButtonPart objects with associated object wrappers, without cleaning up the spin button parts or wrappers from the last cycle, leaking them. With this commit, we now create the increment and decrementer spin button parts up-front in the AccessibilitySpinButton constructor, and maintain them between clearChildren-addChildren cycles. This is also better because it keeps UI elements more stable for ATs, i.e. we are no longer at risk of sending a notification with a spin button part, then calling clearChildren, effectively detaching the spin button part the AT has a reference to, making it useless. This commit also includes unrelated changes to garden some test expectations for ITM. * LayoutTests/accessibility-isolated-tree/TestExpectations: * Source/WTF/wtf/PlatformEnable.h: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::create): * Source/WebCore/accessibility/AccessibilitySpinButton.cpp: (WebCore::AccessibilitySpinButton::create): (WebCore::AccessibilitySpinButton::AccessibilitySpinButton): (WebCore::AccessibilitySpinButton::incrementButton): (WebCore::AccessibilitySpinButton::decrementButton): (WebCore::AccessibilitySpinButton::elementRect const): (WebCore::AccessibilitySpinButton::addChildren): (WebCore::AccessibilitySpinButton::step): (WebCore::AccessibilitySpinButtonPart::AccessibilitySpinButtonPart): Deleted. (WebCore::AccessibilitySpinButtonPart::create): Deleted. (WebCore::AccessibilitySpinButtonPart::elementRect const): Deleted. (WebCore::AccessibilitySpinButtonPart::press): Deleted. * Source/WebCore/accessibility/AccessibilitySpinButton.h: * Source/WebCore/accessibility/AccessibilitySpinButtonPart.cpp: Added. (WebCore::AccessibilitySpinButtonPart::AccessibilitySpinButtonPart): (WebCore::AccessibilitySpinButtonPart::create): (WebCore::AccessibilitySpinButtonPart::elementRect const): (WebCore::AccessibilitySpinButtonPart::press): * Source/WebCore/accessibility/AccessibilitySpinButtonPart.h: Added. (isType): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp: (WebCore::AXIsolatedObject::initializeProperties): Canonical link: https://commits.webkit.org/286453@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes