1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 09:34:57 +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);
}
void ClassicScript::visit_host_defined_self(Cell::Visitor& visitor)
{
visitor.visit(this);
}
}

View file

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

View file

@ -8,12 +8,15 @@
#include <AK/URL.h>
#include <LibJS/Heap/Cell.h>
#include <LibJS/Script.h>
#include <LibWeb/Forward.h>
namespace Web::HTML {
// 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);
public:
@ -28,6 +31,8 @@ protected:
Script(AK::URL base_url, String filename, EnvironmentSettingsObject& environment_settings_object);
private:
virtual void visit_host_defined_self(JS::Cell::Visitor&) override;
AK::URL m_base_url;
String m_filename;
EnvironmentSettingsObject& m_settings_object;