Chromium Code Reviews| Index: Source/core/css/CSSPrimitiveValue.cpp |
| diff --git a/Source/core/css/CSSPrimitiveValue.cpp b/Source/core/css/CSSPrimitiveValue.cpp |
| index a4eb31adb59c44b655d1fcb7e70f63912d60a1b1..ce2b7b50d2462a4e2ec64a16824afd4c784d9b7d 100644 |
| --- a/Source/core/css/CSSPrimitiveValue.cpp |
| +++ b/Source/core/css/CSSPrimitiveValue.cpp |
| @@ -26,6 +26,7 @@ |
| #include "core/css/CSSHelper.h" |
| #include "core/css/CSSMarkup.h" |
| #include "core/css/CSSToLengthConversionData.h" |
| +#include "core/css/CSSVariableData.h" |
| #include "core/css/Counter.h" |
| #include "core/css/Pair.h" |
| #include "core/css/Rect.h" |
| @@ -248,6 +249,15 @@ CSSPrimitiveValue::CSSPrimitiveValue(const String& str, UnitType type) |
| m_value.string->ref(); |
| } |
| +CSSPrimitiveValue::CSSPrimitiveValue(CSSVariableData* variableData) |
| + : CSSValue(PrimitiveClass) |
| +{ |
| + m_primitiveUnitType = CSSPrimitiveValue::CSS_VARIABLE_REFERENCE; |
| + m_value.variableData = variableData; |
| + if (m_value.variableData) |
|
Timothy Loh
2015/07/23 08:11:46
Is this ever null (here and in cleanup())?
|
| + m_value.variableData->ref(); |
| +} |
| + |
| CSSPrimitiveValue::CSSPrimitiveValue(const LengthSize& lengthSize, const ComputedStyle& style) |
| : CSSValue(PrimitiveClass) |
| { |
| @@ -397,6 +407,10 @@ void CSSPrimitiveValue::cleanup() |
| if (m_value.string) |
| m_value.string->deref(); |
| break; |
| + case CSS_VARIABLE_REFERENCE: |
| + if (m_value.variableData) |
| + m_value.variableData->deref(); |
| + break; |
| case CSS_COUNTER: |
| // We must not call deref() when oilpan is enabled because m_value.counter is traced. |
| #if !ENABLE(OILPAN) |
| @@ -820,6 +834,8 @@ String CSSPrimitiveValue::getStringValue() const |
| return valueName(m_value.valueID); |
| case CSS_PROPERTY_ID: |
| return propertyName(m_value.propertyID); |
| + case CSS_VARIABLE_REFERENCE: |
| + return m_value.variableData->string(); |
| default: |
| break; |
| } |
| @@ -929,6 +945,7 @@ const char* CSSPrimitiveValue::unitTypeToString(UnitType type) |
| case CSS_CALC_PERCENTAGE_WITH_NUMBER: |
| case CSS_CALC_PERCENTAGE_WITH_LENGTH: |
| case CSS_QEM: |
| + case CSS_VARIABLE_REFERENCE: |
| break; |
| }; |
| ASSERT_NOT_REACHED(); |
| @@ -1049,6 +1066,9 @@ String CSSPrimitiveValue::customCSSText() const |
| case CSS_SHAPE: |
| text = m_value.shape->cssText(); |
| break; |
| + case CSS_VARIABLE_REFERENCE: |
| + text = "var(" + String(m_value.string) + ")"; |
|
Timothy Loh
2015/07/23 08:11:46
Looks wrong, we only have m_value.variableData, ri
|
| + break; |
| } |
| ASSERT(!cssTextCache().contains(this)); |
| @@ -1101,6 +1121,7 @@ bool CSSPrimitiveValue::equals(const CSSPrimitiveValue& other) const |
| case CSS_STRING: |
| case CSS_URI: |
| case CSS_ATTR: |
| + case CSS_VARIABLE_REFERENCE: |
| return equal(m_value.string, other.m_value.string); |
|
Timothy Loh
2015/07/23 08:11:46
Like above, isn't m_value.string invalid for CSS_V
|
| case CSS_COUNTER: |
| return m_value.counter && other.m_value.counter && m_value.counter->equals(*other.m_value.counter); |