Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: afe50b886de1c7e2ccfad6ea004b994d1a94a1aa
https://github.com/WebKit/WebKit/commit/afe50b886de1c7e2ccfad6ea004b994d1a94a1aa
Author: Fujii Hironori <[email protected]>
Date: 2026-03-03 (Tue, 03 Mar 2026)
Changed paths:
A LayoutTests/http/tests/dom/script-error-event-gc-expected.txt
A LayoutTests/http/tests/dom/script-error-event-gc.html
A LayoutTests/http/tests/dom/script-load-event-gc-expected.txt
A LayoutTests/http/tests/dom/script-load-event-gc.html
A LayoutTests/http/tests/svg/script-error-event-gc-expected.txt
A LayoutTests/http/tests/svg/script-error-event-gc.html
A LayoutTests/http/tests/svg/script-load-event-gc-expected.txt
A LayoutTests/http/tests/svg/script-load-event-gc.html
M Source/WebCore/dom/ScriptElement.cpp
M Source/WebCore/dom/ScriptElement.h
M Source/WebCore/html/HTMLScriptElement.cpp
M Source/WebCore/html/HTMLScriptElement.h
M Source/WebCore/html/HTMLScriptElement.idl
M Source/WebCore/svg/SVGScriptElement.cpp
M Source/WebCore/svg/SVGScriptElement.h
M Source/WebCore/svg/SVGScriptElement.idl
Log Message:
-----------
Script element should keep the wrapper object alive until the load or error
event are dispatched
https://bugs.webkit.org/show_bug.cgi?id=305566
Reviewed by Ryosuke Niwa.
An assertion failed in JSEventListener::ensureJSFunction since a wrapper object
of a script element was already reclaimed when the load event was dispatched.
Made ScriptElement an ActiveDOMObject subclass, and implemented
virtualHasPendingActivity() method that returns true if it has a relevant event
listener and the script is loading in order to keep the wrapper object alive.
Tests: http/tests/dom/script-error-event-gc.html
http/tests/dom/script-load-event-gc.html
http/tests/svg/script-error-event-gc.html
http/tests/svg/script-load-event-gc.html
* LayoutTests/http/tests/dom/script-error-event-gc-expected.txt: Added.
* LayoutTests/http/tests/dom/script-error-event-gc.html: Added.
* LayoutTests/http/tests/dom/script-load-event-gc-expected.txt: Added.
* LayoutTests/http/tests/dom/script-load-event-gc.html: Added.
* LayoutTests/http/tests/svg/script-error-event-gc-expected.txt: Added.
* LayoutTests/http/tests/svg/script-error-event-gc.html: Added.
* LayoutTests/http/tests/svg/script-load-event-gc-expected.txt: Added.
* LayoutTests/http/tests/svg/script-load-event-gc.html: Added.
* Source/WebCore/dom/ScriptElement.cpp:
(WebCore::ScriptElement::ScriptElement):
(WebCore::ScriptElement::dispatchErrorEvent):
(WebCore::ScriptElement::virtualHasPendingActivity const):
(WebCore::ScriptElement::ref const): Deleted.
(WebCore::ScriptElement::deref const): Deleted.
* Source/WebCore/dom/ScriptElement.h:
(WebCore::ScriptElement::loadableScript const):
(WebCore::ScriptElement::setHasRelevantLoadEventsListener):
(WebCore::ScriptElement::loadableScript): Deleted.
* Source/WebCore/html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::HTMLScriptElement):
(WebCore::HTMLScriptElement::create):
(WebCore::HTMLScriptElement::dispatchLoadEvent):
(WebCore::HTMLScriptElement::cloneElementWithoutAttributesAndChildren const):
(WebCore::HTMLScriptElement::didMoveToNewDocument):
(WebCore::HTMLScriptElement::eventListenersDidChange):
* Source/WebCore/html/HTMLScriptElement.h:
* Source/WebCore/html/HTMLScriptElement.idl:
* Source/WebCore/svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::create):
(WebCore::SVGScriptElement::cloneElementWithoutAttributesAndChildren const):
(WebCore::SVGScriptElement::dispatchLoadEvent):
(WebCore::SVGScriptElement::didMoveToNewDocument):
(WebCore::SVGScriptElement::eventListenersDidChange):
* Source/WebCore/svg/SVGScriptElement.h:
* Source/WebCore/svg/SVGScriptElement.idl:
Canonical link: https://commits.webkit.org/308535@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications