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