Chromium Code Reviews| Index: Source/core/css/Rect.h |
| diff --git a/Source/core/css/Rect.h b/Source/core/css/Rect.h |
| index d8190b1293709b31c36dd945e73712e1f670b8fe..19ae8213424a6db617d6b71ea2c49af15b5d1bf2 100644 |
| --- a/Source/core/css/Rect.h |
| +++ b/Source/core/css/Rect.h |
| @@ -23,14 +23,25 @@ |
| #include "core/CoreExport.h" |
| #include "core/css/CSSPrimitiveValue.h" |
| +#include "core/css/CSSValue.h" |
| #include "wtf/RefPtr.h" |
| #include "wtf/text/StringBuilder.h" |
| namespace blink { |
| -class CORE_EXPORT RectBase : public RefCountedWillBeGarbageCollected<RectBase> { |
| - DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(RectBase); |
| +// TODO rename to CSSQuadValue. |
| +class CORE_EXPORT CSSQuadValue : public CSSValue { |
|
esprehn
2015/08/21 09:57:15
copy pasta error?
sashab
2015/08/24 01:56:59
Oops, thanks :) This file should be removed.
|
| public: |
| + static PassRefPtrWillBeRawPtr<CSSQuadValue> createQuad(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> top, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> right, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left) |
| + { |
| + return adoptRefWillBeNoop(new CSSQuadValue(top, right, bottom, left, false)); |
| + } |
| + |
| + static PassRefPtrWillBeRawPtr<CSSQuadValue> createRect(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> top, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> right, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left) |
| + { |
| + return adoptRefWillBeNoop(new CSSQuadValue(top, right, bottom, left, true)); |
| + } |
| + |
| CSSPrimitiveValue* top() const { return m_top.get(); } |
| CSSPrimitiveValue* right() const { return m_right.get(); } |
| CSSPrimitiveValue* bottom() const { return m_bottom.get(); } |
| @@ -41,7 +52,31 @@ public: |
| void setBottom(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom) { m_bottom = bottom; } |
| void setLeft(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left) { m_left = left; } |
| - bool equals(const RectBase& other) const |
| + String customCSSText() const |
| + { |
| + if (m_serializeAsRect) |
| + return "rect(" + top()->cssText() + ' ' + right()->cssText() + ' ' + bottom()->cssText() + ' ' + left()->cssText() + ')'; |
| + |
| + StringBuilder result; |
| + // reserve space for the four strings, plus three space separator characters. |
| + result.reserveCapacity(top().length() + right().length() + bottom().length() + left().length() + 3); |
| + result.append(top()); |
| + if (right() != top() || bottom() != top() || left() != top()) { |
| + result.append(' '); |
| + result.append(right()); |
| + if (bottom() != top() || right() != left()) { |
| + result.append(' '); |
| + result.append(bottom()); |
| + if (left() != right()) { |
| + result.append(' '); |
| + result.append(left()); |
| + } |
| + } |
| + } |
| + return result.toString(); |
| + } |
| + |
| + bool equals(const CSSQuadValue& other) const |
| { |
| return compareCSSValuePtr(m_top, other.m_top) |
| && compareCSSValuePtr(m_right, other.m_right) |
| @@ -52,9 +87,22 @@ public: |
| DECLARE_TRACE(); |
| protected: |
| - RectBase() { } |
| + CSSQuadValue(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> top, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> right, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left, bool serializeAsRect) |
| + : CSSValue(QuadClass) |
| + , m_serializeAsRect(serializeAsRect) |
| + , m_top(top) |
| + , m_right(right) |
| + , m_bottom(bottom) |
| + , m_left(left) { } |
| private: |
| + bool m_serializeAsRect; |
| + |
| + static String generateCSSString(const String& top, const String& right, const String& bottom, const String& left) |
| + { |
| + |
| + } |
| + |
| RefPtrWillBeMember<CSSPrimitiveValue> m_top; |
| RefPtrWillBeMember<CSSPrimitiveValue> m_right; |
| RefPtrWillBeMember<CSSPrimitiveValue> m_bottom; |
| @@ -88,31 +136,12 @@ public: |
| String cssText() const |
| { |
| - return generateCSSString(top()->cssText(), right()->cssText(), bottom()->cssText(), left()->cssText()); |
| + |
| } |
| private: |
| Quad() { } |
| - static String generateCSSString(const String& top, const String& right, const String& bottom, const String& left) |
| - { |
| - StringBuilder result; |
| - // reserve space for the four strings, plus three space separator characters. |
| - result.reserveCapacity(top.length() + right.length() + bottom.length() + left.length() + 3); |
| - result.append(top); |
| - if (right != top || bottom != top || left != top) { |
| - result.append(' '); |
| - result.append(right); |
| - if (bottom != top || right != left) { |
| - result.append(' '); |
| - result.append(bottom); |
| - if (left != right) { |
| - result.append(' '); |
| - result.append(left); |
| - } |
| - } |
| - } |
| - return result.toString(); |
| - } |
| + |
| // NOTE: If adding fields to this class please make the RectBase trace |
| // method virtual and add a trace method in this subclass tracing the new |