haikuwebkit/LayoutTests/resize-observer/resize-observer-keeps-js-wr...

5 lines
128 B
Plaintext
Raw Permalink Normal View History

JS wrapper of target in ResizeObserverEntry/ResizeObserver shouldn't get collected ahead https://bugs.webkit.org/show_bug.cgi?id=197457 Patch by Cathie Chen <cathiechen@igalia.com> on 2019-06-04 Reviewed by Ryosuke Niwa. Source/WebCore: Add JSCustomMarkFunction to make sure JS wrappers wouldn't be collected when JSResizeObserverEntry live. For ResizeObserver, if targets are removed, it will get fired for the last time. We also need to keep these JS wrappers live. So add these targets to a GCReachableRef list once they're observed. Add element-leak.html to test the targets with `entry.target.myEntry = entry` could be released properly. Tests: resize-observer/element-leak.html resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSResizeObserverEntryCustom.cpp: Added. (WebCore::JSResizeObserverEntry::visitAdditionalChildren): * page/ResizeObserver.cpp: (WebCore::ResizeObserver::observe): (WebCore::ResizeObserver::removeAllTargets): (WebCore::ResizeObserver::removeObservation): (WebCore::ResizeObserver::stop): * page/ResizeObserver.h: * page/ResizeObserverEntry.idl: LayoutTests: * platform/win/TestExpectations: * resize-observer/element-leak-expected.txt: Added. * resize-observer/element-leak.html: Added. * resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive-expected.txt: Added. * resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html: Added. * resize-observer/resize-observer-keeps-js-wrapper-of-target-alive-expected.txt: Added. * resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html: Added. * resize-observer/resources/element-leak-frame.html: Added. Canonical link: https://commits.webkit.org/212518@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246057 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-06-04 07:38:17 +00:00
This tests that JS wrappers of targets removed from document to be delivered to an resize observer do not get collected.
PASS