Pārlūkot izejas kodu

LibWeb: Add equals() for LengthStyleValue and ColorStyleValue

The default equals() does to_string() on both sides which is pretty
silly when they are of the same type.
Andreas Kling 4 gadi atpakaļ
vecāks
revīzija
30685a7714
2 mainītis faili ar 24 papildinājumiem un 0 dzēšanām
  1. 10 0
      Libraries/LibWeb/CSS/Length.h
  2. 14 0
      Libraries/LibWeb/CSS/StyleValue.h

+ 10 - 0
Libraries/LibWeb/CSS/Length.h

@@ -154,6 +154,16 @@ public:
         return String::format("[%g %s]", m_value, unit_name());
     }
 
+    bool operator==(const Length& other) const
+    {
+        return m_type == other.m_type && m_value == other.m_value;
+    }
+
+    bool operator!=(const Length& other) const
+    {
+        return !(*this == other);
+    }
+
 private:
     float relative_length_to_px(const Layout::Node&) const;
 

+ 14 - 0
Libraries/LibWeb/CSS/StyleValue.h

@@ -338,6 +338,13 @@ public:
 
     virtual bool is_auto() const override { return m_length.is_auto(); }
 
+    virtual bool equals(const StyleValue& other) const override
+    {
+        if (type() != other.type())
+            return false;
+        return m_length == static_cast<const LengthStyleValue&>(other).m_length;
+    }
+
 private:
     explicit LengthStyleValue(const Length& length)
         : StyleValue(Type::Length)
@@ -388,6 +395,13 @@ public:
     String to_string() const override { return m_color.to_string(); }
     Color to_color(const DOM::Document&) const override { return m_color; }
 
+    virtual bool equals(const StyleValue& other) const override
+    {
+        if (type() != other.type())
+            return false;
+        return m_color == static_cast<const ColorStyleValue&>(other).m_color;
+    }
+
 private:
     explicit ColorStyleValue(Color color)
         : StyleValue(Type::Color)