diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 1a7ca22da2..b4de7d4779 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -195,6 +195,7 @@ public: Identifier, Image, Position, + CustomProperty, }; Type type() const { return m_type; } @@ -207,6 +208,7 @@ public: bool is_string() const { return type() == Type::String; } bool is_length() const { return type() == Type::Length; } bool is_position() const { return type() == Type::Position; } + bool is_custom_property() const { return type() == Type::CustomProperty; } virtual String to_string() const = 0; virtual Length to_length() const { return Length::make_auto(); } @@ -233,6 +235,26 @@ private: Type m_type { Type::Invalid }; }; +// FIXME: Allow for fallback +class CustomStyleValue : public StyleValue { +public: + static NonnullRefPtr create(const String& custom_property_name) + { + return adopt_ref(*new CustomStyleValue(custom_property_name)); + } + String custom_property_name() const { return m_custom_property_name; } + String to_string() const override { return m_custom_property_name; } + +private: + explicit CustomStyleValue(const String& custom_property_name) + : StyleValue(Type::CustomProperty) + , m_custom_property_name(custom_property_name) + { + } + + String m_custom_property_name {}; +}; + class StringStyleValue : public StyleValue { public: static NonnullRefPtr create(const String& string)