LibWeb: Virtualize StyleValue equality check

And use this to simplify comparing two IdentifierStyleValues.
This commit is contained in:
Andreas Kling 2020-12-14 15:04:13 +01:00
parent b04e0a7677
commit 861d22838d
Notes: sideshowbarker 2024-07-19 00:52:44 +09:00

View file

@ -202,6 +202,16 @@ public:
virtual bool is_auto() const { return false; }
bool operator==(const StyleValue& other) const { return equals(other); }
bool operator!=(const StyleValue& other) const { return !(*this == other); }
virtual bool equals(const StyleValue& other) const
{
if (type() != other.type())
return false;
return to_string() == other.to_string();
}
protected:
explicit StyleValue(Type);
@ -317,6 +327,13 @@ public:
virtual String to_string() const override;
virtual Color to_color(const DOM::Document&) const override;
virtual bool equals(const StyleValue& other) const override
{
if (type() != other.type())
return false;
return m_id == static_cast<const IdentifierStyleValue&>(other).m_id;
}
private:
explicit IdentifierStyleValue(CSS::ValueID id)
: StyleValue(Type::Identifier)