1. 17 Oct, 2013 1 commit
  2. 11 Feb, 2013 1 commit
    • commit-queue@webkit.org's avatar
      Implement CSSValue::equals(const CSSValue&) to optimise CSSValue comparison · b4b784a2
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=102901
      
      Patch by Alexander Shalamov <alexander.shalamov@intel.com> on 2013-02-11
      Reviewed by Antti Koivisto.
      
      Source/WebCore:
      
      Added comparison method to CSSValue and its children, so that the
      css values could be compared efficiently. Before this patch, CSSValue
      objects were compared using strings that were generated by the cssText() method.
      
      Test: cssom/cssvalue-comparison.html
      
      * css/CSSAspectRatioValue.cpp:
      (WebCore::CSSAspectRatioValue::equals):
      (WebCore):
      * css/CSSAspectRatioValue.h:
      (CSSAspectRatioValue):
      * css/CSSBasicShapes.cpp:
      (WebCore::CSSBasicShapeRectangle::equals):
      (WebCore):
      (WebCore::CSSBasicShapeCircle::equals):
      (WebCore::CSSBasicShapeEllipse::equals):
      (WebCore::CSSBasicShapePolygon::equals):
      * css/CSSBasicShapes.h:
      (CSSBasicShapeRectangle):
      (CSSBasicShapeCircle):
      (CSSBasicShapeEllipse):
      (CSSBasicShapePolygon):
      * css/CSSBorderImageSliceValue.cpp:
      (WebCore::CSSBorderImageSliceValue::equals):
      (WebCore):
      * css/CSSBorderImageSliceValue.h:
      (CSSBorderImageSliceValue):
      * css/CSSCalculationValue.cpp:
      (WebCore::CSSCalcValue::equals):
      (WebCore):
      (WebCore::CSSCalcPrimitiveValue::equals):
      (CSSCalcPrimitiveValue):
      (WebCore::CSSCalcPrimitiveValue::type):
      (WebCore::CSSCalcBinaryOperation::equals):
      (CSSCalcBinaryOperation):
      (WebCore::CSSCalcBinaryOperation::type):
      * css/CSSCalculationValue.h:
      (WebCore::CSSCalcExpressionNode::equals):
      (CSSCalcExpressionNode):
      (CSSCalcValue):
      * css/CSSCanvasValue.cpp:
      (WebCore::CSSCanvasValue::equals):
      (WebCore):
      * css/CSSCanvasValue.h:
      (CSSCanvasValue):
      * css/CSSComputedStyleDeclaration.cpp:
      (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
      (WebCore::CSSComputedStyleDeclaration::cssPropertyMatches):
      (WebCore::CSSComputedStyleDeclaration::getCSSPropertyValuesForSidesShorthand):
      * css/CSSCrossfadeValue.cpp:
      (WebCore::CSSCrossfadeValue::equals):
      (WebCore):
      * css/CSSCrossfadeValue.h:
      (CSSCrossfadeValue):
      * css/CSSCursorImageValue.cpp:
      (WebCore::CSSCursorImageValue::equals):
      (WebCore):
      * css/CSSCursorImageValue.h:
      (CSSCursorImageValue):
      * css/CSSFontFaceSrcValue.cpp:
      (WebCore::CSSFontFaceSrcValue::equals):
      (WebCore):
      * css/CSSFontFaceSrcValue.h:
      (CSSFontFaceSrcValue):
      * css/CSSFunctionValue.cpp:
      (WebCore::CSSFunctionValue::equals):
      (WebCore):
      * css/CSSFunctionValue.h:
      (CSSFunctionValue):
      * css/CSSGradientValue.cpp:
      (WebCore::CSSLinearGradientValue::equals):
      (WebCore):
      (WebCore::CSSRadialGradientValue::equals):
      * css/CSSGradientValue.h:
      (WebCore::CSSGradientColorStop::operator==):
      (CSSLinearGradientValue):
      (CSSRadialGradientValue):
      * css/CSSImageValue.cpp:
      (WebCore::CSSImageValue::equals):
      (WebCore):
      * css/CSSImageValue.h:
      (CSSImageValue):
      * css/CSSInheritedValue.h:
      (WebCore::CSSInheritedValue::equals):
      (CSSInheritedValue):
      * css/CSSInitialValue.h:
      (WebCore::CSSInitialValue::equals):
      (CSSInitialValue):
      * css/CSSLineBoxContainValue.h:
      (WebCore::CSSLineBoxContainValue::equals):
      * css/CSSPrimitiveValue.cpp:
      (WebCore::CSSPrimitiveValue::equals):
      (WebCore):
      * css/CSSPrimitiveValue.h:
      (CSSPrimitiveValue):
      * css/CSSReflectValue.cpp:
      (WebCore::CSSReflectValue::equals):
      (WebCore):
      * css/CSSReflectValue.h:
      (CSSReflectValue):
      * css/CSSTimingFunctionValue.cpp:
      (WebCore::CSSCubicBezierTimingFunctionValue::equals):
      (WebCore):
      (WebCore::CSSStepsTimingFunctionValue::equals):
      * css/CSSTimingFunctionValue.h:
      (WebCore::CSSLinearTimingFunctionValue::equals):
      (CSSLinearTimingFunctionValue):
      (CSSCubicBezierTimingFunctionValue):
      (CSSStepsTimingFunctionValue):
      * css/CSSUnicodeRangeValue.cpp:
      (WebCore::CSSUnicodeRangeValue::equals):
      (WebCore):
      * css/CSSUnicodeRangeValue.h:
      (CSSUnicodeRangeValue):
      * css/CSSValue.cpp:
      (WebCore):
      (WebCore::compareCSSValues):
      (WebCore::CSSValue::equals):
      * css/CSSValue.h:
      (CSSValue):
      (WebCore):
      (WebCore::compareCSSValueVector):
      (WebCore::compareCSSValuePtr):
      * css/CSSValueList.cpp:
      (WebCore::CSSValueList::removeAll):
      (WebCore::CSSValueList::hasValue):
      (WebCore::CSSValueList::equals):
      (WebCore):
      * css/CSSValueList.h:
      (CSSValueList):
      * css/CSSVariableValue.h:
      (WebCore::CSSVariableValue::equals):
      (CSSVariableValue):
      * css/Counter.h:
      (Counter):
      (WebCore::Counter::equals):
      * css/DashboardRegion.h:
      (WebCore::DashboardRegion::equals):
      * css/FontFeatureValue.cpp:
      (WebCore::FontFeatureValue::equals):
      (WebCore):
      * css/FontFeatureValue.h:
      (FontFeatureValue):
      * css/FontValue.cpp:
      (WebCore::FontValue::equals):
      (WebCore):
      * css/FontValue.h:
      (FontValue):
      * css/MediaQueryExp.h:
      (WebCore::MediaQueryExp::operator==):
      * css/Pair.h:
      (WebCore::Pair::equals):
      (Pair):
      * css/Rect.h:
      (WebCore::RectBase::equals):
      (RectBase):
      * css/ShadowValue.cpp:
      (WebCore::ShadowValue::equals):
      (WebCore):
      * css/ShadowValue.h:
      (ShadowValue):
      * css/StylePropertySet.cpp:
      (WebCore::StylePropertySet::get4Values):
      (WebCore::StylePropertySet::propertyMatches):
      * css/WebKitCSSArrayFunctionValue.cpp:
      (WebCore::WebKitCSSArrayFunctionValue::equals):
      (WebCore):
      * css/WebKitCSSArrayFunctionValue.h:
      (WebKitCSSArrayFunctionValue):
      * css/WebKitCSSFilterValue.cpp:
      (WebCore::WebKitCSSFilterValue::equals):
      (WebCore):
      * css/WebKitCSSFilterValue.h:
      (WebKitCSSFilterValue):
      * css/WebKitCSSMixFunctionValue.cpp:
      (WebCore::WebKitCSSMixFunctionValue::equals):
      (WebCore):
      * css/WebKitCSSMixFunctionValue.h:
      (WebKitCSSMixFunctionValue):
      * css/WebKitCSSSVGDocumentValue.cpp:
      (WebCore::WebKitCSSSVGDocumentValue::equals):
      (WebCore):
      * css/WebKitCSSSVGDocumentValue.h:
      (WebKitCSSSVGDocumentValue):
      * css/WebKitCSSShaderValue.cpp:
      (WebCore::WebKitCSSShaderValue::equals):
      (WebCore):
      * css/WebKitCSSShaderValue.h:
      (WebKitCSSShaderValue):
      * css/WebKitCSSTransformValue.h:
      (WebCore::WebKitCSSTransformValue::equals):
      * editing/EditingStyle.cpp:
      (WebCore::HTMLAttributeEquivalent::valueIsPresentInStyle):
      * svg/SVGColor.cpp:
      (WebCore::SVGColor::equals):
      (WebCore):
      * svg/SVGColor.h:
      (SVGColor):
      * svg/SVGPaint.cpp:
      (WebCore::SVGPaint::equals):
      (WebCore):
      * svg/SVGPaint.h:
      (SVGPaint):
      
      LayoutTests:
      
      New layout test to verify that CSSValue objects comparison works properly.
      
      * cssom/cssvalue-comparison-expected.txt: Added.
      * cssom/cssvalue-comparison.html: Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142444 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b4b784a2