Parcourir la source

LibWeb: Make StyleSheet mark its owner node

The garbage collector will take care of cycles.
Andreas Kling il y a 2 ans
Parent
commit
5724a04553

+ 2 - 4
Userland/Libraries/LibWeb/CSS/StyleSheet.cpp

@@ -21,15 +21,13 @@ StyleSheet::StyleSheet(HTML::Window& window_object)
 void StyleSheet::visit_edges(Cell::Visitor& visitor)
 {
     Base::visit_edges(visitor);
+    visitor.visit(m_owner_node);
     visitor.visit(m_parent_style_sheet);
 }
 
 void StyleSheet::set_owner_node(DOM::Element* element)
 {
-    if (element)
-        m_owner_node = element->make_weak_ptr<DOM::Element>();
-    else
-        m_owner_node = nullptr;
+    m_owner_node = element;
 }
 
 void StyleSheet::set_parent_css_style_sheet(CSSStyleSheet* parent)

+ 2 - 3
Userland/Libraries/LibWeb/CSS/StyleSheet.h

@@ -50,9 +50,8 @@ protected:
     virtual void visit_edges(Cell::Visitor&) override;
 
 private:
-    WeakPtr<DOM::Element> m_owner_node;
-
-    CSSStyleSheet* m_parent_style_sheet { nullptr };
+    JS::GCPtr<DOM::Element> m_owner_node;
+    JS::GCPtr<CSSStyleSheet> m_parent_style_sheet;
 
     String m_location;
     String m_title;