1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 17:44:56 +09:00

LibWeb: Allow all Script types to be used as [[HostDefined]] values

This patch adds support for all child classes of Web::HTML::Script to be
used in the [[HostDefined]] field of JS::Modules and JS::Scripts.
This commit is contained in:
networkException 2022-10-02 23:17:33 +02:00 committed by Andreas Kling
parent 5a3e079deb
commit 83554526f0
Notes: sideshowbarker 2024-07-17 06:18:30 +09:00
4 changed files with 12 additions and 10 deletions

View file

@ -166,9 +166,4 @@ void ClassicScript::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_script_record); visitor.visit(m_script_record);
} }
void ClassicScript::visit_host_defined_self(Cell::Visitor& visitor)
{
visitor.visit(this);
}
} }

View file

@ -13,9 +13,7 @@
namespace Web::HTML { namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/webappapis.html#classic-script // https://html.spec.whatwg.org/multipage/webappapis.html#classic-script
class ClassicScript final class ClassicScript final : public Script {
: public Script
, public JS::Script::HostDefined {
JS_CELL(ClassicScript, Script); JS_CELL(ClassicScript, Script);
public: public:
@ -42,7 +40,6 @@ private:
ClassicScript(AK::URL base_url, String filename, EnvironmentSettingsObject& environment_settings_object); ClassicScript(AK::URL base_url, String filename, EnvironmentSettingsObject& environment_settings_object);
virtual void visit_edges(Cell::Visitor&) override; virtual void visit_edges(Cell::Visitor&) override;
virtual void visit_host_defined_self(Cell::Visitor&) override;
JS::GCPtr<JS::Script> m_script_record; JS::GCPtr<JS::Script> m_script_record;
MutedErrors m_muted_errors { MutedErrors::No }; MutedErrors m_muted_errors { MutedErrors::No };

View file

@ -17,4 +17,9 @@ Script::Script(AK::URL base_url, String filename, EnvironmentSettingsObject& env
Script::~Script() = default; Script::~Script() = default;
void Script::visit_host_defined_self(JS::Cell::Visitor& visitor)
{
visitor.visit(this);
}
} }

View file

@ -8,12 +8,15 @@
#include <AK/URL.h> #include <AK/URL.h>
#include <LibJS/Heap/Cell.h> #include <LibJS/Heap/Cell.h>
#include <LibJS/Script.h>
#include <LibWeb/Forward.h> #include <LibWeb/Forward.h>
namespace Web::HTML { namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/webappapis.html#concept-script // https://html.spec.whatwg.org/multipage/webappapis.html#concept-script
class Script : public JS::Cell { class Script
: public JS::Cell
, public JS::Script::HostDefined {
JS_CELL(Script, JS::Cell); JS_CELL(Script, JS::Cell);
public: public:
@ -28,6 +31,8 @@ protected:
Script(AK::URL base_url, String filename, EnvironmentSettingsObject& environment_settings_object); Script(AK::URL base_url, String filename, EnvironmentSettingsObject& environment_settings_object);
private: private:
virtual void visit_host_defined_self(JS::Cell::Visitor&) override;
AK::URL m_base_url; AK::URL m_base_url;
String m_filename; String m_filename;
EnvironmentSettingsObject& m_settings_object; EnvironmentSettingsObject& m_settings_object;