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;
};