summaryrefslogtreecommitdiff
path: root/chromium/third_party/WebKit/Source/core/css/CSSValue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/css/CSSValue.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/core/css/CSSValue.cpp186
1 files changed, 98 insertions, 88 deletions
diff --git a/chromium/third_party/WebKit/Source/core/css/CSSValue.cpp b/chromium/third_party/WebKit/Source/core/css/CSSValue.cpp
index 1ffc0b146d8..6d74434cc11 100644
--- a/chromium/third_party/WebKit/Source/core/css/CSSValue.cpp
+++ b/chromium/third_party/WebKit/Source/core/css/CSSValue.cpp
@@ -36,8 +36,11 @@
#include "core/css/CSSCursorImageValue.h"
#include "core/css/CSSFilterValue.h"
#include "core/css/CSSFontFaceSrcValue.h"
+#include "core/css/CSSFontFeatureValue.h"
+#include "core/css/CSSFontValue.h"
#include "core/css/CSSFunctionValue.h"
#include "core/css/CSSGradientValue.h"
+#include "core/css/CSSGridLineNamesValue.h"
#include "core/css/CSSGridTemplateValue.h"
#include "core/css/CSSImageSetValue.h"
#include "core/css/CSSImageValue.h"
@@ -49,14 +52,12 @@
#include "core/css/CSSReflectValue.h"
#include "core/css/CSSSVGDocumentValue.h"
#include "core/css/CSSShaderValue.h"
+#include "core/css/CSSShadowValue.h"
#include "core/css/CSSTimingFunctionValue.h"
#include "core/css/CSSTransformValue.h"
#include "core/css/CSSUnicodeRangeValue.h"
#include "core/css/CSSValueList.h"
#include "core/css/CSSVariableValue.h"
-#include "core/css/FontFeatureValue.h"
-#include "core/css/FontValue.h"
-#include "core/css/ShadowValue.h"
#include "core/svg/SVGColor.h"
#include "core/svg/SVGPaint.h"
@@ -66,7 +67,7 @@ struct SameSizeAsCSSValue : public RefCounted<SameSizeAsCSSValue> {
uint32_t bitfields;
};
-COMPILE_ASSERT(sizeof(CSSValue) == sizeof(SameSizeAsCSSValue), CSS_value_should_stay_small);
+COMPILE_ASSERT(sizeof(CSSValue) <= sizeof(SameSizeAsCSSValue), CSS_value_should_stay_small);
class TextCloneCSSValue : public CSSValue {
public:
@@ -85,9 +86,11 @@ private:
String m_cssText;
};
+DEFINE_CSS_VALUE_TYPE_CASTS(TextCloneCSSValue, isTextCloneCSSValue());
+
bool CSSValue::isImplicitInitialValue() const
{
- return m_classType == InitialClass && static_cast<const CSSInitialValue*>(this)->isImplicit();
+ return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit();
}
CSSValue::Type CSSValue::cssValueType() const
@@ -113,9 +116,9 @@ void CSSValue::addSubresourceStyleURLs(ListHashSet<KURL>& urls, const StyleSheet
else if (isValueList())
toCSSValueList(this)->addSubresourceStyleURLs(urls, styleSheet);
else if (classType() == FontFaceSrcClass)
- static_cast<const CSSFontFaceSrcValue*>(this)->addSubresourceStyleURLs(urls, styleSheet);
+ toCSSFontFaceSrcValue(this)->addSubresourceStyleURLs(urls, styleSheet);
else if (classType() == ReflectClass)
- static_cast<const CSSReflectValue*>(this)->addSubresourceStyleURLs(urls, styleSheet);
+ toCSSReflectValue(this)->addSubresourceStyleURLs(urls, styleSheet);
}
bool CSSValue::hasFailedOrCanceledSubresources() const
@@ -126,13 +129,13 @@ bool CSSValue::hasFailedOrCanceledSubresources() const
if (isValueList())
return toCSSValueList(this)->hasFailedOrCanceledSubresources();
if (classType() == FontFaceSrcClass)
- return static_cast<const CSSFontFaceSrcValue*>(this)->hasFailedOrCanceledSubresources();
+ return toCSSFontFaceSrcValue(this)->hasFailedOrCanceledSubresources();
if (classType() == ImageClass)
return toCSSImageValue(this)->hasFailedOrCanceledSubresources();
if (classType() == CrossfadeClass)
- return static_cast<const CSSCrossfadeValue*>(this)->hasFailedOrCanceledSubresources();
+ return toCSSCrossfadeValue(this)->hasFailedOrCanceledSubresources();
if (classType() == ImageSetClass)
- return static_cast<const CSSImageSetValue*>(this)->hasFailedOrCanceledSubresources();
+ return toCSSImageSetValue(this)->hasFailedOrCanceledSubresources();
return false;
}
@@ -147,7 +150,7 @@ bool CSSValue::equals(const CSSValue& other) const
{
if (m_isTextClone) {
ASSERT(isCSSOMSafe());
- return static_cast<const TextCloneCSSValue*>(this)->cssText() == other.cssText();
+ return toTextCloneCSSValue(this)->cssText() == other.cssText();
}
if (m_classType == other.m_classType) {
@@ -161,11 +164,11 @@ bool CSSValue::equals(const CSSValue& other) const
case CursorImageClass:
return compareCSSValues<CSSCursorImageValue>(*this, other);
case FontClass:
- return compareCSSValues<FontValue>(*this, other);
+ return compareCSSValues<CSSFontValue>(*this, other);
case FontFaceSrcClass:
return compareCSSValues<CSSFontFaceSrcValue>(*this, other);
case FontFeatureClass:
- return compareCSSValues<FontFeatureValue>(*this, other);
+ return compareCSSValues<CSSFontFeatureValue>(*this, other);
case FunctionClass:
return compareCSSValues<CSSFunctionValue>(*this, other);
case LinearGradientClass:
@@ -180,6 +183,8 @@ bool CSSValue::equals(const CSSValue& other) const
return compareCSSValues<CSSInheritedValue>(*this, other);
case InitialClass:
return compareCSSValues<CSSInitialValue>(*this, other);
+ case GridLineNamesClass:
+ return compareCSSValues<CSSGridLineNamesValue>(*this, other);
case GridTemplateClass:
return compareCSSValues<CSSGridTemplateValue>(*this, other);
case PrimitiveClass:
@@ -187,7 +192,7 @@ bool CSSValue::equals(const CSSValue& other) const
case ReflectClass:
return compareCSSValues<CSSReflectValue>(*this, other);
case ShadowClass:
- return compareCSSValues<ShadowValue>(*this, other);
+ return compareCSSValues<CSSShadowValue>(*this, other);
case CubicBezierTimingFunctionClass:
return compareCSSValues<CSSCubicBezierTimingFunctionValue>(*this, other);
case StepsTimingFunctionClass:
@@ -235,79 +240,81 @@ String CSSValue::cssText() const
{
if (m_isTextClone) {
ASSERT(isCSSOMSafe());
- return static_cast<const TextCloneCSSValue*>(this)->cssText();
+ return toTextCloneCSSValue(this)->cssText();
}
ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
switch (classType()) {
case AspectRatioClass:
- return static_cast<const CSSAspectRatioValue*>(this)->customCssText();
+ return toCSSAspectRatioValue(this)->customCSSText();
case BorderImageSliceClass:
- return static_cast<const CSSBorderImageSliceValue*>(this)->customCssText();
+ return toCSSBorderImageSliceValue(this)->customCSSText();
case CanvasClass:
- return static_cast<const CSSCanvasValue*>(this)->customCssText();
+ return toCSSCanvasValue(this)->customCSSText();
case CursorImageClass:
- return static_cast<const CSSCursorImageValue*>(this)->customCssText();
+ return toCSSCursorImageValue(this)->customCSSText();
case FontClass:
- return static_cast<const FontValue*>(this)->customCssText();
+ return toCSSFontValue(this)->customCSSText();
case FontFaceSrcClass:
- return static_cast<const CSSFontFaceSrcValue*>(this)->customCssText();
+ return toCSSFontFaceSrcValue(this)->customCSSText();
case FontFeatureClass:
- return static_cast<const FontFeatureValue*>(this)->customCssText();
+ return toCSSFontFeatureValue(this)->customCSSText();
case FunctionClass:
- return static_cast<const CSSFunctionValue*>(this)->customCssText();
+ return toCSSFunctionValue(this)->customCSSText();
case LinearGradientClass:
- return static_cast<const CSSLinearGradientValue*>(this)->customCssText();
+ return toCSSLinearGradientValue(this)->customCSSText();
case RadialGradientClass:
- return static_cast<const CSSRadialGradientValue*>(this)->customCssText();
+ return toCSSRadialGradientValue(this)->customCSSText();
case CrossfadeClass:
- return static_cast<const CSSCrossfadeValue*>(this)->customCssText();
+ return toCSSCrossfadeValue(this)->customCSSText();
case ImageClass:
- return toCSSImageValue(this)->customCssText();
+ return toCSSImageValue(this)->customCSSText();
case InheritedClass:
- return static_cast<const CSSInheritedValue*>(this)->customCssText();
+ return toCSSInheritedValue(this)->customCSSText();
case InitialClass:
- return static_cast<const CSSInitialValue*>(this)->customCssText();
+ return toCSSInitialValue(this)->customCSSText();
+ case GridLineNamesClass:
+ return toCSSGridLineNamesValue(this)->customCSSText();
case GridTemplateClass:
- return static_cast<const CSSGridTemplateValue*>(this)->customCssText();
+ return toCSSGridTemplateValue(this)->customCSSText();
case PrimitiveClass:
- return toCSSPrimitiveValue(this)->customCssText();
+ return toCSSPrimitiveValue(this)->customCSSText();
case ReflectClass:
- return static_cast<const CSSReflectValue*>(this)->customCssText();
+ return toCSSReflectValue(this)->customCSSText();
case ShadowClass:
- return static_cast<const ShadowValue*>(this)->customCssText();
+ return toCSSShadowValue(this)->customCSSText();
case CubicBezierTimingFunctionClass:
- return static_cast<const CSSCubicBezierTimingFunctionValue*>(this)->customCssText();
+ return toCSSCubicBezierTimingFunctionValue(this)->customCSSText();
case StepsTimingFunctionClass:
- return static_cast<const CSSStepsTimingFunctionValue*>(this)->customCssText();
+ return toCSSStepsTimingFunctionValue(this)->customCSSText();
case UnicodeRangeClass:
- return static_cast<const CSSUnicodeRangeValue*>(this)->customCssText();
+ return toCSSUnicodeRangeValue(this)->customCSSText();
case ValueListClass:
- return toCSSValueList(this)->customCssText();
+ return toCSSValueList(this)->customCSSText();
case CSSTransformClass:
- return static_cast<const CSSTransformValue*>(this)->customCssText();
+ return toCSSTransformValue(this)->customCSSText();
case LineBoxContainClass:
- return static_cast<const CSSLineBoxContainValue*>(this)->customCssText();
+ return toCSSLineBoxContainValue(this)->customCSSText();
case CalculationClass:
- return static_cast<const CSSCalcValue*>(this)->customCssText();
+ return toCSSCalcValue(this)->customCSSText();
case ImageSetClass:
- return static_cast<const CSSImageSetValue*>(this)->customCssText();
+ return toCSSImageSetValue(this)->customCSSText();
case CSSFilterClass:
- return static_cast<const CSSFilterValue*>(this)->customCssText();
+ return toCSSFilterValue(this)->customCSSText();
case CSSArrayFunctionValueClass:
- return static_cast<const CSSArrayFunctionValue*>(this)->customCssText();
+ return toCSSArrayFunctionValue(this)->customCSSText();
case CSSMixFunctionValueClass:
- return static_cast<const CSSMixFunctionValue*>(this)->customCssText();
+ return toCSSMixFunctionValue(this)->customCSSText();
case CSSShaderClass:
- return static_cast<const CSSShaderValue*>(this)->customCssText();
+ return toCSSShaderValue(this)->customCSSText();
case VariableClass:
return toCSSVariableValue(this)->value();
case SVGColorClass:
- return static_cast<const SVGColor*>(this)->customCssText();
+ return toSVGColor(this)->customCSSText();
case SVGPaintClass:
- return static_cast<const SVGPaint*>(this)->customCssText();
+ return toSVGPaint(this)->customCSSText();
case CSSSVGDocumentClass:
- return static_cast<const CSSSVGDocumentValue*>(this)->customCssText();
+ return toCSSSVGDocumentValue(this)->customCSSText();
}
ASSERT_NOT_REACHED();
return String();
@@ -319,11 +326,11 @@ String CSSValue::serializeResolvingVariables(const HashMap<AtomicString, String>
case PrimitiveClass:
return toCSSPrimitiveValue(this)->customSerializeResolvingVariables(variables);
case ReflectClass:
- return static_cast<const CSSReflectValue*>(this)->customSerializeResolvingVariables(variables);
+ return toCSSReflectValue(this)->customSerializeResolvingVariables(variables);
case ValueListClass:
return toCSSValueList(this)->customSerializeResolvingVariables(variables);
case CSSTransformClass:
- return static_cast<const CSSTransformValue*>(this)->customSerializeResolvingVariables(variables);
+ return toCSSTransformValue(this)->customSerializeResolvingVariables(variables);
default:
return cssText();
}
@@ -333,113 +340,116 @@ void CSSValue::destroy()
{
if (m_isTextClone) {
ASSERT(isCSSOMSafe());
- delete static_cast<TextCloneCSSValue*>(this);
+ delete toTextCloneCSSValue(this);
return;
}
ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
switch (classType()) {
case AspectRatioClass:
- delete static_cast<CSSAspectRatioValue*>(this);
+ delete toCSSAspectRatioValue(this);
return;
case BorderImageSliceClass:
- delete static_cast<CSSBorderImageSliceValue*>(this);
+ delete toCSSBorderImageSliceValue(this);
return;
case CanvasClass:
- delete static_cast<CSSCanvasValue*>(this);
+ delete toCSSCanvasValue(this);
return;
case CursorImageClass:
- delete static_cast<CSSCursorImageValue*>(this);
+ delete toCSSCursorImageValue(this);
return;
case FontClass:
- delete static_cast<FontValue*>(this);
+ delete toCSSFontValue(this);
return;
case FontFaceSrcClass:
- delete static_cast<CSSFontFaceSrcValue*>(this);
+ delete toCSSFontFaceSrcValue(this);
return;
case FontFeatureClass:
- delete static_cast<FontFeatureValue*>(this);
+ delete toCSSFontFeatureValue(this);
return;
case FunctionClass:
- delete static_cast<CSSFunctionValue*>(this);
+ delete toCSSFunctionValue(this);
return;
case LinearGradientClass:
- delete static_cast<CSSLinearGradientValue*>(this);
+ delete toCSSLinearGradientValue(this);
return;
case RadialGradientClass:
- delete static_cast<CSSRadialGradientValue*>(this);
+ delete toCSSRadialGradientValue(this);
return;
case CrossfadeClass:
- delete static_cast<CSSCrossfadeValue*>(this);
+ delete toCSSCrossfadeValue(this);
return;
case ImageClass:
delete toCSSImageValue(this);
return;
case InheritedClass:
- delete static_cast<CSSInheritedValue*>(this);
+ delete toCSSInheritedValue(this);
return;
case InitialClass:
- delete static_cast<CSSInitialValue*>(this);
+ delete toCSSInitialValue(this);
+ return;
+ case GridLineNamesClass:
+ delete toCSSGridLineNamesValue(this);
return;
case GridTemplateClass:
- delete static_cast<CSSGridTemplateValue*>(this);
+ delete toCSSGridTemplateValue(this);
return;
case PrimitiveClass:
delete toCSSPrimitiveValue(this);
return;
case ReflectClass:
- delete static_cast<CSSReflectValue*>(this);
+ delete toCSSReflectValue(this);
return;
case ShadowClass:
- delete static_cast<ShadowValue*>(this);
+ delete toCSSShadowValue(this);
return;
case CubicBezierTimingFunctionClass:
- delete static_cast<CSSCubicBezierTimingFunctionValue*>(this);
+ delete toCSSCubicBezierTimingFunctionValue(this);
return;
case StepsTimingFunctionClass:
- delete static_cast<CSSStepsTimingFunctionValue*>(this);
+ delete toCSSStepsTimingFunctionValue(this);
return;
case UnicodeRangeClass:
- delete static_cast<CSSUnicodeRangeValue*>(this);
+ delete toCSSUnicodeRangeValue(this);
return;
case ValueListClass:
delete toCSSValueList(this);
return;
case CSSTransformClass:
- delete static_cast<CSSTransformValue*>(this);
+ delete toCSSTransformValue(this);
return;
case LineBoxContainClass:
- delete static_cast<CSSLineBoxContainValue*>(this);
+ delete toCSSLineBoxContainValue(this);
return;
case CalculationClass:
- delete static_cast<CSSCalcValue*>(this);
+ delete toCSSCalcValue(this);
return;
case ImageSetClass:
- delete static_cast<CSSImageSetValue*>(this);
+ delete toCSSImageSetValue(this);
return;
case CSSFilterClass:
- delete static_cast<CSSFilterValue*>(this);
+ delete toCSSFilterValue(this);
return;
case CSSArrayFunctionValueClass:
- delete static_cast<CSSArrayFunctionValue*>(this);
+ delete toCSSArrayFunctionValue(this);
return;
case CSSMixFunctionValueClass:
- delete static_cast<CSSMixFunctionValue*>(this);
+ delete toCSSMixFunctionValue(this);
return;
case CSSShaderClass:
- delete static_cast<CSSShaderValue*>(this);
+ delete toCSSShaderValue(this);
return;
case VariableClass:
delete toCSSVariableValue(this);
return;
case SVGColorClass:
- delete static_cast<SVGColor*>(this);
+ delete toSVGColor(this);
return;
case SVGPaintClass:
- delete static_cast<SVGPaint*>(this);
+ delete toSVGPaint(this);
return;
case CSSSVGDocumentClass:
- delete static_cast<CSSSVGDocumentValue*>(this);
+ delete toCSSSVGDocumentValue(this);
return;
}
ASSERT_NOT_REACHED();
@@ -456,19 +466,19 @@ PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const
case CursorImageClass:
return toCSSImageValue(this)->cloneForCSSOM();
case CSSFilterClass:
- return static_cast<const CSSFilterValue*>(this)->cloneForCSSOM();
+ return toCSSFilterValue(this)->cloneForCSSOM();
case CSSArrayFunctionValueClass:
- return static_cast<const CSSArrayFunctionValue*>(this)->cloneForCSSOM();
+ return toCSSArrayFunctionValue(this)->cloneForCSSOM();
case CSSMixFunctionValueClass:
- return static_cast<const CSSMixFunctionValue*>(this)->cloneForCSSOM();
+ return toCSSMixFunctionValue(this)->cloneForCSSOM();
case CSSTransformClass:
- return static_cast<const CSSTransformValue*>(this)->cloneForCSSOM();
+ return toCSSTransformValue(this)->cloneForCSSOM();
case ImageSetClass:
- return static_cast<const CSSImageSetValue*>(this)->cloneForCSSOM();
+ return toCSSImageSetValue(this)->cloneForCSSOM();
case SVGColorClass:
- return static_cast<const SVGColor*>(this)->cloneForCSSOM();
+ return toSVGColor(this)->cloneForCSSOM();
case SVGPaintClass:
- return static_cast<const SVGPaint*>(this)->cloneForCSSOM();
+ return toSVGPaint(this)->cloneForCSSOM();
default:
ASSERT(!isSubtypeExposedToCSSOM());
return TextCloneCSSValue::create(classType(), cssText());