Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: Source/core/css/CSSValue.cpp

Issue 1164573002: CSSValue Immediates: Change CSSValue to an object instead of a pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/css/CSSValue.h ('k') | Source/core/css/CSSValueList.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/CSSValue.cpp
diff --git a/Source/core/css/CSSValue.cpp b/Source/core/css/CSSValue.cpp
deleted file mode 100644
index d8a94be96cb0712b2e146f95e0c2bab34ab8f683..0000000000000000000000000000000000000000
--- a/Source/core/css/CSSValue.cpp
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * Copyright (C) 2011 Andreas Kling (kling@webkit.org)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * 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
- * 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
- * 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
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include "config.h"
-#include "core/css/CSSValue.h"
-
-#include "core/css/CSSBorderImageSliceValue.h"
-#include "core/css/CSSCalculationValue.h"
-#include "core/css/CSSCanvasValue.h"
-#include "core/css/CSSContentDistributionValue.h"
-#include "core/css/CSSCrossfadeValue.h"
-#include "core/css/CSSCursorImageValue.h"
-#include "core/css/CSSFontFaceSrcValue.h"
-#include "core/css/CSSFontFeatureValue.h"
-#include "core/css/CSSFunctionValue.h"
-#include "core/css/CSSGradientValue.h"
-#include "core/css/CSSGridLineNamesValue.h"
-#include "core/css/CSSGridTemplateAreasValue.h"
-#include "core/css/CSSImageSetValue.h"
-#include "core/css/CSSImageValue.h"
-#include "core/css/CSSInheritedValue.h"
-#include "core/css/CSSInitialValue.h"
-#include "core/css/CSSLineBoxContainValue.h"
-#include "core/css/CSSPathValue.h"
-#include "core/css/CSSPrimitiveValue.h"
-#include "core/css/CSSReflectValue.h"
-#include "core/css/CSSSVGDocumentValue.h"
-#include "core/css/CSSShadowValue.h"
-#include "core/css/CSSTimingFunctionValue.h"
-#include "core/css/CSSUnicodeRangeValue.h"
-#include "core/css/CSSUnsetValue.h"
-#include "core/css/CSSValueList.h"
-
-namespace blink {
-
-struct SameSizeAsCSSValue : public RefCountedWillBeGarbageCollectedFinalized<SameSizeAsCSSValue>
-{
- uint32_t bitfields;
-};
-
-static_assert(sizeof(CSSValue) <= sizeof(SameSizeAsCSSValue), "CSSValue should stay small");
-
-bool CSSValue::isImplicitInitialValue() const
-{
- return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit();
-}
-
-bool CSSValue::hasFailedOrCanceledSubresources() const
-{
- 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 (classType() == ImageSetClass)
- return toCSSImageSetValue(this)->hasFailedOrCanceledSubresources();
-
- return false;
-}
-
-template<class ChildClassType>
-inline static bool compareCSSValues(const CSSValue& first, const CSSValue& second)
-{
- return static_cast<const ChildClassType&>(first).equals(static_cast<const ChildClassType&>(second));
-}
-
-bool CSSValue::equals(const CSSValue& other) const
-{
- if (m_classType == other.m_classType) {
- switch (m_classType) {
- case BorderImageSliceClass:
- return compareCSSValues<CSSBorderImageSliceValue>(*this, other);
- case CanvasClass:
- return compareCSSValues<CSSCanvasValue>(*this, other);
- case CursorImageClass:
- return compareCSSValues<CSSCursorImageValue>(*this, other);
- case FontFaceSrcClass:
- return compareCSSValues<CSSFontFaceSrcValue>(*this, other);
- case FontFeatureClass:
- return compareCSSValues<CSSFontFeatureValue>(*this, other);
- case FunctionClass:
- return compareCSSValues<CSSFunctionValue>(*this, other);
- case LinearGradientClass:
- return compareCSSValues<CSSLinearGradientValue>(*this, other);
- case RadialGradientClass:
- return compareCSSValues<CSSRadialGradientValue>(*this, other);
- case CrossfadeClass:
- return compareCSSValues<CSSCrossfadeValue>(*this, other);
- case ImageClass:
- return compareCSSValues<CSSImageValue>(*this, other);
- case InheritedClass:
- return compareCSSValues<CSSInheritedValue>(*this, other);
- case InitialClass:
- return compareCSSValues<CSSInitialValue>(*this, other);
- case UnsetClass:
- return compareCSSValues<CSSUnsetValue>(*this, other);
- case GridLineNamesClass:
- return compareCSSValues<CSSGridLineNamesValue>(*this, other);
- case GridTemplateAreasClass:
- return compareCSSValues<CSSGridTemplateAreasValue>(*this, other);
- case PathClass:
- return compareCSSValues<CSSPathValue>(*this, other);
- case PrimitiveClass:
- return compareCSSValues<CSSPrimitiveValue>(*this, other);
- case ReflectClass:
- return compareCSSValues<CSSReflectValue>(*this, other);
- case ShadowClass:
- return compareCSSValues<CSSShadowValue>(*this, other);
- case CubicBezierTimingFunctionClass:
- return compareCSSValues<CSSCubicBezierTimingFunctionValue>(*this, other);
- case StepsTimingFunctionClass:
- return compareCSSValues<CSSStepsTimingFunctionValue>(*this, other);
- case UnicodeRangeClass:
- return compareCSSValues<CSSUnicodeRangeValue>(*this, other);
- case ValueListClass:
- return compareCSSValues<CSSValueList>(*this, other);
- case LineBoxContainClass:
- return compareCSSValues<CSSLineBoxContainValue>(*this, other);
- case CalculationClass:
- return compareCSSValues<CSSCalcValue>(*this, other);
- case ImageSetClass:
- return compareCSSValues<CSSImageSetValue>(*this, other);
- case CSSSVGDocumentClass:
- return compareCSSValues<CSSSVGDocumentValue>(*this, other);
- case CSSContentDistributionClass:
- return compareCSSValues<CSSContentDistributionValue>(*this, other);
- default:
- ASSERT_NOT_REACHED();
- return false;
- }
- }
- return false;
-}
-
-String CSSValue::cssText() const
-{
- switch (classType()) {
- case BorderImageSliceClass:
- return toCSSBorderImageSliceValue(this)->customCSSText();
- case CanvasClass:
- return toCSSCanvasValue(this)->customCSSText();
- case CursorImageClass:
- return toCSSCursorImageValue(this)->customCSSText();
- case FontFaceSrcClass:
- return toCSSFontFaceSrcValue(this)->customCSSText();
- case FontFeatureClass:
- return toCSSFontFeatureValue(this)->customCSSText();
- case FunctionClass:
- return toCSSFunctionValue(this)->customCSSText();
- case LinearGradientClass:
- return toCSSLinearGradientValue(this)->customCSSText();
- case RadialGradientClass:
- return toCSSRadialGradientValue(this)->customCSSText();
- case CrossfadeClass:
- return toCSSCrossfadeValue(this)->customCSSText();
- case ImageClass:
- return toCSSImageValue(this)->customCSSText();
- case InheritedClass:
- return toCSSInheritedValue(this)->customCSSText();
- case UnsetClass:
- return toCSSUnsetValue(this)->customCSSText();
- case InitialClass:
- return toCSSInitialValue(this)->customCSSText();
- case GridLineNamesClass:
- return toCSSGridLineNamesValue(this)->customCSSText();
- case GridTemplateAreasClass:
- return toCSSGridTemplateAreasValue(this)->customCSSText();
- case PathClass:
- return toCSSPathValue(this)->customCSSText();
- case PrimitiveClass:
- return toCSSPrimitiveValue(this)->customCSSText();
- case ReflectClass:
- return toCSSReflectValue(this)->customCSSText();
- case ShadowClass:
- return toCSSShadowValue(this)->customCSSText();
- case CubicBezierTimingFunctionClass:
- return toCSSCubicBezierTimingFunctionValue(this)->customCSSText();
- case StepsTimingFunctionClass:
- return toCSSStepsTimingFunctionValue(this)->customCSSText();
- case UnicodeRangeClass:
- return toCSSUnicodeRangeValue(this)->customCSSText();
- case ValueListClass:
- return toCSSValueList(this)->customCSSText();
- case LineBoxContainClass:
- return toCSSLineBoxContainValue(this)->customCSSText();
- case CalculationClass:
- return toCSSCalcValue(this)->customCSSText();
- case ImageSetClass:
- return toCSSImageSetValue(this)->customCSSText();
- case CSSSVGDocumentClass:
- return toCSSSVGDocumentValue(this)->customCSSText();
- case CSSContentDistributionClass:
- return toCSSContentDistributionValue(this)->customCSSText();
- }
- ASSERT_NOT_REACHED();
- return String();
-}
-
-void CSSValue::destroy()
-{
- switch (classType()) {
- case BorderImageSliceClass:
- delete toCSSBorderImageSliceValue(this);
- return;
- case CanvasClass:
- delete toCSSCanvasValue(this);
- return;
- case CursorImageClass:
- delete toCSSCursorImageValue(this);
- return;
- case FontFaceSrcClass:
- delete toCSSFontFaceSrcValue(this);
- return;
- case FontFeatureClass:
- delete toCSSFontFeatureValue(this);
- return;
- case FunctionClass:
- delete toCSSFunctionValue(this);
- return;
- case LinearGradientClass:
- delete toCSSLinearGradientValue(this);
- return;
- case RadialGradientClass:
- delete toCSSRadialGradientValue(this);
- return;
- case CrossfadeClass:
- delete toCSSCrossfadeValue(this);
- return;
- case ImageClass:
- delete toCSSImageValue(this);
- return;
- case InheritedClass:
- delete toCSSInheritedValue(this);
- return;
- case InitialClass:
- delete toCSSInitialValue(this);
- return;
- case UnsetClass:
- delete toCSSUnsetValue(this);
- return;
- case GridLineNamesClass:
- delete toCSSGridLineNamesValue(this);
- return;
- case GridTemplateAreasClass:
- delete toCSSGridTemplateAreasValue(this);
- return;
- case PathClass:
- delete toCSSPathValue(this);
- return;
- case PrimitiveClass:
- delete toCSSPrimitiveValue(this);
- return;
- case ReflectClass:
- delete toCSSReflectValue(this);
- return;
- case ShadowClass:
- delete toCSSShadowValue(this);
- return;
- case CubicBezierTimingFunctionClass:
- delete toCSSCubicBezierTimingFunctionValue(this);
- return;
- case StepsTimingFunctionClass:
- delete toCSSStepsTimingFunctionValue(this);
- return;
- case UnicodeRangeClass:
- delete toCSSUnicodeRangeValue(this);
- return;
- case ValueListClass:
- delete toCSSValueList(this);
- return;
- case LineBoxContainClass:
- delete toCSSLineBoxContainValue(this);
- return;
- case CalculationClass:
- delete toCSSCalcValue(this);
- return;
- case ImageSetClass:
- delete toCSSImageSetValue(this);
- return;
- case CSSSVGDocumentClass:
- delete toCSSSVGDocumentValue(this);
- return;
- case CSSContentDistributionClass:
- delete toCSSContentDistributionValue(this);
- return;
- }
- ASSERT_NOT_REACHED();
-}
-
-void CSSValue::finalizeGarbageCollectedObject()
-{
- switch (classType()) {
- case BorderImageSliceClass:
- toCSSBorderImageSliceValue(this)->~CSSBorderImageSliceValue();
- return;
- case CanvasClass:
- toCSSCanvasValue(this)->~CSSCanvasValue();
- return;
- case CursorImageClass:
- toCSSCursorImageValue(this)->~CSSCursorImageValue();
- return;
- case FontFaceSrcClass:
- toCSSFontFaceSrcValue(this)->~CSSFontFaceSrcValue();
- return;
- case FontFeatureClass:
- toCSSFontFeatureValue(this)->~CSSFontFeatureValue();
- return;
- case FunctionClass:
- toCSSFunctionValue(this)->~CSSFunctionValue();
- return;
- case LinearGradientClass:
- toCSSLinearGradientValue(this)->~CSSLinearGradientValue();
- return;
- case RadialGradientClass:
- toCSSRadialGradientValue(this)->~CSSRadialGradientValue();
- return;
- case CrossfadeClass:
- toCSSCrossfadeValue(this)->~CSSCrossfadeValue();
- return;
- case ImageClass:
- toCSSImageValue(this)->~CSSImageValue();
- return;
- case InheritedClass:
- toCSSInheritedValue(this)->~CSSInheritedValue();
- return;
- case InitialClass:
- toCSSInitialValue(this)->~CSSInitialValue();
- return;
- case UnsetClass:
- toCSSUnsetValue(this)->~CSSUnsetValue();
- return;
- case GridLineNamesClass:
- toCSSGridLineNamesValue(this)->~CSSGridLineNamesValue();
- return;
- case GridTemplateAreasClass:
- toCSSGridTemplateAreasValue(this)->~CSSGridTemplateAreasValue();
- return;
- case PathClass:
- toCSSPathValue(this)->~CSSPathValue();
- return;
- case PrimitiveClass:
- toCSSPrimitiveValue(this)->~CSSPrimitiveValue();
- return;
- case ReflectClass:
- toCSSReflectValue(this)->~CSSReflectValue();
- return;
- case ShadowClass:
- toCSSShadowValue(this)->~CSSShadowValue();
- return;
- case CubicBezierTimingFunctionClass:
- toCSSCubicBezierTimingFunctionValue(this)->~CSSCubicBezierTimingFunctionValue();
- return;
- case StepsTimingFunctionClass:
- toCSSStepsTimingFunctionValue(this)->~CSSStepsTimingFunctionValue();
- return;
- case UnicodeRangeClass:
- toCSSUnicodeRangeValue(this)->~CSSUnicodeRangeValue();
- return;
- case ValueListClass:
- toCSSValueList(this)->~CSSValueList();
- return;
- case LineBoxContainClass:
- toCSSLineBoxContainValue(this)->~CSSLineBoxContainValue();
- return;
- case CalculationClass:
- toCSSCalcValue(this)->~CSSCalcValue();
- return;
- case ImageSetClass:
- toCSSImageSetValue(this)->~CSSImageSetValue();
- return;
- case CSSSVGDocumentClass:
- toCSSSVGDocumentValue(this)->~CSSSVGDocumentValue();
- return;
- case CSSContentDistributionClass:
- toCSSContentDistributionValue(this)->~CSSContentDistributionValue();
- return;
- }
- ASSERT_NOT_REACHED();
-}
-
-DEFINE_TRACE(CSSValue)
-{
- switch (classType()) {
- case BorderImageSliceClass:
- toCSSBorderImageSliceValue(this)->traceAfterDispatch(visitor);
- return;
- case CanvasClass:
- toCSSCanvasValue(this)->traceAfterDispatch(visitor);
- return;
- case CursorImageClass:
- toCSSCursorImageValue(this)->traceAfterDispatch(visitor);
- return;
- case FontFaceSrcClass:
- toCSSFontFaceSrcValue(this)->traceAfterDispatch(visitor);
- return;
- case FontFeatureClass:
- toCSSFontFeatureValue(this)->traceAfterDispatch(visitor);
- return;
- case FunctionClass:
- toCSSFunctionValue(this)->traceAfterDispatch(visitor);
- return;
- case LinearGradientClass:
- toCSSLinearGradientValue(this)->traceAfterDispatch(visitor);
- return;
- case RadialGradientClass:
- toCSSRadialGradientValue(this)->traceAfterDispatch(visitor);
- return;
- case CrossfadeClass:
- toCSSCrossfadeValue(this)->traceAfterDispatch(visitor);
- return;
- case ImageClass:
- toCSSImageValue(this)->traceAfterDispatch(visitor);
- return;
- case InheritedClass:
- toCSSInheritedValue(this)->traceAfterDispatch(visitor);
- return;
- case InitialClass:
- toCSSInitialValue(this)->traceAfterDispatch(visitor);
- return;
- case UnsetClass:
- toCSSUnsetValue(this)->traceAfterDispatch(visitor);
- return;
- case GridLineNamesClass:
- toCSSGridLineNamesValue(this)->traceAfterDispatch(visitor);
- return;
- case GridTemplateAreasClass:
- toCSSGridTemplateAreasValue(this)->traceAfterDispatch(visitor);
- return;
- case PathClass:
- toCSSPathValue(this)->traceAfterDispatch(visitor);
- return;
- case PrimitiveClass:
- toCSSPrimitiveValue(this)->traceAfterDispatch(visitor);
- return;
- case ReflectClass:
- toCSSReflectValue(this)->traceAfterDispatch(visitor);
- return;
- case ShadowClass:
- toCSSShadowValue(this)->traceAfterDispatch(visitor);
- return;
- case CubicBezierTimingFunctionClass:
- toCSSCubicBezierTimingFunctionValue(this)->traceAfterDispatch(visitor);
- return;
- case StepsTimingFunctionClass:
- toCSSStepsTimingFunctionValue(this)->traceAfterDispatch(visitor);
- return;
- case UnicodeRangeClass:
- toCSSUnicodeRangeValue(this)->traceAfterDispatch(visitor);
- return;
- case ValueListClass:
- toCSSValueList(this)->traceAfterDispatch(visitor);
- return;
- case LineBoxContainClass:
- toCSSLineBoxContainValue(this)->traceAfterDispatch(visitor);
- return;
- case CalculationClass:
- toCSSCalcValue(this)->traceAfterDispatch(visitor);
- return;
- case ImageSetClass:
- toCSSImageSetValue(this)->traceAfterDispatch(visitor);
- return;
- case CSSSVGDocumentClass:
- toCSSSVGDocumentValue(this)->traceAfterDispatch(visitor);
- return;
- case CSSContentDistributionClass:
- toCSSContentDistributionValue(this)->traceAfterDispatch(visitor);
- return;
- }
- ASSERT_NOT_REACHED();
-}
-
-}
« no previous file with comments | « Source/core/css/CSSValue.h ('k') | Source/core/css/CSSValueList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698