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

Reply via email to