diff --git a/Libraries/LibHTML/CSS/StyleValue.h b/Libraries/LibHTML/CSS/StyleValue.h
index 574fd8215d..c5bc72947a 100644
--- a/Libraries/LibHTML/CSS/StyleValue.h
+++ b/Libraries/LibHTML/CSS/StyleValue.h
@@ -20,6 +20,9 @@ public:
Type type() const { return m_type; }
+ bool is_inherit() const { return type() == Type::Inherit; }
+ bool is_initial() const { return type() == Type::Initial; }
+
virtual String to_string() const = 0;
protected:
@@ -68,3 +71,31 @@ private:
Length m_length;
};
+
+class InitialStyleValue final : public StyleValue {
+public:
+ static NonnullRefPtr create() { return adopt(*new InitialStyleValue); }
+ virtual ~InitialStyleValue() override {}
+
+ String to_string() const override { return "initial"; }
+
+private:
+ InitialStyleValue()
+ : StyleValue(Type::Initial)
+ {
+ }
+};
+
+class InheritStyleValue final : public StyleValue {
+public:
+ static NonnullRefPtr create() { return adopt(*new InheritStyleValue); }
+ virtual ~InheritStyleValue() override {}
+
+ String to_string() const override { return "inherit"; }
+
+private:
+ InheritStyleValue()
+ : StyleValue(Type::Inherit)
+ {
+ }
+};
diff --git a/Libraries/LibHTML/Parser/CSSParser.cpp b/Libraries/LibHTML/Parser/CSSParser.cpp
index cfc5667884..408751f509 100644
--- a/Libraries/LibHTML/Parser/CSSParser.cpp
+++ b/Libraries/LibHTML/Parser/CSSParser.cpp
@@ -13,6 +13,10 @@ NonnullRefPtr parse_css_value(const StringView& view)
unsigned as_uint = string.to_uint(ok);
if (ok)
return LengthStyleValue::create(Length(as_uint, Length::Type::Absolute));
+ if (string == "inherit")
+ return InheritStyleValue::create();
+ if (string == "initial")
+ return InitialStyleValue::create();
if (string == "auto")
return LengthStyleValue::create(Length());
return StringStyleValue::create(string);