diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 |
commit | 3749d61e1f7a59f5ec5067e560af1eb610c82015 (patch) | |
tree | 73dc228333948738bbe02976cacca8cd382bc978 /Source/WebCore/css/CSSValue.cpp | |
parent | b32b4dcd9a51ab8de6afc53d9e17f8707e1f7a5e (diff) | |
download | qtwebkit-3749d61e1f7a59f5ec5067e560af1eb610c82015.tar.gz |
Imported WebKit commit a77350243e054f3460d1137301d8b3faee3d2052 (http://svn.webkit.org/repository/webkit/trunk@125365)
New snapshot with build fixes for latest API changes in Qt and all WK1 Win MSVC fixes upstream
Diffstat (limited to 'Source/WebCore/css/CSSValue.cpp')
-rw-r--r-- | Source/WebCore/css/CSSValue.cpp | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/Source/WebCore/css/CSSValue.cpp b/Source/WebCore/css/CSSValue.cpp index cda43b9cf..da1ac3314 100644 --- a/Source/WebCore/css/CSSValue.cpp +++ b/Source/WebCore/css/CSSValue.cpp @@ -52,10 +52,12 @@ #endif #include "FontValue.h" #include "FontFeatureValue.h" +#include "MemoryInstrumentation.h" #include "ShadowValue.h" #include "SVGColor.h" #include "SVGPaint.h" #include "WebKitCSSFilterValue.h" +#include "WebKitCSSMixFunctionValue.h" #include "WebKitCSSShaderValue.h" #include "WebKitCSSTransformValue.h" @@ -77,6 +79,12 @@ public: String cssText() const { return m_cssText; } + void reportDescendantMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const + { + MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::CSS); + info.addMember(m_cssText); + } + private: TextCloneCSSValue(ClassType classType, const String& text) : CSSValue(classType, /*isCSSOMSafe*/ true) @@ -121,6 +129,149 @@ void CSSValue::addSubresourceStyleURLs(ListHashSet<KURL>& urls, const StyleSheet static_cast<const CSSReflectValue*>(this)->addSubresourceStyleURLs(urls, styleSheet); } +bool CSSValue::hasFailedOrCanceledSubresources() const +{ + // This should get called for internal instances only. + ASSERT(!isCSSOMSafe()); + + if (isValueList()) + return static_cast<const CSSValueList*>(this)->hasFailedOrCanceledSubresources(); + if (classType() == FontFaceSrcClass) + return static_cast<const CSSFontFaceSrcValue*>(this)->hasFailedOrCanceledSubresources(); + if (classType() == ImageClass) + return static_cast<const CSSImageValue*>(this)->hasFailedOrCanceledSubresources(); + if (classType() == CrossfadeClass) + return static_cast<const CSSCrossfadeValue*>(this)->hasFailedOrCanceledSubresources(); +#if ENABLE(CSS_IMAGE_SET) + if (classType() == ImageSetClass) + return static_cast<const CSSImageSetValue*>(this)->hasFailedOrCanceledSubresources(); +#endif + return false; +} + +void CSSValue::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const +{ + if (m_isTextClone) { + ASSERT(isCSSOMSafe()); + static_cast<const TextCloneCSSValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + } + + ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); + switch (classType()) { + case PrimitiveClass: + static_cast<const CSSPrimitiveValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case ImageClass: + static_cast<const CSSImageValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case CursorImageClass: + static_cast<const CSSCursorImageValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case CanvasClass: + static_cast<const CSSCanvasValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case CrossfadeClass: + static_cast<const CSSCrossfadeValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case LinearGradientClass: + static_cast<const CSSLinearGradientValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case RadialGradientClass: + static_cast<const CSSRadialGradientValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case CubicBezierTimingFunctionClass: + static_cast<const CSSCubicBezierTimingFunctionValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case LinearTimingFunctionClass: + static_cast<const CSSLinearTimingFunctionValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case StepsTimingFunctionClass: + static_cast<const CSSStepsTimingFunctionValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case AspectRatioClass: + static_cast<const CSSAspectRatioValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case BorderImageSliceClass: + static_cast<const CSSBorderImageSliceValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case FontFeatureClass: + static_cast<const FontFeatureValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case FontClass: + static_cast<const FontValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case FontFaceSrcClass: + static_cast<const CSSFontFaceSrcValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case FunctionClass: + static_cast<const CSSFunctionValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case InheritedClass: + static_cast<const CSSInheritedValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case InitialClass: + static_cast<const CSSInitialValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case ReflectClass: + static_cast<const CSSReflectValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case ShadowClass: + static_cast<const ShadowValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case UnicodeRangeClass: + static_cast<const CSSUnicodeRangeValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case LineBoxContainClass: + static_cast<const CSSLineBoxContainValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case CalculationClass: + static_cast<const CSSCalcValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#if ENABLE(CSS_FILTERS) && ENABLE(CSS_SHADERS) + case WebKitCSSMixFunctionValueClass: + static_cast<const WebKitCSSMixFunctionValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case WebKitCSSShaderClass: + static_cast<const WebKitCSSShaderValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#endif +#if ENABLE(CSS_VARIABLES) + case VariableClass: + static_cast<const CSSVariableValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#endif +#if ENABLE(SVG) + case SVGColorClass: + static_cast<const SVGColor*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case SVGPaintClass: + static_cast<const SVGPaint*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + case WebKitCSSSVGDocumentClass: + static_cast<const WebKitCSSSVGDocumentValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#endif + case ValueListClass: + static_cast<const CSSValueList*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#if ENABLE(CSS_IMAGE_SET) + case ImageSetClass: + static_cast<const CSSImageSetValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#endif +#if ENABLE(CSS_FILTERS) + case WebKitCSSFilterClass: + static_cast<const WebKitCSSFilterValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; +#endif + case WebKitCSSTransformClass: + static_cast<const WebKitCSSTransformValue*>(this)->reportDescendantMemoryUsage(memoryObjectInfo); + return; + } + ASSERT_NOT_REACHED(); +} + String CSSValue::cssText() const { if (m_isTextClone) { @@ -188,6 +339,8 @@ String CSSValue::cssText() const case WebKitCSSFilterClass: return static_cast<const WebKitCSSFilterValue*>(this)->customCssText(); #if ENABLE(CSS_SHADERS) + case WebKitCSSMixFunctionValueClass: + return static_cast<const WebKitCSSMixFunctionValue*>(this)->customCssText(); case WebKitCSSShaderClass: return static_cast<const WebKitCSSShaderValue*>(this)->customCssText(); #endif @@ -320,6 +473,9 @@ void CSSValue::destroy() delete static_cast<WebKitCSSFilterValue*>(this); return; #if ENABLE(CSS_SHADERS) + case WebKitCSSMixFunctionValueClass: + delete static_cast<WebKitCSSMixFunctionValue*>(this); + return; case WebKitCSSShaderClass: delete static_cast<WebKitCSSShaderValue*>(this); return; @@ -358,6 +514,10 @@ PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const #if ENABLE(CSS_FILTERS) case WebKitCSSFilterClass: return static_cast<const WebKitCSSFilterValue*>(this)->cloneForCSSOM(); +#if ENABLE(CSS_SHADERS) + case WebKitCSSMixFunctionValueClass: + return static_cast<const WebKitCSSMixFunctionValue*>(this)->cloneForCSSOM(); +#endif #endif case WebKitCSSTransformClass: return static_cast<const WebKitCSSTransformValue*>(this)->cloneForCSSOM(); |