summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSValue.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/css/CSSValue.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/css/CSSValue.cpp')
-rw-r--r--Source/WebCore/css/CSSValue.cpp423
1 files changed, 210 insertions, 213 deletions
diff --git a/Source/WebCore/css/CSSValue.cpp b/Source/WebCore/css/CSSValue.cpp
index 760e8d0ad..c619e8f80 100644
--- a/Source/WebCore/css/CSSValue.cpp
+++ b/Source/WebCore/css/CSSValue.cpp
@@ -11,10 +11,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -28,34 +28,46 @@
#include "config.h"
#include "CSSValue.h"
+#include "CSSAnimationTriggerScrollValue.h"
#include "CSSAspectRatioValue.h"
#include "CSSBorderImageSliceValue.h"
#include "CSSCalculationValue.h"
#include "CSSCanvasValue.h"
+#include "CSSContentDistributionValue.h"
#include "CSSCrossfadeValue.h"
#include "CSSCursorImageValue.h"
+#include "CSSCustomIdentValue.h"
+#include "CSSCustomPropertyValue.h"
#include "CSSFilterImageValue.h"
#include "CSSFontFaceSrcValue.h"
#include "CSSFontFeatureValue.h"
#include "CSSFontValue.h"
+#include "CSSFontVariationValue.h"
#include "CSSFunctionValue.h"
#include "CSSGradientValue.h"
-#include "CSSGridTemplateValue.h"
#include "CSSImageSetValue.h"
#include "CSSImageValue.h"
#include "CSSInheritedValue.h"
#include "CSSInitialValue.h"
#include "CSSLineBoxContainValue.h"
+#include "CSSNamedImageValue.h"
+#include "CSSPendingSubstitutionValue.h"
#include "CSSPrimitiveValue.h"
+#include "CSSProperty.h"
#include "CSSReflectValue.h"
#include "CSSShadowValue.h"
#include "CSSTimingFunctionValue.h"
#include "CSSUnicodeRangeValue.h"
+#include "CSSUnsetValue.h"
#include "CSSValueList.h"
-#include "SVGColor.h"
-#include "SVGPaint.h"
-#include "WebKitCSSFilterValue.h"
-#include "WebKitCSSTransformValue.h"
+#include "CSSVariableReferenceValue.h"
+
+#include "CSSGridAutoRepeatValue.h"
+#include "CSSGridLineNamesValue.h"
+#include "CSSGridTemplateAreasValue.h"
+
+#include "DeprecatedCSSOMPrimitiveValue.h"
+#include "DeprecatedCSSOMValueList.h"
namespace WebCore {
@@ -65,29 +77,9 @@ struct SameSizeAsCSSValue : public RefCounted<SameSizeAsCSSValue> {
COMPILE_ASSERT(sizeof(CSSValue) == sizeof(SameSizeAsCSSValue), CSS_value_should_stay_small);
-class TextCloneCSSValue : public CSSValue {
-public:
- static PassRef<TextCloneCSSValue> create(ClassType classType, const String& text)
- {
- return adoptRef(*new TextCloneCSSValue(classType, text));
- }
-
- String cssText() const { return m_cssText; }
-
-private:
- TextCloneCSSValue(ClassType classType, const String& text)
- : CSSValue(classType, /*isCSSOMSafe*/ true)
- , m_cssText(text)
- {
- m_isTextClone = true;
- }
-
- String m_cssText;
-};
-
bool CSSValue::isImplicitInitialValue() const
{
- return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit();
+ return m_classType == InitialClass && downcast<CSSInitialValue>(*this).isImplicit();
}
CSSValue::Type CSSValue::cssValueType() const
@@ -100,45 +92,27 @@ CSSValue::Type CSSValue::cssValueType() const
return CSS_VALUE_LIST;
if (isInitialValue())
return CSS_INITIAL;
+ if (isUnsetValue())
+ return CSS_UNSET;
+ if (isRevertValue())
+ return CSS_REVERT;
return CSS_CUSTOM;
}
-void CSSValue::addSubresourceStyleURLs(ListHashSet<URL>& urls, const StyleSheetContents* styleSheet) const
+bool CSSValue::traverseSubresources(const std::function<bool (const CachedResource&)>& handler) const
{
- // This should get called for internal instances only.
- ASSERT(!isCSSOMSafe());
-
- if (isPrimitiveValue())
- toCSSPrimitiveValue(this)->addSubresourceStyleURLs(urls, styleSheet);
- else if (isValueList())
- toCSSValueList(this)->addSubresourceStyleURLs(urls, styleSheet);
- else if (classType() == FontFaceSrcClass)
- toCSSFontFaceSrcValue(this)->addSubresourceStyleURLs(urls, styleSheet);
- else if (classType() == ReflectClass)
- toCSSReflectValue(this)->addSubresourceStyleURLs(urls, styleSheet);
-}
-
-bool CSSValue::hasFailedOrCanceledSubresources() const
-{
- // This should get called for internal instances only.
- ASSERT(!isCSSOMSafe());
-
- if (isValueList())
- return toCSSValueList(this)->hasFailedOrCanceledSubresources();
- if (classType() == FontFaceSrcClass)
- return toCSSFontFaceSrcValue(this)->hasFailedOrCanceledSubresources();
- if (classType() == ImageClass)
- return toCSSImageValue(this)->hasFailedOrCanceledSubresources();
- if (classType() == CrossfadeClass)
- return toCSSCrossfadeValue(this)->hasFailedOrCanceledSubresources();
-#if ENABLE(CSS_FILTERS)
- if (classType() == FilterImageClass)
- return toCSSFilterImageValue(this)->hasFailedOrCanceledSubresources();
-#endif
-#if ENABLE(CSS_IMAGE_SET)
- if (classType() == ImageSetClass)
- return toCSSImageSetValue(this)->hasFailedOrCanceledSubresources();
-#endif
+ if (is<CSSValueList>(*this))
+ return downcast<CSSValueList>(*this).traverseSubresources(handler);
+ if (is<CSSFontFaceSrcValue>(*this))
+ return downcast<CSSFontFaceSrcValue>(*this).traverseSubresources(handler);
+ if (is<CSSImageValue>(*this))
+ return downcast<CSSImageValue>(*this).traverseSubresources(handler);
+ if (is<CSSCrossfadeValue>(*this))
+ return downcast<CSSCrossfadeValue>(*this).traverseSubresources(handler);
+ if (is<CSSFilterImageValue>(*this))
+ return downcast<CSSFilterImageValue>(*this).traverseSubresources(handler);
+ if (is<CSSImageSetValue>(*this))
+ return downcast<CSSImageSetValue>(*this).traverseSubresources(handler);
return false;
}
@@ -150,11 +124,6 @@ inline static bool compareCSSValues(const CSSValue& first, const CSSValue& secon
bool CSSValue::equals(const CSSValue& other) const
{
- if (m_isTextClone) {
- ASSERT(isCSSOMSafe());
- return static_cast<const TextCloneCSSValue*>(this)->cssText() == other.cssText();
- }
-
if (m_classType == other.m_classType) {
switch (m_classType) {
case AspectRatioClass:
@@ -163,18 +132,22 @@ bool CSSValue::equals(const CSSValue& other) const
return compareCSSValues<CSSBorderImageSliceValue>(*this, other);
case CanvasClass:
return compareCSSValues<CSSCanvasValue>(*this, other);
+ case NamedImageClass:
+ return compareCSSValues<CSSNamedImageValue>(*this, other);
case CursorImageClass:
return compareCSSValues<CSSCursorImageValue>(*this, other);
-#if ENABLE(CSS_FILTERS)
case FilterImageClass:
return compareCSSValues<CSSFilterImageValue>(*this, other);
-#endif
case FontClass:
return compareCSSValues<CSSFontValue>(*this, other);
case FontFaceSrcClass:
return compareCSSValues<CSSFontFaceSrcValue>(*this, other);
case FontFeatureClass:
return compareCSSValues<CSSFontFeatureValue>(*this, other);
+#if ENABLE(VARIATION_FONTS)
+ case FontVariationClass:
+ return compareCSSValues<CSSFontVariationValue>(*this, other);
+#endif
case FunctionClass:
return compareCSSValues<CSSFunctionValue>(*this, other);
case LinearGradientClass:
@@ -189,8 +162,16 @@ bool CSSValue::equals(const CSSValue& other) const
return compareCSSValues<CSSInheritedValue>(*this, other);
case InitialClass:
return compareCSSValues<CSSInitialValue>(*this, other);
- case GridTemplateClass:
- return compareCSSValues<CSSGridTemplateValue>(*this, other);
+ case UnsetClass:
+ return compareCSSValues<CSSUnsetValue>(*this, other);
+ case RevertClass:
+ return compareCSSValues<CSSRevertValue>(*this, other);
+ case GridAutoRepeatClass:
+ return compareCSSValues<CSSGridAutoRepeatValue>(*this, other);
+ case GridLineNamesClass:
+ return compareCSSValues<CSSGridLineNamesValue>(*this, other);
+ case GridTemplateAreasClass:
+ return compareCSSValues<CSSGridTemplateAreasValue>(*this, other);
case PrimitiveClass:
return compareCSSValues<CSSPrimitiveValue>(*this, other);
case ReflectClass:
@@ -201,263 +182,279 @@ bool CSSValue::equals(const CSSValue& other) const
return compareCSSValues<CSSCubicBezierTimingFunctionValue>(*this, other);
case StepsTimingFunctionClass:
return compareCSSValues<CSSStepsTimingFunctionValue>(*this, other);
+ case SpringTimingFunctionClass:
+ return compareCSSValues<CSSSpringTimingFunctionValue>(*this, other);
case UnicodeRangeClass:
return compareCSSValues<CSSUnicodeRangeValue>(*this, other);
case ValueListClass:
return compareCSSValues<CSSValueList>(*this, other);
- case WebKitCSSTransformClass:
- return compareCSSValues<WebKitCSSTransformValue>(*this, other);
case LineBoxContainClass:
return compareCSSValues<CSSLineBoxContainValue>(*this, other);
case CalculationClass:
return compareCSSValues<CSSCalcValue>(*this, other);
-#if ENABLE(CSS_IMAGE_SET)
case ImageSetClass:
return compareCSSValues<CSSImageSetValue>(*this, other);
+#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
+ case AnimationTriggerScrollClass:
+ return compareCSSValues<CSSAnimationTriggerScrollValue>(*this, other);
#endif
-#if ENABLE(CSS_FILTERS)
- case WebKitCSSFilterClass:
- return compareCSSValues<WebKitCSSFilterValue>(*this, other);
-#endif
-#if ENABLE(SVG)
- case SVGColorClass:
- return compareCSSValues<SVGColor>(*this, other);
- case SVGPaintClass:
- return compareCSSValues<SVGPaint>(*this, other);
-#endif
+ case CSSContentDistributionClass:
+ return compareCSSValues<CSSContentDistributionValue>(*this, other);
+ case CustomPropertyClass:
+ return compareCSSValues<CSSCustomPropertyValue>(*this, other);
+ case VariableReferenceClass:
+ return compareCSSValues<CSSVariableReferenceValue>(*this, other);
+ case PendingSubstitutionValueClass:
+ return compareCSSValues<CSSPendingSubstitutionValue>(*this, other);
default:
ASSERT_NOT_REACHED();
return false;
}
- } else if (m_classType == ValueListClass && other.m_classType != ValueListClass)
- return toCSSValueList(this)->equals(other);
- else if (m_classType != ValueListClass && other.m_classType == ValueListClass)
+ } else if (is<CSSValueList>(*this) && !is<CSSValueList>(other))
+ return downcast<CSSValueList>(*this).equals(other);
+ else if (!is<CSSValueList>(*this) && is<CSSValueList>(other))
return static_cast<const CSSValueList&>(other).equals(*this);
return false;
}
String CSSValue::cssText() const
{
- if (m_isTextClone) {
- ASSERT(isCSSOMSafe());
- return static_cast<const TextCloneCSSValue*>(this)->cssText();
- }
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
-
switch (classType()) {
case AspectRatioClass:
- return toCSSAspectRatioValue(this)->customCSSText();
+ return downcast<CSSAspectRatioValue>(*this).customCSSText();
case BorderImageSliceClass:
- return toCSSBorderImageSliceValue(this)->customCSSText();
+ return downcast<CSSBorderImageSliceValue>(*this).customCSSText();
case CanvasClass:
- return toCSSCanvasValue(this)->customCSSText();
+ return downcast<CSSCanvasValue>(*this).customCSSText();
+ case NamedImageClass:
+ return downcast<CSSNamedImageValue>(*this).customCSSText();
case CursorImageClass:
- return toCSSCursorImageValue(this)->customCSSText();
-#if ENABLE(CSS_FILTERS)
+ return downcast<CSSCursorImageValue>(*this).customCSSText();
case FilterImageClass:
- return toCSSFilterImageValue(this)->customCSSText();
-#endif
+ return downcast<CSSFilterImageValue>(*this).customCSSText();
case FontClass:
- return toCSSFontValue(this)->customCSSText();
+ return downcast<CSSFontValue>(*this).customCSSText();
case FontFaceSrcClass:
- return toCSSFontFaceSrcValue(this)->customCSSText();
+ return downcast<CSSFontFaceSrcValue>(*this).customCSSText();
case FontFeatureClass:
- return toCSSFontFeatureValue(this)->customCSSText();
+ return downcast<CSSFontFeatureValue>(*this).customCSSText();
+#if ENABLE(VARIATION_FONTS)
+ case FontVariationClass:
+ return downcast<CSSFontVariationValue>(*this).customCSSText();
+#endif
case FunctionClass:
- return toCSSFunctionValue(this)->customCSSText();
+ return downcast<CSSFunctionValue>(*this).customCSSText();
case LinearGradientClass:
- return toCSSLinearGradientValue(this)->customCSSText();
+ return downcast<CSSLinearGradientValue>(*this).customCSSText();
case RadialGradientClass:
- return toCSSRadialGradientValue(this)->customCSSText();
+ return downcast<CSSRadialGradientValue>(*this).customCSSText();
case CrossfadeClass:
- return toCSSCrossfadeValue(this)->customCSSText();
+ return downcast<CSSCrossfadeValue>(*this).customCSSText();
case ImageClass:
- return toCSSImageValue(this)->customCSSText();
+ return downcast<CSSImageValue>(*this).customCSSText();
case InheritedClass:
- return toCSSInheritedValue(this)->customCSSText();
+ return downcast<CSSInheritedValue>(*this).customCSSText();
case InitialClass:
- return toCSSInitialValue(this)->customCSSText();
- case GridTemplateClass:
- return toCSSGridTemplateValue(this)->customCSSText();
+ return downcast<CSSInitialValue>(*this).customCSSText();
+ case UnsetClass:
+ return downcast<CSSUnsetValue>(*this).customCSSText();
+ case RevertClass:
+ return downcast<CSSRevertValue>(*this).customCSSText();
+ case GridAutoRepeatClass:
+ return downcast<CSSGridAutoRepeatValue>(*this).customCSSText();
+ case GridLineNamesClass:
+ return downcast<CSSGridLineNamesValue>(*this).customCSSText();
+ case GridTemplateAreasClass:
+ return downcast<CSSGridTemplateAreasValue>(*this).customCSSText();
case PrimitiveClass:
- return toCSSPrimitiveValue(this)->customCSSText();
+ return downcast<CSSPrimitiveValue>(*this).customCSSText();
case ReflectClass:
- return toCSSReflectValue(this)->customCSSText();
+ return downcast<CSSReflectValue>(*this).customCSSText();
case ShadowClass:
- return toCSSShadowValue(this)->customCSSText();
+ return downcast<CSSShadowValue>(*this).customCSSText();
case CubicBezierTimingFunctionClass:
- return toCSSCubicBezierTimingFunctionValue(this)->customCSSText();
+ return downcast<CSSCubicBezierTimingFunctionValue>(*this).customCSSText();
case StepsTimingFunctionClass:
- return toCSSStepsTimingFunctionValue(this)->customCSSText();
+ return downcast<CSSStepsTimingFunctionValue>(*this).customCSSText();
+ case SpringTimingFunctionClass:
+ return downcast<CSSSpringTimingFunctionValue>(*this).customCSSText();
case UnicodeRangeClass:
- return toCSSUnicodeRangeValue(this)->customCSSText();
+ return downcast<CSSUnicodeRangeValue>(*this).customCSSText();
case ValueListClass:
- return toCSSValueList(this)->customCSSText();
- case WebKitCSSTransformClass:
- return toWebKitCSSTransformValue(this)->customCSSText();
+ return downcast<CSSValueList>(*this).customCSSText();
case LineBoxContainClass:
- return toCSSLineBoxContainValue(this)->customCSSText();
+ return downcast<CSSLineBoxContainValue>(*this).customCSSText();
case CalculationClass:
- return toCSSCalcValue(this)->customCSSText();
-#if ENABLE(CSS_IMAGE_SET)
+ return downcast<CSSCalcValue>(*this).customCSSText();
case ImageSetClass:
- return toCSSImageSetValue(this)->customCSSText();
-#endif
-#if ENABLE(CSS_FILTERS)
- case WebKitCSSFilterClass:
- return toWebKitCSSFilterValue(this)->customCSSText();
-#endif
-#if ENABLE(SVG)
- case SVGColorClass:
- return toSVGColor(this)->customCSSText();
- case SVGPaintClass:
- return toSVGPaint(this)->customCSSText();
+ return downcast<CSSImageSetValue>(*this).customCSSText();
+#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
+ case AnimationTriggerScrollClass:
+ return downcast<CSSAnimationTriggerScrollValue>(*this).customCSSText();
#endif
+ case CSSContentDistributionClass:
+ return downcast<CSSContentDistributionValue>(*this).customCSSText();
+ case CustomPropertyClass:
+ return downcast<CSSCustomPropertyValue>(*this).customCSSText();
+ case CustomIdentClass:
+ return downcast<CSSCustomIdentValue>(*this).customCSSText();
+ case VariableReferenceClass:
+ return downcast<CSSVariableReferenceValue>(*this).customCSSText();
+ case PendingSubstitutionValueClass:
+ return downcast<CSSPendingSubstitutionValue>(*this).customCSSText();
}
+
ASSERT_NOT_REACHED();
return String();
}
void CSSValue::destroy()
{
- if (m_isTextClone) {
- ASSERT(isCSSOMSafe());
- delete static_cast<TextCloneCSSValue*>(this);
- return;
- }
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
-
switch (classType()) {
case AspectRatioClass:
- delete toCSSAspectRatioValue(this);
+ delete downcast<CSSAspectRatioValue>(this);
return;
case BorderImageSliceClass:
- delete toCSSBorderImageSliceValue(this);
+ delete downcast<CSSBorderImageSliceValue>(this);
return;
case CanvasClass:
- delete toCSSCanvasValue(this);
+ delete downcast<CSSCanvasValue>(this);
+ return;
+ case NamedImageClass:
+ delete downcast<CSSNamedImageValue>(this);
return;
case CursorImageClass:
- delete toCSSCursorImageValue(this);
+ delete downcast<CSSCursorImageValue>(this);
return;
case FontClass:
- delete toCSSFontValue(this);
+ delete downcast<CSSFontValue>(this);
return;
case FontFaceSrcClass:
- delete toCSSFontFaceSrcValue(this);
+ delete downcast<CSSFontFaceSrcValue>(this);
return;
case FontFeatureClass:
- delete toCSSFontFeatureValue(this);
+ delete downcast<CSSFontFeatureValue>(this);
+ return;
+#if ENABLE(VARIATION_FONTS)
+ case FontVariationClass:
+ delete downcast<CSSFontVariationValue>(this);
return;
+#endif
case FunctionClass:
- delete toCSSFunctionValue(this);
+ delete downcast<CSSFunctionValue>(this);
return;
case LinearGradientClass:
- delete toCSSLinearGradientValue(this);
+ delete downcast<CSSLinearGradientValue>(this);
return;
case RadialGradientClass:
- delete toCSSRadialGradientValue(this);
+ delete downcast<CSSRadialGradientValue>(this);
return;
case CrossfadeClass:
- delete toCSSCrossfadeValue(this);
+ delete downcast<CSSCrossfadeValue>(this);
return;
case ImageClass:
- delete toCSSImageValue(this);
+ delete downcast<CSSImageValue>(this);
return;
case InheritedClass:
- delete toCSSInheritedValue(this);
+ delete downcast<CSSInheritedValue>(this);
return;
case InitialClass:
- delete toCSSInitialValue(this);
+ delete downcast<CSSInitialValue>(this);
+ return;
+ case UnsetClass:
+ delete downcast<CSSUnsetValue>(this);
return;
- case GridTemplateClass:
- delete toCSSGridTemplateValue(this);
+ case RevertClass:
+ delete downcast<CSSRevertValue>(this);
+ return;
+ case GridAutoRepeatClass:
+ delete downcast<CSSGridAutoRepeatValue>(this);
+ return;
+ case GridLineNamesClass:
+ delete downcast<CSSGridLineNamesValue>(this);
+ return;
+ case GridTemplateAreasClass:
+ delete downcast<CSSGridTemplateAreasValue>(this);
return;
case PrimitiveClass:
- delete toCSSPrimitiveValue(this);
+ delete downcast<CSSPrimitiveValue>(this);
return;
case ReflectClass:
- delete toCSSReflectValue(this);
+ delete downcast<CSSReflectValue>(this);
return;
case ShadowClass:
- delete toCSSShadowValue(this);
+ delete downcast<CSSShadowValue>(this);
return;
case CubicBezierTimingFunctionClass:
- delete toCSSCubicBezierTimingFunctionValue(this);
+ delete downcast<CSSCubicBezierTimingFunctionValue>(this);
return;
case StepsTimingFunctionClass:
- delete toCSSStepsTimingFunctionValue(this);
+ delete downcast<CSSStepsTimingFunctionValue>(this);
+ return;
+ case SpringTimingFunctionClass:
+ delete downcast<CSSSpringTimingFunctionValue>(this);
return;
case UnicodeRangeClass:
- delete toCSSUnicodeRangeValue(this);
+ delete downcast<CSSUnicodeRangeValue>(this);
return;
case ValueListClass:
- delete toCSSValueList(this);
- return;
- case WebKitCSSTransformClass:
- delete toWebKitCSSTransformValue(this);
+ delete downcast<CSSValueList>(this);
return;
case LineBoxContainClass:
- delete toCSSLineBoxContainValue(this);
+ delete downcast<CSSLineBoxContainValue>(this);
return;
case CalculationClass:
- delete toCSSCalcValue(this);
+ delete downcast<CSSCalcValue>(this);
return;
-#if ENABLE(CSS_IMAGE_SET)
case ImageSetClass:
- delete toCSSImageSetValue(this);
+ delete downcast<CSSImageSetValue>(this);
return;
-#endif
-#if ENABLE(CSS_FILTERS)
case FilterImageClass:
- delete toCSSFilterImageValue(this);
+ delete downcast<CSSFilterImageValue>(this);
return;
- case WebKitCSSFilterClass:
- delete toWebKitCSSFilterValue(this);
+#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
+ case AnimationTriggerScrollClass:
+ delete downcast<CSSAnimationTriggerScrollValue>(this);
return;
#endif
-#if ENABLE(SVG)
- case SVGColorClass:
- delete toSVGColor(this);
+ case CSSContentDistributionClass:
+ delete downcast<CSSContentDistributionValue>(this);
return;
- case SVGPaintClass:
- delete toSVGPaint(this);
+ case CustomPropertyClass:
+ delete downcast<CSSCustomPropertyValue>(this);
+ return;
+ case CustomIdentClass:
+ delete downcast<CSSCustomIdentValue>(this);
+ return;
+ case VariableReferenceClass:
+ delete downcast<CSSVariableReferenceValue>(this);
+ return;
+ case PendingSubstitutionValueClass:
+ delete downcast<CSSPendingSubstitutionValue>(this);
return;
-#endif
}
ASSERT_NOT_REACHED();
}
-PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const
+Ref<DeprecatedCSSOMValue> CSSValue::createDeprecatedCSSOMWrapper() const
{
- switch (classType()) {
- case PrimitiveClass:
- return toCSSPrimitiveValue(this)->cloneForCSSOM();
- case ValueListClass:
- return toCSSValueList(this)->cloneForCSSOM();
- case ImageClass:
- case CursorImageClass:
- return toCSSImageValue(this)->cloneForCSSOM();
-#if ENABLE(CSS_FILTERS)
- case WebKitCSSFilterClass:
- return toWebKitCSSFilterValue(this)->cloneForCSSOM();
-#endif
- case WebKitCSSTransformClass:
- return toWebKitCSSTransformValue(this)->cloneForCSSOM();
-#if ENABLE(CSS_IMAGE_SET)
- case ImageSetClass:
- return toCSSImageSetValue(this)->cloneForCSSOM();
-#endif
-#if ENABLE(SVG)
- case SVGColorClass:
- return toSVGColor(this)->cloneForCSSOM();
- case SVGPaintClass:
- return toSVGPaint(this)->cloneForCSSOM();
-#endif
- default:
- ASSERT(!isSubtypeExposedToCSSOM());
- return TextCloneCSSValue::create(classType(), cssText());
- }
+ if (isImageValue() || isCursorImageValue())
+ return downcast<CSSImageValue>(this)->createDeprecatedCSSOMWrapper();
+ if (isPrimitiveValue())
+ return DeprecatedCSSOMPrimitiveValue::create(downcast<CSSPrimitiveValue>(*this));
+ if (isValueList())
+ return DeprecatedCSSOMValueList::create(downcast<CSSValueList>(*this));
+ return DeprecatedCSSOMComplexValue::create(*this);
+}
+
+bool CSSValue::treatAsInheritedValue(CSSPropertyID propertyID) const
+{
+ return classType() == InheritedClass || (classType() == UnsetClass && CSSProperty::isInheritedProperty(propertyID));
+}
+
+bool CSSValue::treatAsInitialValue(CSSPropertyID propertyID) const
+{
+ return classType() == InitialClass || (classType() == UnsetClass && !CSSProperty::isInheritedProperty(propertyID));
}
}