summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSValue.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-08-12 09:27:39 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-08-12 09:27:39 +0200
commit3749d61e1f7a59f5ec5067e560af1eb610c82015 (patch)
tree73dc228333948738bbe02976cacca8cd382bc978 /Source/WebCore/css/CSSValue.cpp
parentb32b4dcd9a51ab8de6afc53d9e17f8707e1f7a5e (diff)
downloadqtwebkit-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.cpp160
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();