mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-07 16:40:59 +00:00
LibWeb: Move passing of Web object prototypes out of constructors
This commit is contained in:
parent
834202aeb9
commit
af75493883
|
@ -10,8 +10,8 @@
|
||||||
|
|
||||||
namespace Web::Bindings {
|
namespace Web::Bindings {
|
||||||
|
|
||||||
LegacyPlatformObject::LegacyPlatformObject(JS::Object& prototype)
|
LegacyPlatformObject::LegacyPlatformObject(JS::Realm& realm)
|
||||||
: PlatformObject(prototype)
|
: PlatformObject(realm)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ public:
|
||||||
virtual bool is_supported_property_index(u32) const;
|
virtual bool is_supported_property_index(u32) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit LegacyPlatformObject(JS::Object& prototype);
|
explicit LegacyPlatformObject(JS::Realm& realm);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
23
Userland/Libraries/LibWeb/Bindings/WindowPrototype.cpp
Normal file
23
Userland/Libraries/LibWeb/Bindings/WindowPrototype.cpp
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <LibJS/Runtime/Realm.h>
|
||||||
|
#include <LibWeb/Bindings/WindowPrototype.h>
|
||||||
|
|
||||||
|
namespace Web::Bindings {
|
||||||
|
|
||||||
|
WindowPrototype::WindowPrototype(JS::Realm& realm)
|
||||||
|
: JS::Object(realm, nullptr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowPrototype::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::EventTargetPrototype>(realm, "EventTarget"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -16,10 +16,10 @@ class WindowPrototype final : public JS::Object {
|
||||||
JS_OBJECT(WindowPrototype, JS::Object);
|
JS_OBJECT(WindowPrototype, JS::Object);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit WindowPrototype(JS::Realm& realm)
|
explicit WindowPrototype(JS::Realm& realm);
|
||||||
: JS::Object(ConstructWithPrototypeTag::Tag, cached_web_prototype(realm, "EventTarget"))
|
|
||||||
{
|
private:
|
||||||
}
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ set(SOURCES
|
||||||
Bindings/OptionConstructor.cpp
|
Bindings/OptionConstructor.cpp
|
||||||
Bindings/PlatformObject.cpp
|
Bindings/PlatformObject.cpp
|
||||||
Bindings/WindowConstructor.cpp
|
Bindings/WindowConstructor.cpp
|
||||||
|
Bindings/WindowPrototype.cpp
|
||||||
Crypto/Crypto.cpp
|
Crypto/Crypto.cpp
|
||||||
Crypto/SubtleCrypto.cpp
|
Crypto/SubtleCrypto.cpp
|
||||||
CSS/Angle.cpp
|
CSS/Angle.cpp
|
||||||
|
|
|
@ -26,7 +26,7 @@ CSSRuleList* CSSRuleList::create(JS::Realm& realm, JS::MarkedVector<CSSRule*> co
|
||||||
}
|
}
|
||||||
|
|
||||||
CSSRuleList::CSSRuleList(JS::Realm& realm)
|
CSSRuleList::CSSRuleList(JS::Realm& realm)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::ensure_web_prototype<Bindings::CSSRuleListPrototype>(realm, "CSSRuleList"))
|
: Bindings::LegacyPlatformObject(realm)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +35,12 @@ CSSRuleList* CSSRuleList::create_empty(JS::Realm& realm)
|
||||||
return realm.heap().allocate<CSSRuleList>(realm, realm);
|
return realm.heap().allocate<CSSRuleList>(realm, realm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSSRuleList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSRuleListPrototype>(realm, "CSSRuleList"));
|
||||||
|
}
|
||||||
|
|
||||||
void CSSRuleList::visit_edges(Cell::Visitor& visitor)
|
void CSSRuleList::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -66,6 +66,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit CSSRuleList(JS::Realm&);
|
explicit CSSRuleList(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
Vector<CSSRule&> m_rules;
|
Vector<CSSRule&> m_rules;
|
||||||
|
|
|
@ -18,11 +18,17 @@ MediaList* MediaList::create(JS::Realm& realm, NonnullRefPtrVector<MediaQuery>&&
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaList::MediaList(JS::Realm& realm, NonnullRefPtrVector<MediaQuery>&& media)
|
MediaList::MediaList(JS::Realm& realm, NonnullRefPtrVector<MediaQuery>&& media)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::ensure_web_prototype<Bindings::MediaListPrototype>(realm, "MediaList"))
|
: Bindings::LegacyPlatformObject(realm)
|
||||||
, m_media(move(media))
|
, m_media(move(media))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaListPrototype>(realm, "MediaList"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://www.w3.org/TR/cssom-1/#dom-medialist-mediatext
|
// https://www.w3.org/TR/cssom-1/#dom-medialist-mediatext
|
||||||
DeprecatedString MediaList::media_text() const
|
DeprecatedString MediaList::media_text() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,6 +39,8 @@ public:
|
||||||
private:
|
private:
|
||||||
MediaList(JS::Realm&, NonnullRefPtrVector<MediaQuery>&&);
|
MediaList(JS::Realm&, NonnullRefPtrVector<MediaQuery>&&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
NonnullRefPtrVector<MediaQuery> m_media;
|
NonnullRefPtrVector<MediaQuery> m_media;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -52,11 +52,17 @@ StyleSheetList* StyleSheetList::create(DOM::Document& document)
|
||||||
}
|
}
|
||||||
|
|
||||||
StyleSheetList::StyleSheetList(DOM::Document& document)
|
StyleSheetList::StyleSheetList(DOM::Document& document)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::ensure_web_prototype<Bindings::StyleSheetListPrototype>(document.realm(), "StyleSheetList"))
|
: Bindings::LegacyPlatformObject(document.realm())
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StyleSheetList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::StyleSheetListPrototype>(realm, "StyleSheetList"));
|
||||||
|
}
|
||||||
|
|
||||||
void StyleSheetList::visit_edges(Cell::Visitor& visitor)
|
void StyleSheetList::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -41,6 +41,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit StyleSheetList(DOM::Document&);
|
explicit StyleSheetList(DOM::Document&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
void sort_sheets();
|
void sort_sheets();
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
AbstractRange::AbstractRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
AbstractRange::AbstractRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
|
||||||
: Bindings::PlatformObject(Bindings::cached_web_prototype(start_container.realm(), "AbstractRange"))
|
: Bindings::PlatformObject(start_container.realm())
|
||||||
, m_start_container(start_container)
|
, m_start_container(start_container)
|
||||||
, m_start_offset(start_offset)
|
, m_start_offset(start_offset)
|
||||||
, m_end_container(end_container)
|
, m_end_container(end_container)
|
||||||
|
@ -21,6 +21,12 @@ AbstractRange::AbstractRange(Node& start_container, u32 start_offset, Node& end_
|
||||||
|
|
||||||
AbstractRange::~AbstractRange() = default;
|
AbstractRange::~AbstractRange() = default;
|
||||||
|
|
||||||
|
void AbstractRange::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::AbstractRangePrototype>(realm, "AbstractRange"));
|
||||||
|
}
|
||||||
|
|
||||||
void AbstractRange::visit_edges(Cell::Visitor& visitor)
|
void AbstractRange::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -36,6 +36,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
AbstractRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
AbstractRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
JS::NonnullGCPtr<Node> m_start_container;
|
JS::NonnullGCPtr<Node> m_start_container;
|
||||||
|
|
|
@ -24,13 +24,19 @@ JS::NonnullGCPtr<DOMImplementation> DOMImplementation::create(Document& document
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMImplementation::DOMImplementation(Document& document)
|
DOMImplementation::DOMImplementation(Document& document)
|
||||||
: PlatformObject(Bindings::cached_web_prototype(document.realm(), "DOMImplementation"))
|
: PlatformObject(document.realm())
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMImplementation::~DOMImplementation() = default;
|
DOMImplementation::~DOMImplementation() = default;
|
||||||
|
|
||||||
|
void DOMImplementation::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMImplementationPrototype>(realm, "DOMImplementation"));
|
||||||
|
}
|
||||||
|
|
||||||
void DOMImplementation::visit_edges(Cell::Visitor& visitor)
|
void DOMImplementation::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -30,6 +30,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit DOMImplementation(Document&);
|
explicit DOMImplementation(Document&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
Document& document() { return m_document; }
|
Document& document() { return m_document; }
|
||||||
|
|
|
@ -60,7 +60,7 @@ DOMTokenList* DOMTokenList::create(Element const& associated_element, Deprecated
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#ref-for-domtokenlist%E2%91%A0%E2%91%A2
|
// https://dom.spec.whatwg.org/#ref-for-domtokenlist%E2%91%A0%E2%91%A2
|
||||||
DOMTokenList::DOMTokenList(Element const& associated_element, DeprecatedFlyString associated_attribute)
|
DOMTokenList::DOMTokenList(Element const& associated_element, DeprecatedFlyString associated_attribute)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::cached_web_prototype(associated_element.realm(), "DOMTokenList"))
|
: Bindings::LegacyPlatformObject(associated_element.realm())
|
||||||
, m_associated_element(associated_element)
|
, m_associated_element(associated_element)
|
||||||
, m_associated_attribute(move(associated_attribute))
|
, m_associated_attribute(move(associated_attribute))
|
||||||
{
|
{
|
||||||
|
@ -68,6 +68,12 @@ DOMTokenList::DOMTokenList(Element const& associated_element, DeprecatedFlyStrin
|
||||||
associated_attribute_changed(value);
|
associated_attribute_changed(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DOMTokenList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMTokenListPrototype>(realm, "DOMTokenList"));
|
||||||
|
}
|
||||||
|
|
||||||
void DOMTokenList::visit_edges(Cell::Visitor& visitor)
|
void DOMTokenList::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -45,6 +45,7 @@ public:
|
||||||
private:
|
private:
|
||||||
DOMTokenList(Element const& associated_element, DeprecatedFlyString associated_attribute);
|
DOMTokenList(Element const& associated_element, DeprecatedFlyString associated_attribute);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
WebIDL::ExceptionOr<void> validate_token(StringView token) const;
|
WebIDL::ExceptionOr<void> validate_token(StringView token) const;
|
||||||
|
|
|
@ -25,14 +25,14 @@ JS::NonnullGCPtr<Event> Event::construct_impl(JS::Realm& realm, DeprecatedFlyStr
|
||||||
}
|
}
|
||||||
|
|
||||||
Event::Event(JS::Realm& realm, DeprecatedFlyString const& type)
|
Event::Event(JS::Realm& realm, DeprecatedFlyString const& type)
|
||||||
: PlatformObject(Bindings::cached_web_prototype(realm, "Event"))
|
: PlatformObject(realm)
|
||||||
, m_type(type)
|
, m_type(type)
|
||||||
, m_initialized(true)
|
, m_initialized(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Event::Event(JS::Realm& realm, DeprecatedFlyString const& type, EventInit const& event_init)
|
Event::Event(JS::Realm& realm, DeprecatedFlyString const& type, EventInit const& event_init)
|
||||||
: PlatformObject(Bindings::cached_web_prototype(realm, "Event"))
|
: PlatformObject(realm)
|
||||||
, m_type(type)
|
, m_type(type)
|
||||||
, m_bubbles(event_init.bubbles)
|
, m_bubbles(event_init.bubbles)
|
||||||
, m_cancelable(event_init.cancelable)
|
, m_cancelable(event_init.cancelable)
|
||||||
|
@ -41,6 +41,12 @@ Event::Event(JS::Realm& realm, DeprecatedFlyString const& type, EventInit const&
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Event::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::EventPrototype>(realm, "Event"));
|
||||||
|
}
|
||||||
|
|
||||||
void Event::visit_edges(Visitor& visitor)
|
void Event::visit_edges(Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -145,6 +145,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void initialize_event(DeprecatedString const&, bool, bool);
|
void initialize_event(DeprecatedString const&, bool, bool);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Visitor&) override;
|
virtual void visit_edges(Visitor&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -19,7 +19,7 @@ JS::NonnullGCPtr<HTMLCollection> HTMLCollection::create(ParentNode& root, Functi
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLCollection::HTMLCollection(ParentNode& root, Function<bool(Element const&)> filter)
|
HTMLCollection::HTMLCollection(ParentNode& root, Function<bool(Element const&)> filter)
|
||||||
: LegacyPlatformObject(Bindings::cached_web_prototype(root.realm(), "HTMLCollection"))
|
: LegacyPlatformObject(root.realm())
|
||||||
, m_root(root)
|
, m_root(root)
|
||||||
, m_filter(move(filter))
|
, m_filter(move(filter))
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,12 @@ HTMLCollection::HTMLCollection(ParentNode& root, Function<bool(Element const&)>
|
||||||
|
|
||||||
HTMLCollection::~HTMLCollection() = default;
|
HTMLCollection::~HTMLCollection() = default;
|
||||||
|
|
||||||
|
void HTMLCollection::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLCollectionPrototype>(realm, "HTMLCollection"));
|
||||||
|
}
|
||||||
|
|
||||||
void HTMLCollection::visit_edges(Cell::Visitor& visitor)
|
void HTMLCollection::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -47,6 +47,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
HTMLCollection(ParentNode& root, Function<bool(Element const&)> filter);
|
HTMLCollection(ParentNode& root, Function<bool(Element const&)> filter);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
JS::NonnullGCPtr<ParentNode> root() { return *m_root; }
|
JS::NonnullGCPtr<ParentNode> root() { return *m_root; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -20,11 +20,17 @@ JS::NonnullGCPtr<NamedNodeMap> NamedNodeMap::create(Element& element)
|
||||||
}
|
}
|
||||||
|
|
||||||
NamedNodeMap::NamedNodeMap(Element& element)
|
NamedNodeMap::NamedNodeMap(Element& element)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::cached_web_prototype(element.realm(), "NamedNodeMap"))
|
: Bindings::LegacyPlatformObject(element.realm())
|
||||||
, m_element(element)
|
, m_element(element)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NamedNodeMap::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::NamedNodeMapPrototype>(realm, "NamedNodeMap"));
|
||||||
|
}
|
||||||
|
|
||||||
void NamedNodeMap::visit_edges(Cell::Visitor& visitor)
|
void NamedNodeMap::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -56,6 +56,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit NamedNodeMap(Element&);
|
explicit NamedNodeMap(Element&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
Element& associated_element() { return *m_element; }
|
Element& associated_element() { return *m_element; }
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
NodeIterator::NodeIterator(Node& root)
|
NodeIterator::NodeIterator(Node& root)
|
||||||
: PlatformObject(Bindings::cached_web_prototype(root.realm(), "NodeIterator"))
|
: PlatformObject(root.realm())
|
||||||
, m_root(root)
|
, m_root(root)
|
||||||
, m_reference({ root })
|
, m_reference({ root })
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,12 @@ NodeIterator::NodeIterator(Node& root)
|
||||||
|
|
||||||
NodeIterator::~NodeIterator() = default;
|
NodeIterator::~NodeIterator() = default;
|
||||||
|
|
||||||
|
void NodeIterator::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::NodeIteratorPrototype>(realm, "NodeIterator"));
|
||||||
|
}
|
||||||
|
|
||||||
void NodeIterator::finalize()
|
void NodeIterator::finalize()
|
||||||
{
|
{
|
||||||
Base::finalize();
|
Base::finalize();
|
||||||
|
|
|
@ -37,6 +37,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit NodeIterator(Node& root);
|
explicit NodeIterator(Node& root);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
virtual void finalize() override;
|
virtual void finalize() override;
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,18 @@
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
NodeList::NodeList(JS::Realm& realm)
|
NodeList::NodeList(JS::Realm& realm)
|
||||||
: LegacyPlatformObject(Bindings::cached_web_prototype(realm, "NodeList"))
|
: LegacyPlatformObject(realm)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeList::~NodeList() = default;
|
NodeList::~NodeList() = default;
|
||||||
|
|
||||||
|
void NodeList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::NodeListPrototype>(realm, "NodeList"));
|
||||||
|
}
|
||||||
|
|
||||||
JS::Value NodeList::item_value(size_t index) const
|
JS::Value NodeList::item_value(size_t index) const
|
||||||
{
|
{
|
||||||
auto* node = item(index);
|
auto* node = item(index);
|
||||||
|
|
|
@ -26,6 +26,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit NodeList(JS::Realm&);
|
explicit NodeList(JS::Realm&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
TreeWalker::TreeWalker(Node& root)
|
TreeWalker::TreeWalker(Node& root)
|
||||||
: PlatformObject(Bindings::cached_web_prototype(root.realm(), "TreeWalker"))
|
: PlatformObject(root.realm())
|
||||||
, m_root(root)
|
, m_root(root)
|
||||||
, m_current(root)
|
, m_current(root)
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,12 @@ TreeWalker::TreeWalker(Node& root)
|
||||||
|
|
||||||
TreeWalker::~TreeWalker() = default;
|
TreeWalker::~TreeWalker() = default;
|
||||||
|
|
||||||
|
void TreeWalker::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::TreeWalkerPrototype>(realm, "TreeWalker"));
|
||||||
|
}
|
||||||
|
|
||||||
void TreeWalker::visit_edges(Cell::Visitor& visitor)
|
void TreeWalker::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit TreeWalker(Node& root);
|
explicit TreeWalker(Node& root);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
enum class ChildTraversalType {
|
enum class ChildTraversalType {
|
||||||
|
|
|
@ -17,13 +17,19 @@ JS::NonnullGCPtr<FileList> FileList::create(JS::Realm& realm, Vector<JS::Nonnull
|
||||||
}
|
}
|
||||||
|
|
||||||
FileList::FileList(JS::Realm& realm, Vector<JS::NonnullGCPtr<File>>&& files)
|
FileList::FileList(JS::Realm& realm, Vector<JS::NonnullGCPtr<File>>&& files)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::cached_web_prototype(realm, "FileList"))
|
: Bindings::LegacyPlatformObject(realm)
|
||||||
, m_files(move(files))
|
, m_files(move(files))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
FileList::~FileList() = default;
|
FileList::~FileList() = default;
|
||||||
|
|
||||||
|
void FileList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::FileListPrototype>(realm, "FileList"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/FileAPI/#dfn-item
|
// https://w3c.github.io/FileAPI/#dfn-item
|
||||||
bool FileList::is_supported_property_index(u32 index) const
|
bool FileList::is_supported_property_index(u32 index) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,7 @@ public:
|
||||||
private:
|
private:
|
||||||
FileList(JS::Realm&, Vector<JS::NonnullGCPtr<File>>&&);
|
FileList(JS::Realm&, Vector<JS::NonnullGCPtr<File>>&&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
Vector<JS::NonnullGCPtr<File>> m_files;
|
Vector<JS::NonnullGCPtr<File>> m_files;
|
||||||
|
|
|
@ -20,13 +20,19 @@ JS::NonnullGCPtr<DOMRectList> DOMRectList::create(JS::Realm& realm, Vector<JS::H
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMRectList::DOMRectList(JS::Realm& realm, Vector<JS::NonnullGCPtr<DOMRect>> rects)
|
DOMRectList::DOMRectList(JS::Realm& realm, Vector<JS::NonnullGCPtr<DOMRect>> rects)
|
||||||
: Bindings::LegacyPlatformObject(Bindings::cached_web_prototype(realm, "DOMRectList"))
|
: Bindings::LegacyPlatformObject(realm)
|
||||||
, m_rects(move(rects))
|
, m_rects(move(rects))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMRectList::~DOMRectList() = default;
|
DOMRectList::~DOMRectList() = default;
|
||||||
|
|
||||||
|
void DOMRectList::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMRectListPrototype>(realm, "DOMRectList"));
|
||||||
|
}
|
||||||
|
|
||||||
// https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length
|
// https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length
|
||||||
u32 DOMRectList::length() const
|
u32 DOMRectList::length() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,8 @@ public:
|
||||||
private:
|
private:
|
||||||
DOMRectList(JS::Realm&, Vector<JS::NonnullGCPtr<DOMRect>>);
|
DOMRectList(JS::Realm&, Vector<JS::NonnullGCPtr<DOMRect>>);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
Vector<JS::NonnullGCPtr<DOMRect>> m_rects;
|
Vector<JS::NonnullGCPtr<DOMRect>> m_rects;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,13 +19,19 @@ JS::NonnullGCPtr<DOMStringMap> DOMStringMap::create(DOM::Element& element)
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMStringMap::DOMStringMap(DOM::Element& element)
|
DOMStringMap::DOMStringMap(DOM::Element& element)
|
||||||
: LegacyPlatformObject(Bindings::cached_web_prototype(element.realm(), "DOMStringMap"))
|
: LegacyPlatformObject(element.realm())
|
||||||
, m_associated_element(element)
|
, m_associated_element(element)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DOMStringMap::~DOMStringMap() = default;
|
DOMStringMap::~DOMStringMap() = default;
|
||||||
|
|
||||||
|
void DOMStringMap::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMStringMapPrototype>(realm, "DOMStringMap"));
|
||||||
|
}
|
||||||
|
|
||||||
void DOMStringMap::visit_edges(Cell::Visitor& visitor)
|
void DOMStringMap::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
|
|
|
@ -31,6 +31,7 @@ public:
|
||||||
private:
|
private:
|
||||||
explicit DOMStringMap(DOM::Element&);
|
explicit DOMStringMap(DOM::Element&);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
// ^LegacyPlatformObject
|
// ^LegacyPlatformObject
|
||||||
|
|
Loading…
Reference in a new issue