diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 52a26c928a..b289ad903c 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -45,7 +45,6 @@ namespace Web::DOM { Element::Element(Document& document, DOM::QualifiedName qualified_name) : ParentNode(document, NodeType::ELEMENT_NODE) , m_qualified_name(move(qualified_name)) - , m_attributes(NamedNodeMap::create(*this)) { set_prototype(&window().cached_web_prototype("Element")); make_html_uppercased_qualified_name(); @@ -53,6 +52,12 @@ Element::Element(Document& document, DOM::QualifiedName qualified_name) Element::~Element() = default; +void Element::initialize(JS::Realm& realm) +{ + Base::initialize(realm); + m_attributes = NamedNodeMap::create(*this); +} + void Element::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index 0c64a6ceff..ed2cc60219 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -32,7 +32,6 @@ class Element WEB_PLATFORM_OBJECT(Element, ParentNode); public: - Element(Document&, DOM::QualifiedName); virtual ~Element() override; String const& qualified_name() const { return m_qualified_name.as_string(); } @@ -142,6 +141,9 @@ public: void serialize_pseudo_elements_as_json(JsonArraySerializer& children_array) const; protected: + Element(Document&, DOM::QualifiedName); + virtual void initialize(JS::Realm&) override; + virtual void children_changed() override; virtual void visit_edges(Cell::Visitor&) override; @@ -152,7 +154,7 @@ private: QualifiedName m_qualified_name; String m_html_uppercased_qualified_name; - JS::NonnullGCPtr m_attributes; + JS::GCPtr m_attributes; JS::GCPtr m_inline_style; JS::GCPtr m_class_list; JS::GCPtr m_shadow_root;