haikuwebkit/LayoutTests/resize-observer/resize-observer-callback-le...

5 lines
128 B
Plaintext
Raw Permalink Normal View History

ResizeObserver is not properly garbage collected https://bugs.webkit.org/show_bug.cgi?id=215158 Reviewed by Frédéric Wang. Source/WebCore: If ResizeObservers are referenced inside ResizeObserverCallbacks, they are not garbage collected properly. To fix this, add IsWeakCallback to ResizeObserverCallback interface so that it uses JSC::Weak to store the callback. And add the callback to visitor in JSResizeObserver::visitAdditionalChildren() to keep it alive. In order to test ResizeObserver leak, add test interface numberOfResizeObservers() to Internals.idl. Test: resize-observer/resize-observer-callback-leak.html * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSResizeObserverCustom.cpp: Copied from Source/WebCore/page/ResizeObserverCallback.idl. (WebCore::JSResizeObserver::visitAdditionalChildren): Add callback to SlotVisitor. * dom/Document.h: (WebCore::Document::numberOfResizeObservers const): * page/ResizeObserver.h: (WebCore::ResizeObserver::callback): * page/ResizeObserver.idl: Add JSCustomMarkFunction to the interface. * page/ResizeObserverCallback.h: * page/ResizeObserverCallback.idl: Add IsWeakCallback to the interface. * testing/Internals.cpp: Add numberOfResizeObservers. (WebCore::Internals::numberOfResizeObservers const): * testing/Internals.h: * testing/Internals.idl: LayoutTests: * resize-observer/resize-observer-callback-leak-expected.txt: Added. * resize-observer/resize-observer-callback-leak.html: Added. Canonical link: https://commits.webkit.org/230788@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268860 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-22 12:41:10 +00:00
PASS ResizeObserver implemented
PASS test: Resize observer inside callback should be garbage collected if no one refers to it