mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:37:35 +00:00
LibWeb: Move setting of Web object prototypes to initialize()
This needs to happen before prototype/constructor intitialization can be made lazy. Otherwise, GC could run during the C++ constructor and try to collect the object currently being created.
This commit is contained in:
parent
7bd8fd000f
commit
834202aeb9
339 changed files with 1294 additions and 187 deletions
|
@ -24,7 +24,6 @@ namespace Web::Bindings {
|
||||||
LocationObject::LocationObject(JS::Realm& realm)
|
LocationObject::LocationObject(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&cached_web_prototype(realm, "Location"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LocationObject::~LocationObject() = default;
|
LocationObject::~LocationObject() = default;
|
||||||
|
@ -41,6 +40,8 @@ void LocationObject::initialize(JS::Realm& realm)
|
||||||
auto& vm = this->vm();
|
auto& vm = this->vm();
|
||||||
|
|
||||||
Object::initialize(realm);
|
Object::initialize(realm);
|
||||||
|
set_prototype(&ensure_web_prototype<LocationPrototype>(realm, "Location"));
|
||||||
|
|
||||||
u8 attr = JS::Attribute::Writable | JS::Attribute::Enumerable;
|
u8 attr = JS::Attribute::Writable | JS::Attribute::Enumerable;
|
||||||
define_native_accessor(realm, "href", href_getter, href_setter, attr);
|
define_native_accessor(realm, "href", href_getter, href_setter, attr);
|
||||||
define_native_accessor(realm, "host", host_getter, {}, attr);
|
define_native_accessor(realm, "host", host_getter, {}, attr);
|
||||||
|
|
|
@ -14,7 +14,6 @@ namespace Web::CSS {
|
||||||
CSSConditionRule::CSSConditionRule(JS::Realm& realm, CSSRuleList& rules)
|
CSSConditionRule::CSSConditionRule(JS::Realm& realm, CSSRuleList& rules)
|
||||||
: CSSGroupingRule(realm, rules)
|
: CSSGroupingRule(realm, rules)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSConditionRulePrototype>(realm, "CSSConditionRule"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSSConditionRule::for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const
|
void CSSConditionRule::for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const
|
||||||
|
@ -23,4 +22,10 @@ void CSSConditionRule::for_each_effective_style_rule(Function<void(CSSStyleRule
|
||||||
CSSGroupingRule::for_each_effective_style_rule(callback);
|
CSSGroupingRule::for_each_effective_style_rule(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSSConditionRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSConditionRulePrototype>(realm, "CSSConditionRule"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CSSConditionRule(JS::Realm&, CSSRuleList&);
|
CSSConditionRule(JS::Realm&, CSSRuleList&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,11 @@ CSSFontFaceRule::CSSFontFaceRule(JS::Realm& realm, FontFace&& font_face)
|
||||||
: CSSRule(realm)
|
: CSSRule(realm)
|
||||||
, m_font_face(move(font_face))
|
, m_font_face(move(font_face))
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSSFontFaceRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSFontFaceRulePrototype>(realm, "CSSFontFaceRule"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSFontFaceRulePrototype>(realm, "CSSFontFaceRule"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSFontFaceRule(JS::Realm&, FontFace&&);
|
CSSFontFaceRule(JS::Realm&, FontFace&&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual DeprecatedString serialized() const override;
|
virtual DeprecatedString serialized() const override;
|
||||||
|
|
||||||
FontFace m_font_face;
|
FontFace m_font_face;
|
||||||
|
|
|
@ -18,11 +18,16 @@ CSSGroupingRule::CSSGroupingRule(JS::Realm& realm, CSSRuleList& rules)
|
||||||
: CSSRule(realm)
|
: CSSRule(realm)
|
||||||
, m_rules(rules)
|
, m_rules(rules)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSGroupingRulePrototype>(realm, "CSSGroupingRule"));
|
|
||||||
for (auto& rule : m_rules)
|
for (auto& rule : m_rules)
|
||||||
rule.set_parent_rule(this);
|
rule.set_parent_rule(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSSGroupingRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSGroupingRulePrototype>(realm, "CSSGroupingRule"));
|
||||||
|
}
|
||||||
|
|
||||||
void CSSGroupingRule::visit_edges(Cell::Visitor& visitor)
|
void CSSGroupingRule::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -32,6 +32,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CSSGroupingRule(JS::Realm&, CSSRuleList&);
|
CSSGroupingRule(JS::Realm&, CSSRuleList&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -29,8 +29,6 @@ CSSImportRule::CSSImportRule(AK::URL url, DOM::Document& document)
|
||||||
, m_url(move(url))
|
, m_url(move(url))
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSImportRulePrototype>(document.realm(), "CSSImportRule"));
|
|
||||||
|
|
||||||
dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Loading import URL: {}", m_url);
|
dbgln_if(CSS_LOADER_DEBUG, "CSSImportRule: Loading import URL: {}", m_url);
|
||||||
auto request = LoadRequest::create_for_url_on_page(m_url, document.page());
|
auto request = LoadRequest::create_for_url_on_page(m_url, document.page());
|
||||||
|
|
||||||
|
@ -41,6 +39,12 @@ CSSImportRule::CSSImportRule(AK::URL url, DOM::Document& document)
|
||||||
set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request));
|
set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSSImportRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSImportRulePrototype>(realm, "CSSImportRule"));
|
||||||
|
}
|
||||||
|
|
||||||
void CSSImportRule::visit_edges(Cell::Visitor& visitor)
|
void CSSImportRule::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -40,6 +40,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSImportRule(AK::URL, DOM::Document&);
|
CSSImportRule(AK::URL, DOM::Document&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
virtual DeprecatedString serialized() const override;
|
virtual DeprecatedString serialized() const override;
|
||||||
|
|
|
@ -21,6 +21,11 @@ CSSMediaRule::CSSMediaRule(JS::Realm& realm, MediaList& media, CSSRuleList& rule
|
||||||
: CSSConditionRule(realm, rules)
|
: CSSConditionRule(realm, rules)
|
||||||
, m_media(media)
|
, m_media(media)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSSMediaRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSMediaRulePrototype>(realm, "CSSMediaRule"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSMediaRulePrototype>(realm, "CSSMediaRule"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSMediaRule(JS::Realm&, MediaList&, CSSRuleList&);
|
CSSMediaRule(JS::Realm&, MediaList&, CSSRuleList&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
virtual DeprecatedString serialized() const override;
|
virtual DeprecatedString serialized() const override;
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,11 @@ CSSStyleRule::CSSStyleRule(JS::Realm& realm, NonnullRefPtrVector<Selector>&& sel
|
||||||
, m_selectors(move(selectors))
|
, m_selectors(move(selectors))
|
||||||
, m_declaration(declaration)
|
, m_declaration(declaration)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSSStyleRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleRulePrototype>(realm, "CSSStyleRule"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleRulePrototype>(realm, "CSSStyleRule"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSStyleRule(JS::Realm&, NonnullRefPtrVector<Selector>&&, CSSStyleDeclaration&);
|
CSSStyleRule(JS::Realm&, NonnullRefPtrVector<Selector>&&, CSSStyleDeclaration&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
virtual DeprecatedString serialized() const override;
|
virtual DeprecatedString serialized() const override;
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,6 @@ CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& me
|
||||||
: StyleSheet(realm, media)
|
: StyleSheet(realm, media)
|
||||||
, m_rules(&rules)
|
, m_rules(&rules)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleSheetPrototype>(realm, "CSSStyleSheet"));
|
|
||||||
|
|
||||||
if (location.has_value())
|
if (location.has_value())
|
||||||
set_location(location->to_deprecated_string());
|
set_location(location->to_deprecated_string());
|
||||||
|
|
||||||
|
@ -32,6 +30,12 @@ CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& me
|
||||||
rule.set_parent_style_sheet(this);
|
rule.set_parent_style_sheet(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSSStyleSheet::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleSheetPrototype>(realm, "CSSStyleSheet"));
|
||||||
|
}
|
||||||
|
|
||||||
void CSSStyleSheet::visit_edges(Cell::Visitor& visitor)
|
void CSSStyleSheet::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<AK::URL> location);
|
CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<AK::URL> location);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
CSSRuleList* m_rules { nullptr };
|
CSSRuleList* m_rules { nullptr };
|
||||||
|
|
|
@ -20,6 +20,11 @@ CSSSupportsRule::CSSSupportsRule(JS::Realm& realm, NonnullRefPtr<Supports>&& sup
|
||||||
: CSSConditionRule(realm, rules)
|
: CSSConditionRule(realm, rules)
|
||||||
, m_supports(move(supports))
|
, m_supports(move(supports))
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSSSupportsRule::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSSupportsRulePrototype>(realm, "CSSSupportsRule"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSSupportsRulePrototype>(realm, "CSSSupportsRule"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
private:
|
private:
|
||||||
CSSSupportsRule(JS::Realm&, NonnullRefPtr<Supports>&&, CSSRuleList&);
|
CSSSupportsRule(JS::Realm&, NonnullRefPtr<Supports>&&, CSSRuleList&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual DeprecatedString serialized() const override;
|
virtual DeprecatedString serialized() const override;
|
||||||
|
|
||||||
NonnullRefPtr<Supports> m_supports;
|
NonnullRefPtr<Supports> m_supports;
|
||||||
|
|
|
@ -25,10 +25,15 @@ MediaQueryList::MediaQueryList(DOM::Document& document, NonnullRefPtrVector<Medi
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
, m_media(move(media))
|
, m_media(move(media))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListPrototype>(document.realm(), "MediaQueryList"));
|
|
||||||
evaluate();
|
evaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaQueryList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListPrototype>(realm, "MediaQueryList"));
|
||||||
|
}
|
||||||
|
|
||||||
void MediaQueryList::visit_edges(Cell::Visitor& visitor)
|
void MediaQueryList::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
private:
|
private:
|
||||||
MediaQueryList(DOM::Document&, NonnullRefPtrVector<MediaQuery>&&);
|
MediaQueryList(DOM::Document&, NonnullRefPtrVector<MediaQuery>&&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
JS::NonnullGCPtr<DOM::Document> m_document;
|
JS::NonnullGCPtr<DOM::Document> m_document;
|
||||||
|
|
|
@ -20,9 +20,14 @@ MediaQueryListEvent::MediaQueryListEvent(JS::Realm& realm, DeprecatedFlyString c
|
||||||
, m_media(event_init.media)
|
, m_media(event_init.media)
|
||||||
, m_matches(event_init.matches)
|
, m_matches(event_init.matches)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListEventPrototype>(realm, "MediaQueryListEvent"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaQueryListEvent::~MediaQueryListEvent() = default;
|
MediaQueryListEvent::~MediaQueryListEvent() = default;
|
||||||
|
|
||||||
|
void MediaQueryListEvent::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListEventPrototype>(realm, "MediaQueryListEvent"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,8 @@ public:
|
||||||
private:
|
private:
|
||||||
MediaQueryListEvent(JS::Realm&, DeprecatedFlyString const& event_name, MediaQueryListEventInit const& event_init);
|
MediaQueryListEvent(JS::Realm&, DeprecatedFlyString const& event_name, MediaQueryListEventInit const& event_init);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
DeprecatedString m_media;
|
DeprecatedString m_media;
|
||||||
bool m_matches;
|
bool m_matches;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,12 @@ Screen::Screen(HTML::Window& window)
|
||||||
: PlatformObject(window.realm())
|
: PlatformObject(window.realm())
|
||||||
, m_window(window)
|
, m_window(window)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::ScreenPrototype>(window.realm(), "Screen"));
|
}
|
||||||
|
|
||||||
|
void Screen::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ScreenPrototype>(realm, "Screen"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen::visit_edges(Cell::Visitor& visitor)
|
void Screen::visit_edges(Cell::Visitor& visitor)
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit Screen(HTML::Window&);
|
explicit Screen(HTML::Window&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
HTML::Window const& window() const { return *m_window; }
|
HTML::Window const& window() const { return *m_window; }
|
||||||
|
|
|
@ -22,7 +22,6 @@ JS::NonnullGCPtr<Crypto> Crypto::create(JS::Realm& realm)
|
||||||
Crypto::Crypto(JS::Realm& realm)
|
Crypto::Crypto(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Crypto"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Crypto::~Crypto() = default;
|
Crypto::~Crypto() = default;
|
||||||
|
@ -30,6 +29,7 @@ Crypto::~Crypto() = default;
|
||||||
void Crypto::initialize(JS::Realm& realm)
|
void Crypto::initialize(JS::Realm& realm)
|
||||||
{
|
{
|
||||||
Base::initialize(realm);
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CryptoPrototype>(realm, "Crypto"));
|
||||||
m_subtle = SubtleCrypto::create(realm);
|
m_subtle = SubtleCrypto::create(realm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,11 @@ public:
|
||||||
DeprecatedString random_uuid() const;
|
DeprecatedString random_uuid() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit Crypto(JS::Realm&);
|
explicit Crypto(JS::Realm&);
|
||||||
virtual void initialize(JS::Realm&) override;
|
|
||||||
|
|
||||||
JS::GCPtr<SubtleCrypto> m_subtle;
|
JS::GCPtr<SubtleCrypto> m_subtle;
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,11 +22,16 @@ JS::NonnullGCPtr<SubtleCrypto> SubtleCrypto::create(JS::Realm& realm)
|
||||||
SubtleCrypto::SubtleCrypto(JS::Realm& realm)
|
SubtleCrypto::SubtleCrypto(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "SubtleCrypto"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SubtleCrypto::~SubtleCrypto() = default;
|
SubtleCrypto::~SubtleCrypto() = default;
|
||||||
|
|
||||||
|
void SubtleCrypto::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::SubtleCryptoPrototype>(realm, "SubtleCrypto"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/webcrypto/#dfn-SubtleCrypto-method-digest
|
// https://w3c.github.io/webcrypto/#dfn-SubtleCrypto-method-digest
|
||||||
JS::Promise* SubtleCrypto::digest(DeprecatedString const& algorithm, JS::Handle<JS::Object> const& data)
|
JS::Promise* SubtleCrypto::digest(DeprecatedString const& algorithm, JS::Handle<JS::Object> const& data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,6 +23,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit SubtleCrypto(JS::Realm&);
|
explicit SubtleCrypto(JS::Realm&);
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,11 +21,16 @@ AbortController::AbortController(JS::Realm& realm, JS::NonnullGCPtr<AbortSignal>
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_signal(move(signal))
|
, m_signal(move(signal))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "AbortController"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AbortController::~AbortController() = default;
|
AbortController::~AbortController() = default;
|
||||||
|
|
||||||
|
void AbortController::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::AbortControllerPrototype>(realm, "AbortController"));
|
||||||
|
}
|
||||||
|
|
||||||
void AbortController::visit_edges(Cell::Visitor& visitor)
|
void AbortController::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -28,6 +28,7 @@ public:
|
||||||
private:
|
private:
|
||||||
AbortController(JS::Realm&, JS::NonnullGCPtr<AbortSignal>);
|
AbortController(JS::Realm&, JS::NonnullGCPtr<AbortSignal>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#abortcontroller-signal
|
// https://dom.spec.whatwg.org/#abortcontroller-signal
|
||||||
|
|
|
@ -20,7 +20,12 @@ JS::NonnullGCPtr<AbortSignal> AbortSignal::construct_impl(JS::Realm& realm)
|
||||||
AbortSignal::AbortSignal(JS::Realm& realm)
|
AbortSignal::AbortSignal(JS::Realm& realm)
|
||||||
: EventTarget(realm)
|
: EventTarget(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "AbortSignal"));
|
}
|
||||||
|
|
||||||
|
void AbortSignal::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::AbortSignalPrototype>(realm, "AbortSignal"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#abortsignal-add
|
// https://dom.spec.whatwg.org/#abortsignal-add
|
||||||
|
|
|
@ -43,6 +43,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit AbortSignal(JS::Realm&);
|
explicit AbortSignal(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#abortsignal-abort-reason
|
// https://dom.spec.whatwg.org/#abortsignal-abort-reason
|
||||||
|
|
|
@ -29,7 +29,12 @@ Attr::Attr(Document& document, QualifiedName qualified_name, DeprecatedString va
|
||||||
, m_value(move(value))
|
, m_value(move(value))
|
||||||
, m_owner_element(owner_element)
|
, m_owner_element(owner_element)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(document.realm(), "Attr"));
|
}
|
||||||
|
|
||||||
|
void Attr::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::AttrPrototype>(realm, "Attr"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Attr::visit_edges(Cell::Visitor& visitor)
|
void Attr::visit_edges(Cell::Visitor& visitor)
|
||||||
|
|
|
@ -45,6 +45,7 @@ public:
|
||||||
private:
|
private:
|
||||||
Attr(Document&, QualifiedName, DeprecatedString value, Element const*);
|
Attr(Document&, QualifiedName, DeprecatedString value, Element const*);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
QualifiedName m_qualified_name;
|
QualifiedName m_qualified_name;
|
||||||
|
|
|
@ -12,9 +12,14 @@ namespace Web::DOM {
|
||||||
CDATASection::CDATASection(Document& document, DeprecatedString const& data)
|
CDATASection::CDATASection(Document& document, DeprecatedString const& data)
|
||||||
: Text(document, NodeType::CDATA_SECTION_NODE, data)
|
: Text(document, NodeType::CDATA_SECTION_NODE, data)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "CDATASection"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CDATASection::~CDATASection() = default;
|
CDATASection::~CDATASection() = default;
|
||||||
|
|
||||||
|
void CDATASection::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CDATASectionPrototype>(realm, "CDATASection"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CDATASection(Document&, DeprecatedString const&);
|
CDATASection(Document&, DeprecatedString const&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
|
|
|
@ -17,7 +17,12 @@ CharacterData::CharacterData(Document& document, NodeType type, DeprecatedString
|
||||||
: Node(document, type)
|
: Node(document, type)
|
||||||
, m_data(data)
|
, m_data(data)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::CharacterDataPrototype>(document.realm(), "CharacterData"));
|
}
|
||||||
|
|
||||||
|
void CharacterData::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CharacterDataPrototype>(realm, "CharacterData"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#dom-characterdata-data
|
// https://dom.spec.whatwg.org/#dom-characterdata-data
|
||||||
|
|
|
@ -36,6 +36,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
CharacterData(Document&, NodeType, DeprecatedString const&);
|
CharacterData(Document&, NodeType, DeprecatedString const&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DeprecatedString m_data;
|
DeprecatedString m_data;
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,11 +25,16 @@ CustomEvent::CustomEvent(JS::Realm& realm, DeprecatedFlyString const& event_name
|
||||||
: Event(realm, event_name, event_init)
|
: Event(realm, event_name, event_init)
|
||||||
, m_detail(event_init.detail)
|
, m_detail(event_init.detail)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "CustomEvent"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomEvent::~CustomEvent() = default;
|
CustomEvent::~CustomEvent() = default;
|
||||||
|
|
||||||
|
void CustomEvent::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CustomEventPrototype>(realm, "CustomEvent"));
|
||||||
|
}
|
||||||
|
|
||||||
void CustomEvent::visit_edges(JS::Cell::Visitor& visitor)
|
void CustomEvent::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -28,6 +28,7 @@ public:
|
||||||
// https://dom.spec.whatwg.org/#dom-customevent-detail
|
// https://dom.spec.whatwg.org/#dom-customevent-detail
|
||||||
JS::Value detail() const { return m_detail; }
|
JS::Value detail() const { return m_detail; }
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
void init_custom_event(DeprecatedString const& type, bool bubbles, bool cancelable, JS::Value detail);
|
void init_custom_event(DeprecatedString const& type, bool bubbles, bool cancelable, JS::Value detail);
|
||||||
|
|
|
@ -297,8 +297,6 @@ Document::Document(JS::Realm& realm, const AK::URL& url)
|
||||||
, m_style_computer(make<CSS::StyleComputer>(*this))
|
, m_style_computer(make<CSS::StyleComputer>(*this))
|
||||||
, m_url(url)
|
, m_url(url)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Document"));
|
|
||||||
|
|
||||||
HTML::main_thread_event_loop().register_document({}, *this);
|
HTML::main_thread_event_loop().register_document({}, *this);
|
||||||
|
|
||||||
m_style_update_timer = Platform::Timer::create_single_shot(0, [this] {
|
m_style_update_timer = Platform::Timer::create_single_shot(0, [this] {
|
||||||
|
@ -315,6 +313,12 @@ Document::~Document()
|
||||||
HTML::main_thread_event_loop().unregister_document({}, *this);
|
HTML::main_thread_event_loop().unregister_document({}, *this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Document::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DocumentPrototype>(realm, "Document"));
|
||||||
|
}
|
||||||
|
|
||||||
void Document::visit_edges(Cell::Visitor& visitor)
|
void Document::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -450,6 +450,7 @@ public:
|
||||||
DeprecatedString dump_accessibility_tree_as_json();
|
DeprecatedString dump_accessibility_tree_as_json();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -12,7 +12,12 @@ namespace Web::DOM {
|
||||||
DocumentFragment::DocumentFragment(Document& document)
|
DocumentFragment::DocumentFragment(Document& document)
|
||||||
: ParentNode(document, NodeType::DOCUMENT_FRAGMENT_NODE)
|
: ParentNode(document, NodeType::DOCUMENT_FRAGMENT_NODE)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "DocumentFragment"));
|
}
|
||||||
|
|
||||||
|
void DocumentFragment::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DocumentFragmentPrototype>(realm, "DocumentFragment"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentFragment::visit_edges(Cell::Visitor& visitor)
|
void DocumentFragment::visit_edges(Cell::Visitor& visitor)
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
explicit DocumentFragment(Document& document);
|
explicit DocumentFragment(Document& document);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -17,7 +17,12 @@ JS::NonnullGCPtr<DocumentType> DocumentType::create(Document& document)
|
||||||
DocumentType::DocumentType(Document& document)
|
DocumentType::DocumentType(Document& document)
|
||||||
: Node(document, NodeType::DOCUMENT_TYPE_NODE)
|
: Node(document, NodeType::DOCUMENT_TYPE_NODE)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "DocumentType"));
|
}
|
||||||
|
|
||||||
|
void DocumentType::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DocumentTypePrototype>(realm, "DocumentType"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,8 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit DocumentType(Document&);
|
explicit DocumentType(Document&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
DeprecatedString m_name;
|
DeprecatedString m_name;
|
||||||
DeprecatedString m_public_id;
|
DeprecatedString m_public_id;
|
||||||
DeprecatedString m_system_id;
|
DeprecatedString m_system_id;
|
||||||
|
|
|
@ -56,7 +56,6 @@ Element::Element(Document& document, DOM::QualifiedName qualified_name)
|
||||||
: ParentNode(document, NodeType::ELEMENT_NODE)
|
: ParentNode(document, NodeType::ELEMENT_NODE)
|
||||||
, m_qualified_name(move(qualified_name))
|
, m_qualified_name(move(qualified_name))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(document.realm(), "Element"));
|
|
||||||
make_html_uppercased_qualified_name();
|
make_html_uppercased_qualified_name();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +64,8 @@ Element::~Element() = default;
|
||||||
void Element::initialize(JS::Realm& realm)
|
void Element::initialize(JS::Realm& realm)
|
||||||
{
|
{
|
||||||
Base::initialize(realm);
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ElementPrototype>(realm, "Element"));
|
||||||
|
|
||||||
m_attributes = NamedNodeMap::create(*this);
|
m_attributes = NamedNodeMap::create(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@ MutationObserver::MutationObserver(JS::Realm& realm, JS::GCPtr<WebIDL::CallbackT
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_callback(move(callback))
|
, m_callback(move(callback))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "MutationObserver"));
|
|
||||||
|
|
||||||
// 1. Set this’s callback to callback.
|
// 1. Set this’s callback to callback.
|
||||||
|
|
||||||
|
@ -32,6 +31,12 @@ MutationObserver::MutationObserver(JS::Realm& realm, JS::GCPtr<WebIDL::CallbackT
|
||||||
|
|
||||||
MutationObserver::~MutationObserver() = default;
|
MutationObserver::~MutationObserver() = default;
|
||||||
|
|
||||||
|
void MutationObserver::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::MutationObserverPrototype>(realm, "MutationObserver"));
|
||||||
|
}
|
||||||
|
|
||||||
void MutationObserver::visit_edges(Cell::Visitor& visitor)
|
void MutationObserver::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
private:
|
private:
|
||||||
MutationObserver(JS::Realm&, JS::GCPtr<WebIDL::CallbackType>);
|
MutationObserver(JS::Realm&, JS::GCPtr<WebIDL::CallbackType>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#concept-mo-callback
|
// https://dom.spec.whatwg.org/#concept-mo-callback
|
||||||
|
@ -81,6 +82,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RegisteredObserver(MutationObserver& observer, MutationObserverInit const& options);
|
RegisteredObserver(MutationObserver& observer, MutationObserverInit const& options);
|
||||||
|
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -100,6 +102,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TransientRegisteredObserver(MutationObserver& observer, MutationObserverInit const& options, RegisteredObserver& source);
|
TransientRegisteredObserver(MutationObserver& observer, MutationObserverInit const& options, RegisteredObserver& source);
|
||||||
|
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
JS::NonnullGCPtr<RegisteredObserver> m_source;
|
JS::NonnullGCPtr<RegisteredObserver> m_source;
|
||||||
|
|
|
@ -29,11 +29,16 @@ MutationRecord::MutationRecord(JS::Realm& realm, DeprecatedFlyString const& type
|
||||||
, m_attribute_namespace(attribute_namespace)
|
, m_attribute_namespace(attribute_namespace)
|
||||||
, m_old_value(old_value)
|
, m_old_value(old_value)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "MutationRecord"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MutationRecord::~MutationRecord() = default;
|
MutationRecord::~MutationRecord() = default;
|
||||||
|
|
||||||
|
void MutationRecord::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::MutationRecordPrototype>(realm, "MutationRecord"));
|
||||||
|
}
|
||||||
|
|
||||||
void MutationRecord::visit_edges(Cell::Visitor& visitor)
|
void MutationRecord::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -31,6 +31,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MutationRecord(JS::Realm& realm, DeprecatedFlyString const& type, Node& target, NodeList& added_nodes, NodeList& removed_nodes, Node* previous_sibling, Node* next_sibling, DeprecatedString const& attribute_name, DeprecatedString const& attribute_namespace, DeprecatedString const& old_value);
|
MutationRecord(JS::Realm& realm, DeprecatedFlyString const& type, Node& target, NodeList& added_nodes, NodeList& removed_nodes, Node* previous_sibling, Node* next_sibling, DeprecatedString const& attribute_name, DeprecatedString const& attribute_namespace, DeprecatedString const& old_value);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
DeprecatedFlyString m_type;
|
DeprecatedFlyString m_type;
|
||||||
|
|
|
@ -15,7 +15,12 @@ ProcessingInstruction::ProcessingInstruction(Document& document, DeprecatedStrin
|
||||||
: CharacterData(document, NodeType::PROCESSING_INSTRUCTION_NODE, data)
|
: CharacterData(document, NodeType::PROCESSING_INSTRUCTION_NODE, data)
|
||||||
, m_target(target)
|
, m_target(target)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(document.realm(), "ProcessingInstruction"));
|
}
|
||||||
|
|
||||||
|
void ProcessingInstruction::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ProcessingInstructionPrototype>(realm, "ProcessingInstruction"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,8 @@ public:
|
||||||
private:
|
private:
|
||||||
ProcessingInstruction(Document&, DeprecatedString const& data, DeprecatedString const& target);
|
ProcessingInstruction(Document&, DeprecatedString const& data, DeprecatedString const& target);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
DeprecatedString m_target;
|
DeprecatedString m_target;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -52,13 +52,11 @@ JS::NonnullGCPtr<Range> Range::construct_impl(JS::Realm& realm)
|
||||||
Range::Range(Document& document)
|
Range::Range(Document& document)
|
||||||
: Range(document, 0, document, 0)
|
: Range(document, 0, document, 0)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(document.realm(), "Range"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Range::Range(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
Range::Range(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
||||||
: AbstractRange(start_container, start_offset, end_container, end_offset)
|
: AbstractRange(start_container, start_offset, end_container, end_offset)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(start_container.realm(), "Range"));
|
|
||||||
live_ranges().set(this);
|
live_ranges().set(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +65,12 @@ Range::~Range()
|
||||||
live_ranges().remove(this);
|
live_ranges().remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Range::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::RangePrototype>(realm, "Range"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#concept-range-root
|
// https://dom.spec.whatwg.org/#concept-range-root
|
||||||
Node& Range::root()
|
Node& Range::root()
|
||||||
{
|
{
|
||||||
|
|
|
@ -88,6 +88,8 @@ private:
|
||||||
explicit Range(Document&);
|
explicit Range(Document&);
|
||||||
Range(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
Range(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
Node& root();
|
Node& root();
|
||||||
Node const& root() const;
|
Node const& root() const;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ namespace Web::DOM {
|
||||||
StaticRange::StaticRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
StaticRange::StaticRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
||||||
: AbstractRange(start_container, start_offset, end_container, end_offset)
|
: AbstractRange(start_container, start_offset, end_container, end_offset)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(start_container.realm(), "StaticRange"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StaticRange::~StaticRange() = default;
|
StaticRange::~StaticRange() = default;
|
||||||
|
@ -36,4 +35,10 @@ WebIDL::ExceptionOr<StaticRange*> StaticRange::construct_impl(JS::Realm& realm,
|
||||||
return realm.heap().allocate<StaticRange>(realm, *init.start_container, init.start_offset, *init.end_container, init.end_offset).ptr();
|
return realm.heap().allocate<StaticRange>(realm, *init.start_container, init.start_offset, *init.end_container, init.end_offset).ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StaticRange::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::StaticRangePrototype>(realm, "StaticRange"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,8 @@ public:
|
||||||
|
|
||||||
StaticRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
StaticRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
||||||
virtual ~StaticRange() override;
|
virtual ~StaticRange() override;
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,17 @@ namespace Web::DOM {
|
||||||
Text::Text(Document& document, DeprecatedString const& data)
|
Text::Text(Document& document, DeprecatedString const& data)
|
||||||
: CharacterData(document, NodeType::TEXT_NODE, data)
|
: CharacterData(document, NodeType::TEXT_NODE, data)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "Text"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Text::Text(Document& document, NodeType type, DeprecatedString const& data)
|
Text::Text(Document& document, NodeType type, DeprecatedString const& data)
|
||||||
: CharacterData(document, type, data)
|
: CharacterData(document, type, data)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "Text"));
|
}
|
||||||
|
|
||||||
|
void Text::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::TextPrototype>(realm, "Text"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Text::visit_edges(Cell::Visitor& visitor)
|
void Text::visit_edges(Cell::Visitor& visitor)
|
||||||
|
|
|
@ -38,6 +38,7 @@ protected:
|
||||||
Text(Document&, DeprecatedString const&);
|
Text(Document&, DeprecatedString const&);
|
||||||
Text(Document&, NodeType, DeprecatedString const&);
|
Text(Document&, NodeType, DeprecatedString const&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -28,11 +28,16 @@ JS::NonnullGCPtr<XMLSerializer> XMLSerializer::construct_impl(JS::Realm& realm)
|
||||||
XMLSerializer::XMLSerializer(JS::Realm& realm)
|
XMLSerializer::XMLSerializer(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "XMLSerializer"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLSerializer::~XMLSerializer() = default;
|
XMLSerializer::~XMLSerializer() = default;
|
||||||
|
|
||||||
|
void XMLSerializer::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::XMLSerializerPrototype>(realm, "XMLSerializer"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/DOM-Parsing/#dom-xmlserializer-serializetostring
|
// https://w3c.github.io/DOM-Parsing/#dom-xmlserializer-serializetostring
|
||||||
WebIDL::ExceptionOr<DeprecatedString> XMLSerializer::serialize_to_string(JS::NonnullGCPtr<DOM::Node> root)
|
WebIDL::ExceptionOr<DeprecatedString> XMLSerializer::serialize_to_string(JS::NonnullGCPtr<DOM::Node> root)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit XMLSerializer(JS::Realm&);
|
explicit XMLSerializer(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class RequireWellFormed {
|
enum class RequireWellFormed {
|
||||||
|
|
|
@ -29,11 +29,16 @@ TextDecoder::TextDecoder(JS::Realm& realm, TextCodec::Decoder& decoder, Deprecat
|
||||||
, m_fatal(fatal)
|
, m_fatal(fatal)
|
||||||
, m_ignore_bom(ignore_bom)
|
, m_ignore_bom(ignore_bom)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "TextDecoder"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TextDecoder::~TextDecoder() = default;
|
TextDecoder::~TextDecoder() = default;
|
||||||
|
|
||||||
|
void TextDecoder::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::TextDecoderPrototype>(realm, "TextDecoder"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://encoding.spec.whatwg.org/#dom-textdecoder-decode
|
// https://encoding.spec.whatwg.org/#dom-textdecoder-decode
|
||||||
WebIDL::ExceptionOr<DeprecatedString> TextDecoder::decode(JS::Handle<JS::Object> const& input) const
|
WebIDL::ExceptionOr<DeprecatedString> TextDecoder::decode(JS::Handle<JS::Object> const& input) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,8 @@ private:
|
||||||
// https://encoding.spec.whatwg.org/#dom-textdecoder
|
// https://encoding.spec.whatwg.org/#dom-textdecoder
|
||||||
TextDecoder(JS::Realm&, TextCodec::Decoder&, DeprecatedFlyString encoding, bool fatal, bool ignore_bom);
|
TextDecoder(JS::Realm&, TextCodec::Decoder&, DeprecatedFlyString encoding, bool fatal, bool ignore_bom);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
TextCodec::Decoder& m_decoder;
|
TextCodec::Decoder& m_decoder;
|
||||||
DeprecatedFlyString m_encoding;
|
DeprecatedFlyString m_encoding;
|
||||||
bool m_fatal { false };
|
bool m_fatal { false };
|
||||||
|
|
|
@ -19,11 +19,16 @@ JS::NonnullGCPtr<TextEncoder> TextEncoder::construct_impl(JS::Realm& realm)
|
||||||
TextEncoder::TextEncoder(JS::Realm& realm)
|
TextEncoder::TextEncoder(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "TextEncoder"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEncoder::~TextEncoder() = default;
|
TextEncoder::~TextEncoder() = default;
|
||||||
|
|
||||||
|
void TextEncoder::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::TextEncoderPrototype>(realm, "TextEncoder"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://encoding.spec.whatwg.org/#dom-textencoder-encode
|
// https://encoding.spec.whatwg.org/#dom-textencoder-encode
|
||||||
JS::Uint8Array* TextEncoder::encode(DeprecatedString const& input) const
|
JS::Uint8Array* TextEncoder::encode(DeprecatedString const& input) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,6 +31,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
// https://encoding.spec.whatwg.org/#dom-textencoder
|
// https://encoding.spec.whatwg.org/#dom-textencoder
|
||||||
explicit TextEncoder(JS::Realm&);
|
explicit TextEncoder(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,11 +33,16 @@ Headers::Headers(JS::Realm& realm, JS::NonnullGCPtr<Infrastructure::HeaderList>
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_header_list(header_list)
|
, m_header_list(header_list)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Headers"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Headers::~Headers() = default;
|
Headers::~Headers() = default;
|
||||||
|
|
||||||
|
void Headers::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HeadersPrototype>(realm, "Headers"));
|
||||||
|
}
|
||||||
|
|
||||||
void Headers::visit_edges(JS::Cell::Visitor& visitor)
|
void Headers::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -60,6 +60,7 @@ private:
|
||||||
|
|
||||||
Headers(JS::Realm&, JS::NonnullGCPtr<Infrastructure::HeaderList>);
|
Headers(JS::Realm&, JS::NonnullGCPtr<Infrastructure::HeaderList>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
WebIDL::ExceptionOr<bool> validate(Infrastructure::Header const&) const;
|
WebIDL::ExceptionOr<bool> validate(Infrastructure::Header const&) const;
|
||||||
|
|
|
@ -33,11 +33,16 @@ HeadersIterator::HeadersIterator(Headers const& headers, JS::Object::PropertyKin
|
||||||
, m_headers(headers)
|
, m_headers(headers)
|
||||||
, m_iteration_kind(iteration_kind)
|
, m_iteration_kind(iteration_kind)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::HeadersIteratorPrototype>(headers.realm(), "HeadersIterator"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HeadersIterator::~HeadersIterator() = default;
|
HeadersIterator::~HeadersIterator() = default;
|
||||||
|
|
||||||
|
void HeadersIterator::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HeadersIteratorPrototype>(realm, "HeadersIterator"));
|
||||||
|
}
|
||||||
|
|
||||||
void HeadersIterator::visit_edges(JS::Cell::Visitor& visitor)
|
void HeadersIterator::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -22,6 +22,7 @@ public:
|
||||||
JS::ThrowCompletionOr<JS::Object*> next();
|
JS::ThrowCompletionOr<JS::Object*> next();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(JS::Cell::Visitor&) override;
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
||||||
|
|
||||||
HeadersIterator(Headers const&, JS::Object::PropertyKind iteration_kind);
|
HeadersIterator(Headers const&, JS::Object::PropertyKind iteration_kind);
|
||||||
|
|
|
@ -25,11 +25,16 @@ Request::Request(JS::Realm& realm, JS::NonnullGCPtr<Infrastructure::Request> req
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_request(request)
|
, m_request(request)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Request"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Request::~Request() = default;
|
Request::~Request() = default;
|
||||||
|
|
||||||
|
void Request::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::RequestPrototype>(realm, "Request"));
|
||||||
|
}
|
||||||
|
|
||||||
void Request::visit_edges(Cell::Visitor& visitor)
|
void Request::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
private:
|
private:
|
||||||
Request(JS::Realm&, JS::NonnullGCPtr<Infrastructure::Request>);
|
Request(JS::Realm&, JS::NonnullGCPtr<Infrastructure::Request>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-request-request
|
// https://fetch.spec.whatwg.org/#concept-request-request
|
||||||
|
|
|
@ -22,11 +22,16 @@ Response::Response(JS::Realm& realm, JS::NonnullGCPtr<Infrastructure::Response>
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_response(response)
|
, m_response(response)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Response"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Response::~Response() = default;
|
Response::~Response() = default;
|
||||||
|
|
||||||
|
void Response::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ResponsePrototype>(realm, "Response"));
|
||||||
|
}
|
||||||
|
|
||||||
void Response::visit_edges(Cell::Visitor& visitor)
|
void Response::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -62,6 +62,7 @@ public:
|
||||||
private:
|
private:
|
||||||
Response(JS::Realm&, JS::NonnullGCPtr<Infrastructure::Response>);
|
Response(JS::Realm&, JS::NonnullGCPtr<Infrastructure::Response>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
WebIDL::ExceptionOr<void> initialize_response(ResponseInit const&, Optional<Infrastructure::BodyWithType> const&);
|
WebIDL::ExceptionOr<void> initialize_response(ResponseInit const&, Optional<Infrastructure::BodyWithType> const&);
|
||||||
|
|
|
@ -115,7 +115,6 @@ bool is_basic_latin(StringView view)
|
||||||
Blob::Blob(JS::Realm& realm)
|
Blob::Blob(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Blob"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Blob::Blob(JS::Realm& realm, ByteBuffer byte_buffer, DeprecatedString type)
|
Blob::Blob(JS::Realm& realm, ByteBuffer byte_buffer, DeprecatedString type)
|
||||||
|
@ -123,18 +122,22 @@ Blob::Blob(JS::Realm& realm, ByteBuffer byte_buffer, DeprecatedString type)
|
||||||
, m_byte_buffer(move(byte_buffer))
|
, m_byte_buffer(move(byte_buffer))
|
||||||
, m_type(move(type))
|
, m_type(move(type))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Blob"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Blob::Blob(JS::Realm& realm, ByteBuffer byte_buffer)
|
Blob::Blob(JS::Realm& realm, ByteBuffer byte_buffer)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_byte_buffer(move(byte_buffer))
|
, m_byte_buffer(move(byte_buffer))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "Blob"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Blob::~Blob() = default;
|
Blob::~Blob() = default;
|
||||||
|
|
||||||
|
void Blob::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::BlobPrototype>(realm, "Blob"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/FileAPI/#ref-for-dom-blob-blob
|
// https://w3c.github.io/FileAPI/#ref-for-dom-blob-blob
|
||||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<Blob>> Blob::create(JS::Realm& realm, Optional<Vector<BlobPart>> const& blob_parts, Optional<BlobPropertyBag> const& options)
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<Blob>> Blob::create(JS::Realm& realm, Optional<Vector<BlobPart>> const& blob_parts, Optional<BlobPropertyBag> const& options)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,6 +53,8 @@ protected:
|
||||||
Blob(JS::Realm&, ByteBuffer, DeprecatedString type);
|
Blob(JS::Realm&, ByteBuffer, DeprecatedString type);
|
||||||
Blob(JS::Realm&, ByteBuffer);
|
Blob(JS::Realm&, ByteBuffer);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit Blob(JS::Realm&);
|
explicit Blob(JS::Realm&);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,12 @@ File::File(JS::Realm& realm, ByteBuffer byte_buffer, DeprecatedString file_name,
|
||||||
, m_name(move(file_name))
|
, m_name(move(file_name))
|
||||||
, m_last_modified(last_modified)
|
, m_last_modified(last_modified)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "File"));
|
}
|
||||||
|
|
||||||
|
void File::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::FilePrototype>(realm, "File"));
|
||||||
}
|
}
|
||||||
|
|
||||||
File::~File() = default;
|
File::~File() = default;
|
||||||
|
|
|
@ -31,6 +31,8 @@ public:
|
||||||
private:
|
private:
|
||||||
File(JS::Realm&, ByteBuffer, DeprecatedString file_name, DeprecatedString type, i64 last_modified);
|
File(JS::Realm&, ByteBuffer, DeprecatedString file_name, DeprecatedString type, i64 last_modified);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
DeprecatedString m_name;
|
DeprecatedString m_name;
|
||||||
i64 m_last_modified { 0 };
|
i64 m_last_modified { 0 };
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,7 +18,6 @@ JS::NonnullGCPtr<DOMPoint> DOMPoint::construct_impl(JS::Realm& realm, double x,
|
||||||
DOMPoint::DOMPoint(JS::Realm& realm, double x, double y, double z, double w)
|
DOMPoint::DOMPoint(JS::Realm& realm, double x, double y, double z, double w)
|
||||||
: DOMPointReadOnly(realm, x, y, z, w)
|
: DOMPointReadOnly(realm, x, y, z, w)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "DOMPoint"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://drafts.fxtf.org/geometry/#dom-dompoint-frompoint
|
// https://drafts.fxtf.org/geometry/#dom-dompoint-frompoint
|
||||||
|
@ -30,4 +29,10 @@ JS::NonnullGCPtr<DOMPoint> DOMPoint::from_point(JS::VM& vm, DOMPointInit const&
|
||||||
|
|
||||||
DOMPoint::~DOMPoint() = default;
|
DOMPoint::~DOMPoint() = default;
|
||||||
|
|
||||||
|
void DOMPoint::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMPointPrototype>(realm, "DOMPoint"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DOMPoint(JS::Realm&, double x, double y, double z, double w);
|
DOMPoint(JS::Realm&, double x, double y, double z, double w);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ DOMPointReadOnly::DOMPointReadOnly(JS::Realm& realm, double x, double y, double
|
||||||
, m_z(z)
|
, m_z(z)
|
||||||
, m_w(w)
|
, m_w(w)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "DOMPointReadOnly"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://drafts.fxtf.org/geometry/#dom-dompointreadonly-frompoint
|
// https://drafts.fxtf.org/geometry/#dom-dompointreadonly-frompoint
|
||||||
|
@ -34,4 +33,10 @@ JS::NonnullGCPtr<DOMPointReadOnly> DOMPointReadOnly::from_point(JS::VM& vm, DOMP
|
||||||
|
|
||||||
DOMPointReadOnly::~DOMPointReadOnly() = default;
|
DOMPointReadOnly::~DOMPointReadOnly() = default;
|
||||||
|
|
||||||
|
void DOMPointReadOnly::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMPointReadOnlyPrototype>(realm, "DOMPointReadOnly"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
DOMPointReadOnly(JS::Realm&, double x, double y, double z, double w);
|
DOMPointReadOnly(JS::Realm&, double x, double y, double z, double w);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
double m_x;
|
double m_x;
|
||||||
double m_y;
|
double m_y;
|
||||||
double m_z;
|
double m_z;
|
||||||
|
|
|
@ -22,9 +22,14 @@ JS::NonnullGCPtr<DOMRect> DOMRect::create(JS::Realm& realm, Gfx::FloatRect const
|
||||||
DOMRect::DOMRect(JS::Realm& realm, double x, double y, double width, double height)
|
DOMRect::DOMRect(JS::Realm& realm, double x, double y, double width, double height)
|
||||||
: DOMRectReadOnly(realm, x, y, width, height)
|
: DOMRectReadOnly(realm, x, y, width, height)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "DOMRect"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMRect::~DOMRect() = default;
|
DOMRect::~DOMRect() = default;
|
||||||
|
|
||||||
|
void DOMRect::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMRectPrototype>(realm, "DOMRect"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DOMRect(JS::Realm&, double x, double y, double width, double height);
|
DOMRect(JS::Realm&, double x, double y, double width, double height);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,14 @@ DOMRectReadOnly::DOMRectReadOnly(JS::Realm& realm, double x, double y, double wi
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_rect(x, y, width, height)
|
, m_rect(x, y, width, height)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "DOMRectReadOnly"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMRectReadOnly::~DOMRectReadOnly() = default;
|
DOMRectReadOnly::~DOMRectReadOnly() = default;
|
||||||
|
|
||||||
|
void DOMRectReadOnly::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMRectReadOnlyPrototype>(realm, "DOMRectReadOnly"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
DOMRectReadOnly(JS::Realm&, double x, double y, double width, double height);
|
DOMRectReadOnly(JS::Realm&, double x, double y, double width, double height);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
Gfx::FloatRect m_rect;
|
Gfx::FloatRect m_rect;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,11 +43,16 @@ CanvasGradient::CanvasGradient(JS::Realm& realm, Type type)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
, m_type(type)
|
, m_type(type)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "CanvasGradient"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CanvasGradient::~CanvasGradient() = default;
|
CanvasGradient::~CanvasGradient() = default;
|
||||||
|
|
||||||
|
void CanvasGradient::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CanvasGradientPrototype>(realm, "CanvasGradient"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasgradient-addcolorstop
|
// https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasgradient-addcolorstop
|
||||||
WebIDL::ExceptionOr<void> CanvasGradient::add_color_stop(double offset, DeprecatedString const& color)
|
WebIDL::ExceptionOr<void> CanvasGradient::add_color_stop(double offset, DeprecatedString const& color)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,8 @@ public:
|
||||||
private:
|
private:
|
||||||
CanvasGradient(JS::Realm&, Type);
|
CanvasGradient(JS::Realm&, Type);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
Type m_type {};
|
Type m_type {};
|
||||||
|
|
||||||
struct ColorStop {
|
struct ColorStop {
|
||||||
|
|
|
@ -33,11 +33,16 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(JS::Realm& realm, HTMLCanvasE
|
||||||
, CanvasPath(static_cast<Bindings::PlatformObject&>(*this))
|
, CanvasPath(static_cast<Bindings::PlatformObject&>(*this))
|
||||||
, m_element(element)
|
, m_element(element)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "CanvasRenderingContext2D"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CanvasRenderingContext2D::~CanvasRenderingContext2D() = default;
|
CanvasRenderingContext2D::~CanvasRenderingContext2D() = default;
|
||||||
|
|
||||||
|
void CanvasRenderingContext2D::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CanvasRenderingContext2DPrototype>(realm, "CanvasRenderingContext2D"));
|
||||||
|
}
|
||||||
|
|
||||||
void CanvasRenderingContext2D::visit_edges(Cell::Visitor& visitor)
|
void CanvasRenderingContext2D::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -86,6 +86,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit CanvasRenderingContext2D(JS::Realm&, HTMLCanvasElement&);
|
explicit CanvasRenderingContext2D(JS::Realm&, HTMLCanvasElement&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
struct PreparedTextGlyph {
|
struct PreparedTextGlyph {
|
||||||
|
|
|
@ -25,9 +25,14 @@ CloseEvent::CloseEvent(JS::Realm& realm, DeprecatedFlyString const& event_name,
|
||||||
, m_code(event_init.code)
|
, m_code(event_init.code)
|
||||||
, m_reason(event_init.reason)
|
, m_reason(event_init.reason)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "CloseEvent"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseEvent::~CloseEvent() = default;
|
CloseEvent::~CloseEvent() = default;
|
||||||
|
|
||||||
|
void CloseEvent::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CloseEventPrototype>(realm, "CloseEvent"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ public:
|
||||||
private:
|
private:
|
||||||
CloseEvent(JS::Realm&, DeprecatedFlyString const& event_name, CloseEventInit const& event_init);
|
CloseEvent(JS::Realm&, DeprecatedFlyString const& event_name, CloseEventInit const& event_init);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
bool m_was_clean { false };
|
bool m_was_clean { false };
|
||||||
u16 m_code { 0 };
|
u16 m_code { 0 };
|
||||||
DeprecatedString m_reason;
|
DeprecatedString m_reason;
|
||||||
|
|
|
@ -21,11 +21,16 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMParser>> DOMParser::construct_impl(JS::R
|
||||||
DOMParser::DOMParser(JS::Realm& realm)
|
DOMParser::DOMParser(JS::Realm& realm)
|
||||||
: PlatformObject(realm)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "DOMParser"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMParser::~DOMParser() = default;
|
DOMParser::~DOMParser() = default;
|
||||||
|
|
||||||
|
void DOMParser::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMParserPrototype>(realm, "DOMParser"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring
|
// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring
|
||||||
JS::NonnullGCPtr<DOM::Document> DOMParser::parse_from_string(DeprecatedString const& string, Bindings::DOMParserSupportedType type)
|
JS::NonnullGCPtr<DOM::Document> DOMParser::parse_from_string(DeprecatedString const& string, Bindings::DOMParserSupportedType type)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit DOMParser(JS::Realm&);
|
explicit DOMParser(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,11 +27,16 @@ ErrorEvent::ErrorEvent(JS::Realm& realm, DeprecatedFlyString const& event_name,
|
||||||
, m_colno(event_init.colno)
|
, m_colno(event_init.colno)
|
||||||
, m_error(event_init.error)
|
, m_error(event_init.error)
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm, "ErrorEvent"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorEvent::~ErrorEvent() = default;
|
ErrorEvent::~ErrorEvent() = default;
|
||||||
|
|
||||||
|
void ErrorEvent::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ErrorEventPrototype>(realm, "ErrorEvent"));
|
||||||
|
}
|
||||||
|
|
||||||
void ErrorEvent::visit_edges(Cell::Visitor& visitor)
|
void ErrorEvent::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -47,6 +47,7 @@ public:
|
||||||
private:
|
private:
|
||||||
ErrorEvent(JS::Realm&, DeprecatedFlyString const& event_name, ErrorEventInit const& event_init);
|
ErrorEvent(JS::Realm&, DeprecatedFlyString const& event_name, ErrorEventInit const& event_init);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
DeprecatedString m_message { "" };
|
DeprecatedString m_message { "" };
|
||||||
|
|
|
@ -13,8 +13,6 @@ namespace Web::HTML {
|
||||||
HTMLAnchorElement::HTMLAnchorElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
HTMLAnchorElement::HTMLAnchorElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: HTMLElement(document, move(qualified_name))
|
: HTMLElement(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "HTMLAnchorElement"));
|
|
||||||
|
|
||||||
activation_behavior = [this](auto const& event) {
|
activation_behavior = [this](auto const& event) {
|
||||||
run_activation_behavior(event);
|
run_activation_behavior(event);
|
||||||
};
|
};
|
||||||
|
@ -22,6 +20,12 @@ HTMLAnchorElement::HTMLAnchorElement(DOM::Document& document, DOM::QualifiedName
|
||||||
|
|
||||||
HTMLAnchorElement::~HTMLAnchorElement() = default;
|
HTMLAnchorElement::~HTMLAnchorElement() = default;
|
||||||
|
|
||||||
|
void HTMLAnchorElement::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLAnchorElementPrototype>(realm, "HTMLAnchorElement"));
|
||||||
|
}
|
||||||
|
|
||||||
void HTMLAnchorElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
void HTMLAnchorElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
||||||
{
|
{
|
||||||
HTMLElement::parse_attribute(name, value);
|
HTMLElement::parse_attribute(name, value);
|
||||||
|
|
|
@ -32,6 +32,8 @@ public:
|
||||||
private:
|
private:
|
||||||
HTMLAnchorElement(DOM::Document&, DOM::QualifiedName);
|
HTMLAnchorElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
void run_activation_behavior(Web::DOM::Event const&);
|
void run_activation_behavior(Web::DOM::Event const&);
|
||||||
|
|
||||||
// ^DOM::Element
|
// ^DOM::Element
|
||||||
|
|
|
@ -13,11 +13,16 @@ namespace Web::HTML {
|
||||||
HTMLAreaElement::HTMLAreaElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
HTMLAreaElement::HTMLAreaElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: HTMLElement(document, move(qualified_name))
|
: HTMLElement(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "HTMLAreaElement"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLAreaElement::~HTMLAreaElement() = default;
|
HTMLAreaElement::~HTMLAreaElement() = default;
|
||||||
|
|
||||||
|
void HTMLAreaElement::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLAreaElementPrototype>(realm, "HTMLAreaElement"));
|
||||||
|
}
|
||||||
|
|
||||||
void HTMLAreaElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
void HTMLAreaElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
||||||
{
|
{
|
||||||
HTMLElement::parse_attribute(name, value);
|
HTMLElement::parse_attribute(name, value);
|
||||||
|
|
|
@ -23,6 +23,8 @@ public:
|
||||||
private:
|
private:
|
||||||
HTMLAreaElement(DOM::Document&, DOM::QualifiedName);
|
HTMLAreaElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
// ^DOM::Element
|
// ^DOM::Element
|
||||||
virtual void parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value) override;
|
virtual void parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value) override;
|
||||||
virtual i32 default_tab_index_value() const override;
|
virtual i32 default_tab_index_value() const override;
|
||||||
|
|
|
@ -12,8 +12,14 @@ namespace Web::HTML {
|
||||||
HTMLAudioElement::HTMLAudioElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
HTMLAudioElement::HTMLAudioElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: HTMLMediaElement(document, move(qualified_name))
|
: HTMLMediaElement(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
set_prototype(&Bindings::cached_web_prototype(realm(), "HTMLAudioElement"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLAudioElement::~HTMLAudioElement() = default;
|
HTMLAudioElement::~HTMLAudioElement() = default;
|
||||||
|
|
||||||
|
void HTMLAudioElement::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLAudioElementPrototype>(realm, "HTMLAudioElement"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLAudioElement(DOM::Document&, DOM::QualifiedName);
|
HTMLAudioElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue