diff --git a/LibHTML/CSS/StyleDeclaration.cpp b/LibHTML/CSS/StyleDeclaration.cpp index 187c6ab766..cc550e2622 100644 --- a/LibHTML/CSS/StyleDeclaration.cpp +++ b/LibHTML/CSS/StyleDeclaration.cpp @@ -1,6 +1,8 @@ #include -StyleDeclaration::StyleDeclaration() +StyleDeclaration::StyleDeclaration(const String& property_name, NonnullRefPtr&& value) + : m_property_name(property_name) + , m_value(move(value)) { } diff --git a/LibHTML/CSS/StyleDeclaration.h b/LibHTML/CSS/StyleDeclaration.h index b93769e193..b9e3291838 100644 --- a/LibHTML/CSS/StyleDeclaration.h +++ b/LibHTML/CSS/StyleDeclaration.h @@ -3,15 +3,21 @@ #include #include -class StyleDeclaration { +class StyleDeclaration : public RefCounted { public: - StyleDeclaration(); + NonnullRefPtr create(const String& property_name, NonnullRefPtr&& value) + { + return adopt(*new StyleDeclaration(property_name, move(value))); + } + ~StyleDeclaration(); const String& property_name() const { return m_property_name; } const StyleValue& value() const { return *m_value; } public: + StyleDeclaration(const String& property_name, NonnullRefPtr&&); + String m_property_name; - RefPtr m_value; + NonnullRefPtr m_value; }; diff --git a/LibHTML/CSS/StyleRule.cpp b/LibHTML/CSS/StyleRule.cpp index e69de29bb2..f8688b9630 100644 --- a/LibHTML/CSS/StyleRule.cpp +++ b/LibHTML/CSS/StyleRule.cpp @@ -0,0 +1,8 @@ +#include + +StyleRule::StyleRule(Vector&& selectors, Vector>&& declarations) + : m_selectors(move(selectors)) + , m_declarations(move(declarations)) +{ + +} diff --git a/LibHTML/CSS/StyleRule.h b/LibHTML/CSS/StyleRule.h index 657d851d95..e4377b8053 100644 --- a/LibHTML/CSS/StyleRule.h +++ b/LibHTML/CSS/StyleRule.h @@ -4,12 +4,18 @@ #include #include -class StyleRule { +class StyleRule : public RefCounted { public: - StyleRule(); + NonnullRefPtr create(Vector&& selectors, Vector>&& declarations) + { + return adopt(*new StyleRule(move(selectors), move(declarations))); + } + ~StyleRule(); private: + StyleRule(Vector&&, Vector>&&); + Vector m_selectors; - Vector m_declarations; + Vector> m_declarations; }; diff --git a/LibHTML/CSS/StyleSheet.cpp b/LibHTML/CSS/StyleSheet.cpp index 840b46835b..58064325ed 100644 --- a/LibHTML/CSS/StyleSheet.cpp +++ b/LibHTML/CSS/StyleSheet.cpp @@ -1,6 +1,7 @@ #include -StyleSheet::StyleSheet() +StyleSheet::StyleSheet(Vector>&& rules) + : m_rules(move(rules)) { } diff --git a/LibHTML/CSS/StyleSheet.h b/LibHTML/CSS/StyleSheet.h index 7089b59e67..3a48e3a563 100644 --- a/LibHTML/CSS/StyleSheet.h +++ b/LibHTML/CSS/StyleSheet.h @@ -3,13 +3,19 @@ #include #include -class StyleSheet { +class StyleSheet : public RefCounted { public: - StyleSheet(); + NonnullRefPtr create(Vector>&& rules) + { + return adopt(*new StyleSheet(move(rules))); + } + ~StyleSheet(); - const Vector& rules() const { return m_rules; } + const Vector>& rules() const { return m_rules; } private: - Vector m_rules; + explicit StyleSheet(Vector>&&); + + Vector> m_rules; };