haikuwebkit/LayoutTests/resize-observer/resize-observer-entry-keeps...

23 lines
850 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
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
CONSOLE MESSAGE: ResizeObserver loop completed with undelivered notifications.
This tests that JS wrappers of targets in an ResizeObserverEntry do not get collected.
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS
PASS