diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/css/CSSComputedStyleDeclaration.cpp | |
parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/WebCore/css/CSSComputedStyleDeclaration.cpp')
-rw-r--r-- | Source/WebCore/css/CSSComputedStyleDeclaration.cpp | 1246 |
1 files changed, 615 insertions, 631 deletions
diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp index 6c497f6ba..3ffb7ff5c 100644 --- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp +++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp @@ -54,10 +54,11 @@ #include "Pair.h" #include "Rect.h" #include "RenderBox.h" -#include "RenderLayer.h" #include "RenderStyle.h" +#include "RenderView.h" #include "ShadowValue.h" #include "StylePropertySet.h" +#include "StylePropertyShorthand.h" #if ENABLE(CSS_FILTERS) #include "StyleCustomFilterProgram.h" #include "WebKitCSSFilterValue.h" @@ -72,7 +73,7 @@ namespace WebCore { // List of all properties we know how to compute, omitting shorthands. -static const int computedProperties[] = { +static const CSSPropertyID computedProperties[] = { CSSPropertyBackgroundAttachment, CSSPropertyBackgroundClip, CSSPropertyBackgroundColor, @@ -219,12 +220,17 @@ static const int computedProperties[] = { #if ENABLE(DASHBOARD_SUPPORT) CSSPropertyWebkitDashboardRegion, #endif +#if ENABLE(CSS_FILTERS) + CSSPropertyWebkitFilter, +#endif + CSSPropertyWebkitFlex, CSSPropertyWebkitFlexOrder, CSSPropertyWebkitFlexPack, CSSPropertyWebkitFlexAlign, CSSPropertyWebkitFlexItemAlign, CSSPropertyWebkitFlexDirection, CSSPropertyWebkitFlexFlow, + CSSPropertyWebkitFlexLinePack, CSSPropertyWebkitFlexWrap, CSSPropertyWebkitFontKerning, CSSPropertyWebkitFontSmoothing, @@ -277,6 +283,8 @@ static const int computedProperties[] = { CSSPropertyWebkitPerspectiveOrigin, CSSPropertyWebkitPrintColorAdjust, CSSPropertyWebkitRtlOrdering, + CSSPropertyWebkitShapeInside, + CSSPropertyWebkitShapeOutside, #if ENABLE(TOUCH_EVENTS) CSSPropertyWebkitTapHighlightColor, #endif @@ -369,7 +377,7 @@ static int valueForRepeatRule(int rule) } } -static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const NinePieceImage& image, CSSValuePool* cssValuePool) +static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const NinePieceImage& image) { // Create the slices. RefPtr<CSSPrimitiveValue> top; @@ -378,9 +386,9 @@ static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const Ni RefPtr<CSSPrimitiveValue> left; if (image.imageSlices().top().isPercent()) - top = cssValuePool->createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_PERCENTAGE); + top = cssValuePool().createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_PERCENTAGE); else - top = cssValuePool->createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_NUMBER); + top = cssValuePool().createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_NUMBER); if (image.imageSlices().right() == image.imageSlices().top() && image.imageSlices().bottom() == image.imageSlices().top() && image.imageSlices().left() == image.imageSlices().top()) { @@ -389,26 +397,26 @@ static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const Ni left = top; } else { if (image.imageSlices().right().isPercent()) - right = cssValuePool->createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_PERCENTAGE); + right = cssValuePool().createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_PERCENTAGE); else - right = cssValuePool->createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_NUMBER); + right = cssValuePool().createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_NUMBER); if (image.imageSlices().bottom() == image.imageSlices().top() && image.imageSlices().right() == image.imageSlices().left()) { bottom = top; left = right; } else { if (image.imageSlices().bottom().isPercent()) - bottom = cssValuePool->createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_PERCENTAGE); + bottom = cssValuePool().createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_PERCENTAGE); else - bottom = cssValuePool->createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_NUMBER); + bottom = cssValuePool().createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_NUMBER); if (image.imageSlices().left() == image.imageSlices().right()) left = right; else { if (image.imageSlices().left().isPercent()) - left = cssValuePool->createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_PERCENTAGE); + left = cssValuePool().createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_PERCENTAGE); else - left = cssValuePool->createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_NUMBER); + left = cssValuePool().createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_NUMBER); } } } @@ -419,10 +427,10 @@ static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const Ni quad->setBottom(bottom); quad->setLeft(left); - return CSSBorderImageSliceValue::create(cssValuePool->createValue(quad.release()), image.fill()); + return CSSBorderImageSliceValue::create(cssValuePool().createValue(quad.release()), image.fill()); } -static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const LengthBox& box, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const LengthBox& box) { // Create the slices. RefPtr<CSSPrimitiveValue> top; @@ -431,9 +439,9 @@ static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const LengthBox& RefPtr<CSSPrimitiveValue> left; if (box.top().isRelative()) - top = cssValuePool->createValue(box.top().value(), CSSPrimitiveValue::CSS_NUMBER); + top = cssValuePool().createValue(box.top().value(), CSSPrimitiveValue::CSS_NUMBER); else - top = cssValuePool->createValue(box.top()); + top = cssValuePool().createValue(box.top()); if (box.right() == box.top() && box.bottom() == box.top() && box.left() == box.top()) { right = top; @@ -441,26 +449,26 @@ static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const LengthBox& left = top; } else { if (box.right().isRelative()) - right = cssValuePool->createValue(box.right().value(), CSSPrimitiveValue::CSS_NUMBER); + right = cssValuePool().createValue(box.right().value(), CSSPrimitiveValue::CSS_NUMBER); else - right = cssValuePool->createValue(box.right()); + right = cssValuePool().createValue(box.right()); if (box.bottom() == box.top() && box.right() == box.left()) { bottom = top; left = right; } else { if (box.bottom().isRelative()) - bottom = cssValuePool->createValue(box.bottom().value(), CSSPrimitiveValue::CSS_NUMBER); + bottom = cssValuePool().createValue(box.bottom().value(), CSSPrimitiveValue::CSS_NUMBER); else - bottom = cssValuePool->createValue(box.bottom()); + bottom = cssValuePool().createValue(box.bottom()); if (box.left() == box.right()) left = right; else { if (box.left().isRelative()) - left = cssValuePool->createValue(box.left().value(), CSSPrimitiveValue::CSS_NUMBER); + left = cssValuePool().createValue(box.left().value(), CSSPrimitiveValue::CSS_NUMBER); else - left = cssValuePool->createValue(box.left()); + left = cssValuePool().createValue(box.left()); } } } @@ -471,26 +479,26 @@ static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const LengthBox& quad->setBottom(bottom); quad->setLeft(left); - return cssValuePool->createValue(quad.release()); + return cssValuePool().createValue(quad.release()); } -static PassRefPtr<CSSValue> valueForNinePieceImageRepeat(const NinePieceImage& image, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForNinePieceImageRepeat(const NinePieceImage& image) { RefPtr<CSSPrimitiveValue> horizontalRepeat; RefPtr<CSSPrimitiveValue> verticalRepeat; - horizontalRepeat = cssValuePool->createIdentifierValue(valueForRepeatRule(image.horizontalRule())); + horizontalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(image.horizontalRule())); if (image.horizontalRule() == image.verticalRule()) verticalRepeat = horizontalRepeat; else - verticalRepeat = cssValuePool->createIdentifierValue(valueForRepeatRule(image.verticalRule())); - return cssValuePool->createValue(Pair::create(horizontalRepeat.release(), verticalRepeat.release())); + verticalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(image.verticalRule())); + return cssValuePool().createValue(Pair::create(horizontalRepeat.release(), verticalRepeat.release())); } -static PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image) { if (!image.hasImage()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); // Image first. RefPtr<CSSValue> imageValue; @@ -498,52 +506,52 @@ static PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image, imageValue = image.image()->cssValue(); // Create the image slice. - RefPtr<CSSBorderImageSliceValue> imageSlices = valueForNinePieceImageSlice(image, cssValuePool); + RefPtr<CSSBorderImageSliceValue> imageSlices = valueForNinePieceImageSlice(image); // Create the border area slices. - RefPtr<CSSValue> borderSlices = valueForNinePieceImageQuad(image.borderSlices(), cssValuePool); + RefPtr<CSSValue> borderSlices = valueForNinePieceImageQuad(image.borderSlices()); // Create the border outset. - RefPtr<CSSValue> outset = valueForNinePieceImageQuad(image.outset(), cssValuePool); + RefPtr<CSSValue> outset = valueForNinePieceImageQuad(image.outset()); // Create the repeat rules. - RefPtr<CSSValue> repeat = valueForNinePieceImageRepeat(image, cssValuePool); + RefPtr<CSSValue> repeat = valueForNinePieceImageRepeat(image); return createBorderImageValue(imageValue, imageSlices, borderSlices, outset, repeat); } -inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(int value, const RenderStyle* style, CSSValuePool* cssValuePool) +inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const RenderStyle* style) { - return cssValuePool->createValue(adjustForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX); + return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX); } -inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style, CSSValuePool* cssValuePool) +inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const RenderStyle* style) { - return cssValuePool->createValue(value / style->effectiveZoom(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(value / style->effectiveZoom(), CSSPrimitiveValue::CSS_NUMBER); } -static PassRefPtr<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> zoomAdjustedPixelValueForLength(const Length& length, const RenderStyle* style) { if (length.isFixed()) - return zoomAdjustedPixelValue(length.value(), style, cssValuePool); - return cssValuePool->createValue(length); + return zoomAdjustedPixelValue(length.value(), style); + return cssValuePool().createValue(length); } -static PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection, const RenderStyle* style) { if (!reflection) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); RefPtr<CSSPrimitiveValue> offset; if (reflection->offset().isPercent()) - offset = cssValuePool->createValue(reflection->offset().percent(), CSSPrimitiveValue::CSS_PERCENTAGE); + offset = cssValuePool().createValue(reflection->offset().percent(), CSSPrimitiveValue::CSS_PERCENTAGE); else - offset = zoomAdjustedPixelValue(reflection->offset().value(), style, cssValuePool); + offset = zoomAdjustedPixelValue(reflection->offset().value(), style); - return CSSReflectValue::create(reflection->direction(), offset.release(), valueForNinePieceImage(reflection->mask(), cssValuePool)); + return CSSReflectValue::create(reflection->direction(), offset.release(), valueForNinePieceImage(reflection->mask())); } -static PassRefPtr<CSSValue> getPositionOffsetValue(RenderStyle* style, int propertyID, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> getPositionOffsetValue(RenderStyle* style, CSSPropertyID propertyID, RenderView* renderView) { if (!style) return 0; @@ -568,53 +576,54 @@ static PassRefPtr<CSSValue> getPositionOffsetValue(RenderStyle* style, int prope if (style->position() == AbsolutePosition || style->position() == FixedPosition) { if (l.type() == WebCore::Fixed) - return zoomAdjustedPixelValue(l.value(), style, cssValuePool); - return cssValuePool->createValue(l); + return zoomAdjustedPixelValue(l.value(), style); + else if (l.isViewportPercentage()) + return zoomAdjustedPixelValue(valueForLength(l, 0, renderView), style); + return cssValuePool().createValue(l); } if (style->position() == RelativePosition) // FIXME: It's not enough to simply return "auto" values for one offset if the other side is defined. // In other words if left is auto and right is not auto, then left's computed value is negative right(). // So we should get the opposite length unit and see if it is auto. - return cssValuePool->createValue(l); + return cssValuePool().createValue(l); - return cssValuePool->createIdentifierValue(CSSValueAuto); + return cssValuePool().createIdentifierValue(CSSValueAuto); } PassRefPtr<CSSPrimitiveValue> CSSComputedStyleDeclaration::currentColorOrValidColor(RenderStyle* style, const Color& color) const { // This function does NOT look at visited information, so that computed style doesn't expose that. - CSSValuePool* cssValuePool = m_node->document()->cssValuePool().get(); if (!color.isValid()) - return cssValuePool->createColorValue(style->color().rgb()); - return cssValuePool->createColorValue(color.rgb()); + return cssValuePool().createColorValue(style->color().rgb()); + return cssValuePool().createColorValue(color.rgb()); } -static PassRefPtr<CSSValueList> getBorderRadiusCornerValues(LengthSize radius, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValueList> getBorderRadiusCornerValues(LengthSize radius, const RenderStyle* style, RenderView* renderView) { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); if (radius.width().type() == Percent) - list->append(cssValuePool->createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); + list->append(cssValuePool().createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); else - list->append(zoomAdjustedPixelValue(radius.width().value(), style, cssValuePool)); + list->append(zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style)); if (radius.height().type() == Percent) - list->append(cssValuePool->createValue(radius.height().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); + list->append(cssValuePool().createValue(radius.height().percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); else - list->append(zoomAdjustedPixelValue(radius.height().value(), style, cssValuePool)); + list->append(zoomAdjustedPixelValue(valueForLength(radius.height(), 0, renderView), style)); return list.release(); } -static PassRefPtr<CSSValue> getBorderRadiusCornerValue(LengthSize radius, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> getBorderRadiusCornerValue(LengthSize radius, const RenderStyle* style, RenderView* renderView) { if (radius.width() == radius.height()) { if (radius.width().type() == Percent) - return cssValuePool->createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE); - return zoomAdjustedPixelValue(radius.width().value(), style, cssValuePool); + return cssValuePool().createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE); + return zoomAdjustedPixelValue(valueForLength(radius.width(), 0, renderView), style); } - return getBorderRadiusCornerValues(radius, style, cssValuePool); + return getBorderRadiusCornerValues(radius, style, renderView); } -static PassRefPtr<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* style, RenderView* renderView) { RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); bool showHorizontalBottomLeft = style->borderTopRightRadius().width() != style->borderBottomLeftRadius().width(); @@ -626,10 +635,10 @@ static PassRefPtr<CSSValueList> getBorderRadiusShorthandValue(const RenderStyle* bool showVerticalTopRight = (style->borderTopRightRadius().height() != style->borderTopLeftRadius().height()) || showVerticalBottomRight; bool showVerticalTopLeft = (style->borderTopLeftRadius().width() != style->borderTopLeftRadius().height()); - RefPtr<CSSValueList> topLeftRadius = getBorderRadiusCornerValues(style->borderTopLeftRadius(), style, cssValuePool); - RefPtr<CSSValueList> topRightRadius = getBorderRadiusCornerValues(style->borderTopRightRadius(), style, cssValuePool); - RefPtr<CSSValueList> bottomRightRadius = getBorderRadiusCornerValues(style->borderBottomRightRadius(), style, cssValuePool); - RefPtr<CSSValueList> bottomLeftRadius = getBorderRadiusCornerValues(style->borderBottomLeftRadius(), style, cssValuePool); + RefPtr<CSSValueList> topLeftRadius = getBorderRadiusCornerValues(style->borderTopLeftRadius(), style, renderView); + RefPtr<CSSValueList> topRightRadius = getBorderRadiusCornerValues(style->borderTopRightRadius(), style, renderView); + RefPtr<CSSValueList> bottomRightRadius = getBorderRadiusCornerValues(style->borderBottomRightRadius(), style, renderView); + RefPtr<CSSValueList> bottomLeftRadius = getBorderRadiusCornerValues(style->borderBottomLeftRadius(), style, renderView); RefPtr<CSSValueList> horizontalRadii = CSSValueList::createSpaceSeparated(); horizontalRadii->append(topLeftRadius->item(0)); @@ -662,18 +671,13 @@ static LayoutRect sizingBox(RenderObject* renderer) return LayoutRect(); RenderBox* box = toRenderBox(renderer); - return box->style()->boxSizing() == CONTENT_BOX ? box->contentBoxRect() : box->borderBoxRect(); -} - -static inline bool hasCompositedLayer(RenderObject* renderer) -{ - return renderer && renderer->hasLayer() && toRenderBoxModelObject(renderer)->layer()->isComposited(); + return box->style()->boxSizing() == BORDER_BOX ? box->borderBoxRect() : box->computedCSSContentBoxRect(); } -static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style) { if (!renderer || style->transform().operations().isEmpty()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); LayoutRect box = sizingBox(renderer); @@ -687,34 +691,34 @@ static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const Rend if (transform.isAffine()) { transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::MatrixTransformOperation); - transformVal->append(cssValuePool->createValue(transform.a(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.b(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.c(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.d(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(zoomAdjustedNumberValue(transform.e(), style, cssValuePool)); - transformVal->append(zoomAdjustedNumberValue(transform.f(), style, cssValuePool)); + transformVal->append(cssValuePool().createValue(transform.a(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.b(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.c(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.d(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(zoomAdjustedNumberValue(transform.e(), style)); + transformVal->append(zoomAdjustedNumberValue(transform.f(), style)); } else { transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::Matrix3DTransformOperation); - transformVal->append(cssValuePool->createValue(transform.m11(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m12(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m13(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m14(), CSSPrimitiveValue::CSS_NUMBER)); - - transformVal->append(cssValuePool->createValue(transform.m21(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m22(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m23(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m24(), CSSPrimitiveValue::CSS_NUMBER)); - - transformVal->append(cssValuePool->createValue(transform.m31(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m32(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m33(), CSSPrimitiveValue::CSS_NUMBER)); - transformVal->append(cssValuePool->createValue(transform.m34(), CSSPrimitiveValue::CSS_NUMBER)); - - transformVal->append(zoomAdjustedNumberValue(transform.m41(), style, cssValuePool)); - transformVal->append(zoomAdjustedNumberValue(transform.m42(), style, cssValuePool)); - transformVal->append(zoomAdjustedNumberValue(transform.m43(), style, cssValuePool)); - transformVal->append(cssValuePool->createValue(transform.m44(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m11(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m12(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m13(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m14(), CSSPrimitiveValue::CSS_NUMBER)); + + transformVal->append(cssValuePool().createValue(transform.m21(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m22(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m23(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m24(), CSSPrimitiveValue::CSS_NUMBER)); + + transformVal->append(cssValuePool().createValue(transform.m31(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m32(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m33(), CSSPrimitiveValue::CSS_NUMBER)); + transformVal->append(cssValuePool().createValue(transform.m34(), CSSPrimitiveValue::CSS_NUMBER)); + + transformVal->append(zoomAdjustedNumberValue(transform.m41(), style)); + transformVal->append(zoomAdjustedNumberValue(transform.m42(), style)); + transformVal->append(zoomAdjustedNumberValue(transform.m43(), style)); + transformVal->append(cssValuePool().createValue(transform.m44(), CSSPrimitiveValue::CSS_NUMBER)); } RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); @@ -727,9 +731,8 @@ static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const Rend PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForCustomFilterNumberParameter(const CustomFilterNumberParameter* numberParameter) const { RefPtr<CSSValueList> numberParameterValue = CSSValueList::createSpaceSeparated(); - CSSValuePool* cssValuePool = m_node->document()->cssValuePool().get(); for (unsigned i = 0; i < numberParameter->size(); ++i) - numberParameterValue->append(cssValuePool->createValue(numberParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER)); + numberParameterValue->append(cssValuePool().createValue(numberParameter->valueAt(i), CSSPrimitiveValue::CSS_NUMBER)); return numberParameterValue.release(); } @@ -750,10 +753,8 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForCustomFilterParameter( #if ENABLE(CSS_FILTERS) PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForFilter(RenderStyle* style) const { - CSSValuePool* cssValuePool = m_node->document()->cssValuePool().get(); - if (style->filter().operations().isEmpty()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); @@ -766,68 +767,68 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForFilter(RenderStyle* st case FilterOperation::REFERENCE: { ReferenceFilterOperation* referenceOperation = static_cast<ReferenceFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ReferenceFilterOperation); - filterValue->append(cssValuePool->createValue(referenceOperation->reference(), CSSPrimitiveValue::CSS_STRING)); + filterValue->append(cssValuePool().createValue(referenceOperation->reference(), CSSPrimitiveValue::CSS_STRING)); break; } case FilterOperation::GRAYSCALE: { BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::GrayscaleFilterOperation); - filterValue->append(cssValuePool->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::SEPIA: { BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SepiaFilterOperation); - filterValue->append(cssValuePool->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::SATURATE: { BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SaturateFilterOperation); - filterValue->append(cssValuePool->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::HUE_ROTATE: { BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::HueRotateFilterOperation); - filterValue->append(cssValuePool->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_DEG)); + filterValue->append(cssValuePool().createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_DEG)); break; } case FilterOperation::INVERT: { BasicComponentTransferFilterOperation* componentTransferOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::InvertFilterOperation); - filterValue->append(cssValuePool->createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::OPACITY: { BasicComponentTransferFilterOperation* componentTransferOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::OpacityFilterOperation); - filterValue->append(cssValuePool->createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::BRIGHTNESS: { BasicComponentTransferFilterOperation* brightnessOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::BrightnessFilterOperation); - filterValue->append(cssValuePool->createValue(brightnessOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(brightnessOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::CONTRAST: { BasicComponentTransferFilterOperation* contrastOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ContrastFilterOperation); - filterValue->append(cssValuePool->createValue(contrastOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); + filterValue->append(cssValuePool().createValue(contrastOperation->amount(), CSSPrimitiveValue::CSS_NUMBER)); break; } case FilterOperation::BLUR: { BlurFilterOperation* blurOperation = static_cast<BlurFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::BlurFilterOperation); - filterValue->append(zoomAdjustedPixelValue(blurOperation->stdDeviation().value(), style, cssValuePool)); + filterValue->append(zoomAdjustedPixelValue(blurOperation->stdDeviation().value(), style)); break; } case FilterOperation::DROP_SHADOW: { DropShadowFilterOperation* dropShadowOperation = static_cast<DropShadowFilterOperation*>(filterOperation); filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::DropShadowFilterOperation); // We want our computed style to look like that of a text shadow (has neither spread nor inset style). - ShadowData shadowData = ShadowData(dropShadowOperation->x(), dropShadowOperation->y(), dropShadowOperation->stdDeviation(), 0, Normal, false, dropShadowOperation->color()); + ShadowData shadowData = ShadowData(dropShadowOperation->location(), dropShadowOperation->stdDeviation(), 0, Normal, false, dropShadowOperation->color()); filterValue->append(valueForShadow(&shadowData, CSSPropertyTextShadow, style)); break; } @@ -845,22 +846,22 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForFilter(RenderStyle* st if (program->vertexShader()) shadersList->append(program->vertexShader()->cssValue()); else - shadersList->append(cssValuePool->createIdentifierValue(CSSValueNone)); + shadersList->append(cssValuePool().createIdentifierValue(CSSValueNone)); if (program->fragmentShader()) shadersList->append(program->fragmentShader()->cssValue()); else - shadersList->append(cssValuePool->createIdentifierValue(CSSValueNone)); + shadersList->append(cssValuePool().createIdentifierValue(CSSValueNone)); filterValue->append(shadersList.release()); RefPtr<CSSValueList> meshParameters = CSSValueList::createSpaceSeparated(); - meshParameters->append(cssValuePool->createValue(customOperation->meshRows(), CSSPrimitiveValue::CSS_NUMBER)); - meshParameters->append(cssValuePool->createValue(customOperation->meshColumns(), CSSPrimitiveValue::CSS_NUMBER)); - meshParameters->append(cssValuePool->createValue(customOperation->meshBoxType())); + meshParameters->append(cssValuePool().createValue(customOperation->meshRows(), CSSPrimitiveValue::CSS_NUMBER)); + meshParameters->append(cssValuePool().createValue(customOperation->meshColumns(), CSSPrimitiveValue::CSS_NUMBER)); + meshParameters->append(cssValuePool().createValue(customOperation->meshBoxType())); // FIXME: The specification doesn't have any "attached" identifier. Should we add one? // https://bugs.webkit.org/show_bug.cgi?id=72700 if (customOperation->meshType() == CustomFilterOperation::DETACHED) - meshParameters->append(cssValuePool->createIdentifierValue(CSSValueDetached)); + meshParameters->append(cssValuePool().createIdentifierValue(CSSValueDetached)); filterValue->append(meshParameters.release()); @@ -872,7 +873,7 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForFilter(RenderStyle* st for (size_t i = 0; i < parametersSize; ++i) { const CustomFilterParameter* parameter = parameters.at(i).get(); RefPtr<CSSValueList> parameterCSSNameAndValue = CSSValueList::createSpaceSeparated(); - parameterCSSNameAndValue->append(cssValuePool->createValue(parameter->name(), CSSPrimitiveValue::CSS_STRING)); + parameterCSSNameAndValue->append(cssValuePool().createValue(parameter->name(), CSSPrimitiveValue::CSS_STRING)); parameterCSSNameAndValue->append(valueForCustomFilterParameter(parameter)); parametersCSSValue->append(parameterCSSNameAndValue.release()); } @@ -893,62 +894,62 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForFilter(RenderStyle* st #endif #if ENABLE(CSS_GRID_LAYOUT) -static PassRefPtr<CSSValue> valueForGridTrackBreadth(const Length& trackLength, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForGridTrackBreadth(const Length& trackLength, const RenderStyle* style) { if (trackLength.isPercent()) - return cssValuePool->createValue(trackLength); + return cssValuePool().createValue(trackLength); if (trackLength.isAuto()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return zoomAdjustedPixelValue(trackLength.value(), style, cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return zoomAdjustedPixelValue(trackLength.value(), style); } -static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<Length>& trackLengths, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<Length>& trackLengths, const RenderStyle* style) { // We should have at least an element! ASSERT(trackLengths.size()); // Handle the 'none' case here. if (trackLengths.size() == 1 && trackLengths[0].isUndefined()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); for (size_t i = 0; i < trackLengths.size(); ++i) - list->append(valueForGridTrackBreadth(trackLengths[i], style, cssValuePool)); + list->append(valueForGridTrackBreadth(trackLengths[i], style)); return list.release(); } -static PassRefPtr<CSSValue> valueForGridPosition(const Length& position, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> valueForGridPosition(const Length& position) { if (position.isAuto()) - return cssValuePool->createIdentifierValue(CSSValueAuto); + return cssValuePool().createIdentifierValue(CSSValueAuto); ASSERT(position.isFixed()); - return cssValuePool->createValue(position.value(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(position.value(), CSSPrimitiveValue::CSS_NUMBER); } #endif -static PassRefPtr<CSSValue> getDelayValue(const AnimationList* animList, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> getDelayValue(const AnimationList* animList) { RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); if (animList) { for (size_t i = 0; i < animList->size(); ++i) - list->append(cssValuePool->createValue(animList->animation(i)->delay(), CSSPrimitiveValue::CSS_S)); + list->append(cssValuePool().createValue(animList->animation(i)->delay(), CSSPrimitiveValue::CSS_S)); } else { // Note that initialAnimationDelay() is used for both transitions and animations - list->append(cssValuePool->createValue(Animation::initialAnimationDelay(), CSSPrimitiveValue::CSS_S)); + list->append(cssValuePool().createValue(Animation::initialAnimationDelay(), CSSPrimitiveValue::CSS_S)); } return list.release(); } -static PassRefPtr<CSSValue> getDurationValue(const AnimationList* animList, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> getDurationValue(const AnimationList* animList) { RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); if (animList) { for (size_t i = 0; i < animList->size(); ++i) - list->append(cssValuePool->createValue(animList->animation(i)->duration(), CSSPrimitiveValue::CSS_S)); + list->append(cssValuePool().createValue(animList->animation(i)->duration(), CSSPrimitiveValue::CSS_S)); } else { // Note that initialAnimationDuration() is used for both transitions and animations - list->append(cssValuePool->createValue(Animation::initialAnimationDuration(), CSSPrimitiveValue::CSS_S)); + list->append(cssValuePool().createValue(Animation::initialAnimationDuration(), CSSPrimitiveValue::CSS_S)); } return list.release(); } @@ -985,10 +986,10 @@ static PassRefPtr<CSSValue> getTimingFunctionValue(const AnimationList* animList return list.release(); } -static PassRefPtr<CSSValue> createLineBoxContainValue(CSSValuePool* cssValuePool, unsigned lineBoxContain) +static PassRefPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain) { if (!lineBoxContain) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); return CSSLineBoxContainValue::create(lineBoxContain); } @@ -1025,7 +1026,7 @@ String CSSComputedStyleDeclaration::cssText() const for (unsigned i = 0; i < numComputedProperties; i++) { if (i) result += " "; - result += getPropertyName(static_cast<CSSPropertyID>(computedProperties[i])); + result += getPropertyName(computedProperties[i]); result += ": "; result += getPropertyValue(computedProperties[i]); result += ";"; @@ -1057,13 +1058,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getFontSizeCSSValuePreferringK if (!style) return 0; - CSSValuePool* cssValuePool = m_node->document()->cssValuePool().get(); - if (int keywordSize = style->fontDescription().keywordSize()) - return cssValuePool->createIdentifierValue(cssIdentifierForFontSizeKeyword(keywordSize)); + return cssValuePool().createIdentifierValue(cssIdentifierForFontSizeKeyword(keywordSize)); - return zoomAdjustedPixelValue(style->fontDescription().computedPixelSize(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->fontDescription().computedPixelSize(), style.get()); } bool CSSComputedStyleDeclaration::useFixedFontDefaultSize() const @@ -1078,28 +1077,25 @@ bool CSSComputedStyleDeclaration::useFixedFontDefaultSize() const return style->fontDescription().useFixedDefaultSize(); } -PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForShadow(const ShadowData* shadow, int id, RenderStyle* style) const +PassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForShadow(const ShadowData* shadow, CSSPropertyID propertyID, RenderStyle* style) const { - CSSValuePool* cssValuePool = m_node->document()->cssValuePool().get(); if (!shadow) - return cssValuePool->createIdentifierValue(CSSValueNone); - - CSSPropertyID propertyID = static_cast<CSSPropertyID>(id); + return cssValuePool().createIdentifierValue(CSSValueNone); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const ShadowData* s = shadow; s; s = s->next()) { - RefPtr<CSSPrimitiveValue> x = zoomAdjustedPixelValue(s->x(), style, cssValuePool); - RefPtr<CSSPrimitiveValue> y = zoomAdjustedPixelValue(s->y(), style, cssValuePool); - RefPtr<CSSPrimitiveValue> blur = zoomAdjustedPixelValue(s->blur(), style, cssValuePool); - RefPtr<CSSPrimitiveValue> spread = propertyID == CSSPropertyTextShadow ? PassRefPtr<CSSPrimitiveValue>() : zoomAdjustedPixelValue(s->spread(), style, cssValuePool); - RefPtr<CSSPrimitiveValue> style = propertyID == CSSPropertyTextShadow || s->style() == Normal ? PassRefPtr<CSSPrimitiveValue>() : cssValuePool->createIdentifierValue(CSSValueInset); - RefPtr<CSSPrimitiveValue> color = cssValuePool->createColorValue(s->color().rgb()); + RefPtr<CSSPrimitiveValue> x = zoomAdjustedPixelValue(s->x(), style); + RefPtr<CSSPrimitiveValue> y = zoomAdjustedPixelValue(s->y(), style); + RefPtr<CSSPrimitiveValue> blur = zoomAdjustedPixelValue(s->blur(), style); + RefPtr<CSSPrimitiveValue> spread = propertyID == CSSPropertyTextShadow ? PassRefPtr<CSSPrimitiveValue>() : zoomAdjustedPixelValue(s->spread(), style); + RefPtr<CSSPrimitiveValue> style = propertyID == CSSPropertyTextShadow || s->style() == Normal ? PassRefPtr<CSSPrimitiveValue>() : cssValuePool().createIdentifierValue(CSSValueInset); + RefPtr<CSSPrimitiveValue> color = cssValuePool().createColorValue(s->color().rgb()); list->prepend(ShadowValue::create(x.release(), y.release(), blur.release(), spread.release(), style.release(), color.release())); } return list.release(); } -PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID) const +PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropertyID propertyID) const { return getPropertyCSSValue(propertyID, UpdateLayout); } @@ -1121,31 +1117,31 @@ static int identifierForFamily(const AtomicString& family) return 0; } -static PassRefPtr<CSSPrimitiveValue> valueForFamily(const AtomicString& family, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> valueForFamily(const AtomicString& family) { if (int familyIdentifier = identifierForFamily(family)) - return cssValuePool->createIdentifierValue(familyIdentifier); - return cssValuePool->createValue(family.string(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(familyIdentifier); + return cssValuePool().createValue(family.string(), CSSPrimitiveValue::CSS_STRING); } -static PassRefPtr<CSSValue> renderUnicodeBidiFlagsToCSSValue(EUnicodeBidi unicodeBidi, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> renderUnicodeBidiFlagsToCSSValue(EUnicodeBidi unicodeBidi) { switch (unicodeBidi) { case UBNormal: - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); case Embed: - return cssValuePool->createIdentifierValue(CSSValueEmbed); + return cssValuePool().createIdentifierValue(CSSValueEmbed); case Plaintext: - return cssValuePool->createIdentifierValue(CSSValueWebkitPlaintext); + return cssValuePool().createIdentifierValue(CSSValueWebkitPlaintext); case Override: - return cssValuePool->createIdentifierValue(CSSValueBidiOverride); + return cssValuePool().createIdentifierValue(CSSValueBidiOverride); case Isolate: - return cssValuePool->createIdentifierValue(CSSValueWebkitIsolate); + return cssValuePool().createIdentifierValue(CSSValueWebkitIsolate); case OverrideIsolate: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(cssValuePool->createIdentifierValue(CSSValueBidiOverride)); - list->append(cssValuePool->createIdentifierValue(CSSValueWebkitIsolate)); + list->append(cssValuePool().createIdentifierValue(CSSValueBidiOverride)); + list->append(cssValuePool().createIdentifierValue(CSSValueWebkitIsolate)); return list; } } @@ -1153,78 +1149,78 @@ static PassRefPtr<CSSValue> renderUnicodeBidiFlagsToCSSValue(EUnicodeBidi unicod return 0; } -static PassRefPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecoration, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecoration) { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); if (textDecoration & UNDERLINE) - list->append(cssValuePool->createIdentifierValue(CSSValueUnderline)); + list->append(cssValuePool().createIdentifierValue(CSSValueUnderline)); if (textDecoration & OVERLINE) - list->append(cssValuePool->createIdentifierValue(CSSValueOverline)); + list->append(cssValuePool().createIdentifierValue(CSSValueOverline)); if (textDecoration & LINE_THROUGH) - list->append(cssValuePool->createIdentifierValue(CSSValueLineThrough)); + list->append(cssValuePool().createIdentifierValue(CSSValueLineThrough)); if (textDecoration & BLINK) - list->append(cssValuePool->createIdentifierValue(CSSValueBlink)); + list->append(cssValuePool().createIdentifierValue(CSSValueBlink)); if (!list->length()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); return list; } -static PassRefPtr<CSSValue> fillRepeatToCSSValue(EFillRepeat xRepeat, EFillRepeat yRepeat, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> fillRepeatToCSSValue(EFillRepeat xRepeat, EFillRepeat yRepeat) { // For backwards compatibility, if both values are equal, just return one of them. And // if the two values are equivalent to repeat-x or repeat-y, just return the shorthand. if (xRepeat == yRepeat) - return cssValuePool->createValue(xRepeat); + return cssValuePool().createValue(xRepeat); if (xRepeat == RepeatFill && yRepeat == NoRepeatFill) - return cssValuePool->createIdentifierValue(CSSValueRepeatX); + return cssValuePool().createIdentifierValue(CSSValueRepeatX); if (xRepeat == NoRepeatFill && yRepeat == RepeatFill) - return cssValuePool->createIdentifierValue(CSSValueRepeatY); + return cssValuePool().createIdentifierValue(CSSValueRepeatY); RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(cssValuePool->createValue(xRepeat)); - list->append(cssValuePool->createValue(yRepeat)); + list->append(cssValuePool().createValue(xRepeat)); + list->append(cssValuePool().createValue(yRepeat)); return list.release(); } -static PassRefPtr<CSSValue> fillSizeToCSSValue(const FillSize& fillSize, const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> fillSizeToCSSValue(const FillSize& fillSize, const RenderStyle* style) { if (fillSize.type == Contain) - return cssValuePool->createIdentifierValue(CSSValueContain); + return cssValuePool().createIdentifierValue(CSSValueContain); if (fillSize.type == Cover) - return cssValuePool->createIdentifierValue(CSSValueCover); + return cssValuePool().createIdentifierValue(CSSValueCover); if (fillSize.size.height().isAuto()) - return zoomAdjustedPixelValueForLength(fillSize.size.width(), style, cssValuePool); + return zoomAdjustedPixelValueForLength(fillSize.size.width(), style); RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(zoomAdjustedPixelValueForLength(fillSize.size.width(), style, cssValuePool)); - list->append(zoomAdjustedPixelValueForLength(fillSize.size.height(), style, cssValuePool)); + list->append(zoomAdjustedPixelValueForLength(fillSize.size.width(), style)); + list->append(zoomAdjustedPixelValueForLength(fillSize.size.height(), style)); return list.release(); } -static PassRefPtr<CSSValue> contentToCSSValue(const RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> contentToCSSValue(const RenderStyle* style) { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); for (const ContentData* contentData = style->contentData(); contentData; contentData = contentData->next()) { if (contentData->isCounter()) { const CounterContent* counter = static_cast<const CounterContentData*>(contentData)->counter(); ASSERT(counter); - list->append(cssValuePool->createValue(counter->identifier(), CSSPrimitiveValue::CSS_COUNTER_NAME)); + list->append(cssValuePool().createValue(counter->identifier(), CSSPrimitiveValue::CSS_COUNTER_NAME)); } else if (contentData->isImage()) { const StyleImage* image = static_cast<const ImageContentData*>(contentData)->image(); ASSERT(image); list->append(image->cssValue()); } else if (contentData->isText()) - list->append(cssValuePool->createValue(static_cast<const TextContentData*>(contentData)->text(), CSSPrimitiveValue::CSS_STRING)); + list->append(cssValuePool().createValue(static_cast<const TextContentData*>(contentData)->text(), CSSPrimitiveValue::CSS_STRING)); } if (!style->regionThread().isNull()) - list->append(cssValuePool->createValue(style->regionThread(), CSSPrimitiveValue::CSS_STRING)); + list->append(cssValuePool().createValue(style->regionThread(), CSSPrimitiveValue::CSS_STRING)); return list.release(); } -static PassRefPtr<CSSValue> counterToCSSValue(const RenderStyle* style, int propertyID, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValue> counterToCSSValue(const RenderStyle* style, CSSPropertyID propertyID) { const CounterDirectiveMap* map = style->counterDirectives(); if (!map) @@ -1232,91 +1228,91 @@ static PassRefPtr<CSSValue> counterToCSSValue(const RenderStyle* style, int prop RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); for (CounterDirectiveMap::const_iterator it = map->begin(); it != map->end(); ++it) { - list->append(cssValuePool->createValue(it->first.get(), CSSPrimitiveValue::CSS_STRING)); + list->append(cssValuePool().createValue(it->first.get(), CSSPrimitiveValue::CSS_STRING)); short number = propertyID == CSSPropertyCounterIncrement ? it->second.m_incrementValue : it->second.m_resetValue; - list->append(cssValuePool->createValue((double)number, CSSPrimitiveValue::CSS_NUMBER)); + list->append(cssValuePool().createValue((double)number, CSSPrimitiveValue::CSS_NUMBER)); } return list.release(); } -static void logUnimplementedPropertyID(int propertyID) +static void logUnimplementedPropertyID(CSSPropertyID propertyID) { - DEFINE_STATIC_LOCAL(HashSet<int>, propertyIDSet, ()); - if (!propertyIDSet.add(propertyID).second) + DEFINE_STATIC_LOCAL(HashSet<CSSPropertyID>, propertyIDSet, ()); + if (!propertyIDSet.add(propertyID).isNewEntry) return; - LOG_ERROR("WebKit does not yet implement getComputedStyle for '%s'.", getPropertyName(static_cast<CSSPropertyID>(propertyID))); + LOG_ERROR("WebKit does not yet implement getComputedStyle for '%s'.", getPropertyName(propertyID)); } -static PassRefPtr<CSSValueList> fontFamilyFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSValueList> fontFamilyFromStyle(RenderStyle* style) { const FontFamily& firstFamily = style->fontDescription().family(); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FontFamily* family = &firstFamily; family; family = family->next()) - list->append(valueForFamily(family->family(), cssValuePool)); + list->append(valueForFamily(family->family())); return list.release(); } -static PassRefPtr<CSSPrimitiveValue> lineHeightFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> lineHeightFromStyle(RenderStyle* style, RenderView* renderView) { Length length = style->lineHeight(); if (length.isNegative()) - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); if (length.isPercent()) // This is imperfect, because it doesn't include the zoom factor and the real computation // for how high to be in pixels does include things like minimum font size and the zoom factor. // On the other hand, since font-size doesn't include the zoom factor, we really can't do // that here either. - return zoomAdjustedPixelValue(static_cast<int>(length.percent() * style->fontDescription().specifiedSize()) / 100, style, cssValuePool); - return zoomAdjustedPixelValue(length.value(), style, cssValuePool); + return zoomAdjustedPixelValue(static_cast<int>(length.percent() * style->fontDescription().specifiedSize()) / 100, style); + return zoomAdjustedPixelValue(valueForLength(length, 0, renderView), style); } -static PassRefPtr<CSSPrimitiveValue> fontSizeFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> fontSizeFromStyle(RenderStyle* style) { - return zoomAdjustedPixelValue(style->fontDescription().computedPixelSize(), style, cssValuePool); + return zoomAdjustedPixelValue(style->fontDescription().computedPixelSize(), style); } -static PassRefPtr<CSSPrimitiveValue> fontStyleFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> fontStyleFromStyle(RenderStyle* style) { if (style->fontDescription().italic()) - return cssValuePool->createIdentifierValue(CSSValueItalic); - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueItalic); + return cssValuePool().createIdentifierValue(CSSValueNormal); } -static PassRefPtr<CSSPrimitiveValue> fontVariantFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> fontVariantFromStyle(RenderStyle* style) { if (style->fontDescription().smallCaps()) - return cssValuePool->createIdentifierValue(CSSValueSmallCaps); - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueSmallCaps); + return cssValuePool().createIdentifierValue(CSSValueNormal); } -static PassRefPtr<CSSPrimitiveValue> fontWeightFromStyle(RenderStyle* style, CSSValuePool* cssValuePool) +static PassRefPtr<CSSPrimitiveValue> fontWeightFromStyle(RenderStyle* style) { switch (style->fontDescription().weight()) { case FontWeight100: - return cssValuePool->createIdentifierValue(CSSValue100); + return cssValuePool().createIdentifierValue(CSSValue100); case FontWeight200: - return cssValuePool->createIdentifierValue(CSSValue200); + return cssValuePool().createIdentifierValue(CSSValue200); case FontWeight300: - return cssValuePool->createIdentifierValue(CSSValue300); + return cssValuePool().createIdentifierValue(CSSValue300); case FontWeightNormal: - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); case FontWeight500: - return cssValuePool->createIdentifierValue(CSSValue500); + return cssValuePool().createIdentifierValue(CSSValue500); case FontWeight600: - return cssValuePool->createIdentifierValue(CSSValue600); + return cssValuePool().createIdentifierValue(CSSValue600); case FontWeightBold: - return cssValuePool->createIdentifierValue(CSSValueBold); + return cssValuePool().createIdentifierValue(CSSValueBold); case FontWeight800: - return cssValuePool->createIdentifierValue(CSSValue800); + return cssValuePool().createIdentifierValue(CSSValue800); case FontWeight900: - return cssValuePool->createIdentifierValue(CSSValue900); + return cssValuePool().createIdentifierValue(CSSValue900); } ASSERT_NOT_REACHED(); - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); } -PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID, EUpdateLayout updateLayout) const +PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropertyID propertyID, EUpdateLayout updateLayout) const { Node* node = m_node.get(); if (!node) @@ -1329,7 +1325,7 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper RenderObject* renderer = node->renderer(); RefPtr<RenderStyle> style; - if (renderer && hasCompositedLayer(renderer) && AnimationController::supportsAcceleratedAnimationOfProperty(static_cast<CSSPropertyID>(propertyID))) { + if (renderer && renderer->isComposited() && AnimationController::supportsAcceleratedAnimationOfProperty(propertyID)) { style = renderer->animation()->getAnimatedStyleForRenderer(renderer); if (m_pseudoElementSpecifier) { // FIXME: This cached pseudo style will only exist if the animation has been run at least once. @@ -1348,27 +1344,25 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper renderer = renderer->beforePseudoElementRenderer(); } - CSSValuePool* cssValuePool = node->document()->cssValuePool().get(); - propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style->direction(), style->writingMode()); - switch (static_cast<CSSPropertyID>(propertyID)) { + switch (propertyID) { case CSSPropertyInvalid: break; case CSSPropertyBackgroundColor: - return cssValuePool->createColorValue(m_allowVisitedStyle? style->visitedDependentColor(CSSPropertyBackgroundColor).rgb() : style->backgroundColor().rgb()); + return cssValuePool().createColorValue(m_allowVisitedStyle? style->visitedDependentColor(CSSPropertyBackgroundColor).rgb() : style->backgroundColor().rgb()); case CSSPropertyBackgroundImage: case CSSPropertyWebkitMaskImage: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskImage ? style->maskLayers() : style->backgroundLayers(); if (!layers) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); if (!layers->next()) { if (layers->image()) return layers->image()->cssValue(); - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); } RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); @@ -1376,7 +1370,7 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper if (currLayer->image()) list->append(currLayer->image()->cssValue()); else - list->append(cssValuePool->createIdentifierValue(CSSValueNone)); + list->append(cssValuePool().createIdentifierValue(CSSValueNone)); } return list.release(); } @@ -1385,11 +1379,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskSize: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskSize ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return fillSizeToCSSValue(layers->size(), style.get(), cssValuePool); + return fillSizeToCSSValue(layers->size(), style.get()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(fillSizeToCSSValue(currLayer->size(), style.get(), cssValuePool)); + list->append(fillSizeToCSSValue(currLayer->size(), style.get())); return list.release(); } @@ -1397,11 +1391,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskRepeat: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskRepeat ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return fillRepeatToCSSValue(layers->repeatX(), layers->repeatY(), cssValuePool); + return fillRepeatToCSSValue(layers->repeatX(), layers->repeatY()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(fillRepeatToCSSValue(currLayer->repeatX(), currLayer->repeatY(), cssValuePool)); + list->append(fillRepeatToCSSValue(currLayer->repeatX(), currLayer->repeatY())); return list.release(); } @@ -1409,11 +1403,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskComposite: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskComposite ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return cssValuePool->createValue(layers->composite()); + return cssValuePool().createValue(layers->composite()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(cssValuePool->createValue(currLayer->composite())); + list->append(cssValuePool().createValue(currLayer->composite())); return list.release(); } @@ -1421,11 +1415,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskAttachment: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskAttachment ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return cssValuePool->createValue(layers->attachment()); + return cssValuePool().createValue(layers->attachment()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(cssValuePool->createValue(currLayer->attachment())); + list->append(cssValuePool().createValue(currLayer->attachment())); return list.release(); } @@ -1439,13 +1433,13 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == CSSPropertyWebkitBackgroundClip || propertyID == CSSPropertyWebkitMaskClip; if (!layers->next()) { EFillBox box = isClip ? layers->clip() : layers->origin(); - return cssValuePool->createValue(box); + return cssValuePool().createValue(box); } RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) { EFillBox box = isClip ? currLayer->clip() : currLayer->origin(); - list->append(cssValuePool->createValue(box)); + list->append(cssValuePool().createValue(box)); } return list.release(); @@ -1455,16 +1449,16 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper const FillLayer* layers = propertyID == CSSPropertyWebkitMaskPosition ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(zoomAdjustedPixelValueForLength(layers->xPosition(), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValueForLength(layers->yPosition(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValueForLength(layers->xPosition(), style.get())); + list->append(zoomAdjustedPixelValueForLength(layers->yPosition(), style.get())); return list.release(); } RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) { RefPtr<CSSValueList> positionList = CSSValueList::createSpaceSeparated(); - positionList->append(zoomAdjustedPixelValueForLength(currLayer->xPosition(), style.get(), cssValuePool)); - positionList->append(zoomAdjustedPixelValueForLength(currLayer->yPosition(), style.get(), cssValuePool)); + positionList->append(zoomAdjustedPixelValueForLength(currLayer->xPosition(), style.get())); + positionList->append(zoomAdjustedPixelValueForLength(currLayer->yPosition(), style.get())); list->append(positionList); } @@ -1474,11 +1468,11 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskPositionX: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskPositionX ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return cssValuePool->createValue(layers->xPosition()); + return cssValuePool().createValue(layers->xPosition()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(cssValuePool->createValue(currLayer->xPosition())); + list->append(cssValuePool().createValue(currLayer->xPosition())); return list.release(); } @@ -1486,123 +1480,123 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitMaskPositionY: { const FillLayer* layers = propertyID == CSSPropertyWebkitMaskPositionY ? style->maskLayers() : style->backgroundLayers(); if (!layers->next()) - return cssValuePool->createValue(layers->yPosition()); + return cssValuePool().createValue(layers->yPosition()); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) - list->append(cssValuePool->createValue(currLayer->yPosition())); + list->append(cssValuePool().createValue(currLayer->yPosition())); return list.release(); } case CSSPropertyBorderCollapse: if (style->borderCollapse()) - return cssValuePool->createIdentifierValue(CSSValueCollapse); - return cssValuePool->createIdentifierValue(CSSValueSeparate); + return cssValuePool().createIdentifierValue(CSSValueCollapse); + return cssValuePool().createIdentifierValue(CSSValueSeparate); case CSSPropertyBorderSpacing: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(zoomAdjustedPixelValue(style->horizontalBorderSpacing(), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValue(style->verticalBorderSpacing(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValue(style->horizontalBorderSpacing(), style.get())); + list->append(zoomAdjustedPixelValue(style->verticalBorderSpacing(), style.get())); return list.release(); } case CSSPropertyWebkitBorderHorizontalSpacing: - return zoomAdjustedPixelValue(style->horizontalBorderSpacing(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->horizontalBorderSpacing(), style.get()); case CSSPropertyWebkitBorderVerticalSpacing: - return zoomAdjustedPixelValue(style->verticalBorderSpacing(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->verticalBorderSpacing(), style.get()); case CSSPropertyBorderImageSource: if (style->borderImageSource()) return style->borderImageSource()->cssValue(); - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); case CSSPropertyBorderTopColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyBorderTopColor).rgb()) : currentColorOrValidColor(style.get(), style->borderTopColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyBorderTopColor).rgb()) : currentColorOrValidColor(style.get(), style->borderTopColor()); case CSSPropertyBorderRightColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyBorderRightColor).rgb()) : currentColorOrValidColor(style.get(), style->borderRightColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyBorderRightColor).rgb()) : currentColorOrValidColor(style.get(), style->borderRightColor()); case CSSPropertyBorderBottomColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyBorderBottomColor).rgb()) : currentColorOrValidColor(style.get(), style->borderBottomColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyBorderBottomColor).rgb()) : currentColorOrValidColor(style.get(), style->borderBottomColor()); case CSSPropertyBorderLeftColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyBorderLeftColor).rgb()) : currentColorOrValidColor(style.get(), style->borderLeftColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyBorderLeftColor).rgb()) : currentColorOrValidColor(style.get(), style->borderLeftColor()); case CSSPropertyBorderTopStyle: - return cssValuePool->createValue(style->borderTopStyle()); + return cssValuePool().createValue(style->borderTopStyle()); case CSSPropertyBorderRightStyle: - return cssValuePool->createValue(style->borderRightStyle()); + return cssValuePool().createValue(style->borderRightStyle()); case CSSPropertyBorderBottomStyle: - return cssValuePool->createValue(style->borderBottomStyle()); + return cssValuePool().createValue(style->borderBottomStyle()); case CSSPropertyBorderLeftStyle: - return cssValuePool->createValue(style->borderLeftStyle()); + return cssValuePool().createValue(style->borderLeftStyle()); case CSSPropertyBorderTopWidth: - return zoomAdjustedPixelValue(style->borderTopWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->borderTopWidth(), style.get()); case CSSPropertyBorderRightWidth: - return zoomAdjustedPixelValue(style->borderRightWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->borderRightWidth(), style.get()); case CSSPropertyBorderBottomWidth: - return zoomAdjustedPixelValue(style->borderBottomWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->borderBottomWidth(), style.get()); case CSSPropertyBorderLeftWidth: - return zoomAdjustedPixelValue(style->borderLeftWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->borderLeftWidth(), style.get()); case CSSPropertyBottom: - return getPositionOffsetValue(style.get(), CSSPropertyBottom, cssValuePool); + return getPositionOffsetValue(style.get(), CSSPropertyBottom, m_node->document()->renderView()); case CSSPropertyWebkitBoxAlign: - return cssValuePool->createValue(style->boxAlign()); + return cssValuePool().createValue(style->boxAlign()); case CSSPropertyWebkitBoxDirection: - return cssValuePool->createValue(style->boxDirection()); + return cssValuePool().createValue(style->boxDirection()); case CSSPropertyWebkitBoxFlex: - return cssValuePool->createValue(style->boxFlex(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->boxFlex(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitBoxFlexGroup: - return cssValuePool->createValue(style->boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitBoxLines: - return cssValuePool->createValue(style->boxLines()); + return cssValuePool().createValue(style->boxLines()); case CSSPropertyWebkitBoxOrdinalGroup: - return cssValuePool->createValue(style->boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitBoxOrient: - return cssValuePool->createValue(style->boxOrient()); + return cssValuePool().createValue(style->boxOrient()); case CSSPropertyWebkitBoxPack: - return cssValuePool->createValue(style->boxPack()); + return cssValuePool().createValue(style->boxPack()); case CSSPropertyWebkitBoxReflect: - return valueForReflection(style->boxReflect(), style.get(), cssValuePool); + return valueForReflection(style->boxReflect(), style.get()); case CSSPropertyBoxShadow: case CSSPropertyWebkitBoxShadow: return valueForShadow(style->boxShadow(), propertyID, style.get()); case CSSPropertyCaptionSide: - return cssValuePool->createValue(style->captionSide()); + return cssValuePool().createValue(style->captionSide()); case CSSPropertyClear: - return cssValuePool->createValue(style->clear()); + return cssValuePool().createValue(style->clear()); case CSSPropertyColor: - return cssValuePool->createColorValue(m_allowVisitedStyle ? style->visitedDependentColor(CSSPropertyColor).rgb() : style->color().rgb()); + return cssValuePool().createColorValue(m_allowVisitedStyle ? style->visitedDependentColor(CSSPropertyColor).rgb() : style->color().rgb()); case CSSPropertyWebkitPrintColorAdjust: - return cssValuePool->createValue(style->printColorAdjust()); + return cssValuePool().createValue(style->printColorAdjust()); case CSSPropertyWebkitColumnAxis: - return cssValuePool->createValue(style->columnAxis()); + return cssValuePool().createValue(style->columnAxis()); case CSSPropertyWebkitColumnCount: if (style->hasAutoColumnCount()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->columnCount(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->columnCount(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitColumnGap: if (style->hasNormalColumnGap()) - return cssValuePool->createIdentifierValue(CSSValueNormal); - return zoomAdjustedPixelValue(style->columnGap(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueNormal); + return zoomAdjustedPixelValue(style->columnGap(), style.get()); case CSSPropertyWebkitColumnRuleColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style.get(), style->columnRuleColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style.get(), style->columnRuleColor()); case CSSPropertyWebkitColumnRuleStyle: - return cssValuePool->createValue(style->columnRuleStyle()); + return cssValuePool().createValue(style->columnRuleStyle()); case CSSPropertyWebkitColumnRuleWidth: - return zoomAdjustedPixelValue(style->columnRuleWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->columnRuleWidth(), style.get()); case CSSPropertyWebkitColumnSpan: if (style->columnSpan()) - return cssValuePool->createIdentifierValue(CSSValueAll); - return cssValuePool->createValue(1, CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createIdentifierValue(CSSValueAll); + return cssValuePool().createValue(1, CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitColumnBreakAfter: - return cssValuePool->createValue(style->columnBreakAfter()); + return cssValuePool().createValue(style->columnBreakAfter()); case CSSPropertyWebkitColumnBreakBefore: - return cssValuePool->createValue(style->columnBreakBefore()); + return cssValuePool().createValue(style->columnBreakBefore()); case CSSPropertyWebkitColumnBreakInside: - return cssValuePool->createValue(style->columnBreakInside()); + return cssValuePool().createValue(style->columnBreakInside()); case CSSPropertyWebkitColumnWidth: if (style->hasAutoColumnWidth()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return zoomAdjustedPixelValue(style->columnWidth(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return zoomAdjustedPixelValue(style->columnWidth(), style.get()); case CSSPropertyWebkitRegionBreakAfter: - return cssValuePool->createValue(style->regionBreakAfter()); + return cssValuePool().createValue(style->regionBreakAfter()); case CSSPropertyWebkitRegionBreakBefore: - return cssValuePool->createValue(style->regionBreakBefore()); + return cssValuePool().createValue(style->regionBreakBefore()); case CSSPropertyWebkitRegionBreakInside: - return cssValuePool->createValue(style->regionBreakInside()); + return cssValuePool().createValue(style->regionBreakInside()); case CSSPropertyCursor: { RefPtr<CSSValueList> list; CursorList* cursors = style->cursors(); @@ -1612,7 +1606,7 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper if (StyleImage* image = cursors->at(i).image()) list->append(image->cssValue()); } - RefPtr<CSSValue> value = cssValuePool->createValue(style->cursor()); + RefPtr<CSSValue> value = cssValuePool().createValue(style->cursor()); if (list) { list->append(value); return list.release(); @@ -1620,45 +1614,65 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper return value.release(); } case CSSPropertyDirection: - return cssValuePool->createValue(style->direction()); + return cssValuePool().createValue(style->direction()); case CSSPropertyDisplay: - return cssValuePool->createValue(style->display()); + return cssValuePool().createValue(style->display()); case CSSPropertyEmptyCells: - return cssValuePool->createValue(style->emptyCells()); + return cssValuePool().createValue(style->emptyCells()); + case CSSPropertyWebkitFlex: { + RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); + list->append(cssValuePool().createValue(style->positiveFlex())); + list->append(cssValuePool().createValue(style->negativeFlex())); + + Length preferredSize = style->flexPreferredSize(); + if (preferredSize.isAuto()) + list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); + else if (preferredSize.isPercent()) + list->append(cssValuePool().createValue(preferredSize.value(), CSSPrimitiveValue::CSS_PERCENTAGE)); + else + list->append(cssValuePool().createValue(preferredSize.value(), CSSPrimitiveValue::CSS_PX)); + + return list.release(); + } case CSSPropertyWebkitFlexOrder: - return cssValuePool->createValue(style->flexOrder(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->flexOrder(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitFlexPack: - return cssValuePool->createValue(style->flexPack()); + return cssValuePool().createValue(style->flexPack()); case CSSPropertyWebkitFlexAlign: - return cssValuePool->createValue(style->flexAlign()); + return cssValuePool().createValue(style->flexAlign()); case CSSPropertyWebkitFlexItemAlign: - if (style->flexItemAlign() == AlignAuto && m_node && m_node->parentNode() && m_node->parentNode()->computedStyle()) - return cssValuePool->createValue(m_node->parentNode()->computedStyle()->flexAlign()); - return cssValuePool->createValue(style->flexItemAlign()); + if (style->flexItemAlign() == AlignAuto) { + if (m_node && m_node->parentNode() && m_node->parentNode()->computedStyle()) + return cssValuePool().createValue(m_node->parentNode()->computedStyle()->flexAlign()); + return cssValuePool().createValue(AlignStretch); + } + return cssValuePool().createValue(style->flexItemAlign()); case CSSPropertyWebkitFlexDirection: - return cssValuePool->createValue(style->flexDirection()); + return cssValuePool().createValue(style->flexDirection()); case CSSPropertyWebkitFlexWrap: - return cssValuePool->createValue(style->flexWrap()); + return cssValuePool().createValue(style->flexWrap()); + case CSSPropertyWebkitFlexLinePack: + return cssValuePool().createValue(style->flexLinePack()); case CSSPropertyWebkitFlexFlow: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(cssValuePool->createValue(style->flexDirection())); - list->append(cssValuePool->createValue(style->flexWrap())); + list->append(cssValuePool().createValue(style->flexDirection())); + list->append(cssValuePool().createValue(style->flexWrap())); return list.release(); } case CSSPropertyFloat: - return cssValuePool->createValue(style->floating()); + return cssValuePool().createValue(style->floating()); case CSSPropertyFont: { RefPtr<FontValue> computedFont = FontValue::create(); - computedFont->style = fontStyleFromStyle(style.get(), cssValuePool); - computedFont->variant = fontVariantFromStyle(style.get(), cssValuePool); - computedFont->weight = fontWeightFromStyle(style.get(), cssValuePool); - computedFont->size = fontSizeFromStyle(style.get(), cssValuePool); - computedFont->lineHeight = lineHeightFromStyle(style.get(), cssValuePool); - computedFont->family = fontFamilyFromStyle(style.get(), cssValuePool); + computedFont->style = fontStyleFromStyle(style.get()); + computedFont->variant = fontVariantFromStyle(style.get()); + computedFont->weight = fontWeightFromStyle(style.get()); + computedFont->size = fontSizeFromStyle(style.get()); + computedFont->lineHeight = lineHeightFromStyle(style.get(), m_node->document()->renderView()); + computedFont->family = fontFamilyFromStyle(style.get()); return computedFont.release(); } case CSSPropertyFontFamily: { - RefPtr<CSSValueList> fontFamilyList = fontFamilyFromStyle(style.get(), cssValuePool); + RefPtr<CSSValueList> fontFamilyList = fontFamilyFromStyle(style.get()); // If there's only a single family, return that as a CSSPrimitiveValue. // NOTE: Gecko always returns this as a comma-separated CSSPrimitiveValue string. if (fontFamilyList->length() == 1) @@ -1666,17 +1680,17 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper return fontFamilyList.release(); } case CSSPropertyFontSize: - return fontSizeFromStyle(style.get(), cssValuePool); + return fontSizeFromStyle(style.get()); case CSSPropertyFontStyle: - return fontStyleFromStyle(style.get(), cssValuePool); + return fontStyleFromStyle(style.get()); case CSSPropertyFontVariant: - return fontVariantFromStyle(style.get(), cssValuePool); + return fontVariantFromStyle(style.get()); case CSSPropertyFontWeight: - return fontWeightFromStyle(style.get(), cssValuePool); + return fontWeightFromStyle(style.get()); case CSSPropertyWebkitFontFeatureSettings: { const FontFeatureSettings* featureSettings = style->fontDescription().featureSettings(); if (!featureSettings || !featureSettings->size()) - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); for (unsigned i = 0; i < featureSettings->size(); ++i) { const FontFeature& feature = featureSettings->at(i); @@ -1687,36 +1701,36 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper } #if ENABLE(CSS_GRID_LAYOUT) case CSSPropertyWebkitGridColumns: { - return valueForGridTrackList(style->gridColumns(), style.get(), cssValuePool); + return valueForGridTrackList(style->gridColumns(), style.get()); } case CSSPropertyWebkitGridRows: { - return valueForGridTrackList(style->gridRows(), style.get(), cssValuePool); + return valueForGridTrackList(style->gridRows(), style.get()); } case CSSPropertyWebkitGridColumn: - return valueForGridPosition(style->gridItemColumn(), cssValuePool); + return valueForGridPosition(style->gridItemColumn()); case CSSPropertyWebkitGridRow: - return valueForGridPosition(style->gridItemRow(), cssValuePool); + return valueForGridPosition(style->gridItemRow()); #endif case CSSPropertyHeight: if (renderer) { // According to http://www.w3.org/TR/CSS2/visudet.html#the-height-property, // the "height" property does not apply for non-replaced inline elements. if (!renderer->isReplaced() && renderer->isInline()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return zoomAdjustedPixelValue(sizingBox(renderer).height(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return zoomAdjustedPixelValue(sizingBox(renderer).height(), style.get()); } - return zoomAdjustedPixelValueForLength(style->height(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(style->height(), style.get()); case CSSPropertyWebkitHighlight: if (style->highlight() == nullAtom) - return cssValuePool->createIdentifierValue(CSSValueNone); - return cssValuePool->createValue(style->highlight(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueNone); + return cssValuePool().createValue(style->highlight(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyWebkitHyphens: - return cssValuePool->createValue(style->hyphens()); + return cssValuePool().createValue(style->hyphens()); case CSSPropertyWebkitHyphenateCharacter: if (style->hyphenationString().isNull()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->hyphenationString(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->hyphenationString(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyWebkitHyphenateLimitAfter: if (style->hyphenationLimitAfter() < 0) return CSSPrimitiveValue::createIdentifier(CSSValueAuto); @@ -1731,165 +1745,165 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper return CSSPrimitiveValue::create(style->hyphenationLimitLines(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitBorderFit: if (style->borderFit() == BorderFitBorder) - return cssValuePool->createIdentifierValue(CSSValueBorder); - return cssValuePool->createIdentifierValue(CSSValueLines); + return cssValuePool().createIdentifierValue(CSSValueBorder); + return cssValuePool().createIdentifierValue(CSSValueLines); case CSSPropertyImageRendering: return CSSPrimitiveValue::create(style->imageRendering()); case CSSPropertyLeft: - return getPositionOffsetValue(style.get(), CSSPropertyLeft, cssValuePool); + return getPositionOffsetValue(style.get(), CSSPropertyLeft, m_node->document()->renderView()); case CSSPropertyLetterSpacing: if (!style->letterSpacing()) - return cssValuePool->createIdentifierValue(CSSValueNormal); - return zoomAdjustedPixelValue(style->letterSpacing(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueNormal); + return zoomAdjustedPixelValue(style->letterSpacing(), style.get()); case CSSPropertyWebkitLineClamp: if (style->lineClamp().isNone()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return cssValuePool->createValue(style->lineClamp().value(), style->lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createIdentifierValue(CSSValueNone); + return cssValuePool().createValue(style->lineClamp().value(), style->lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyLineHeight: - return lineHeightFromStyle(style.get(), cssValuePool); + return lineHeightFromStyle(style.get(), m_node->document()->renderView()); case CSSPropertyListStyleImage: if (style->listStyleImage()) return style->listStyleImage()->cssValue(); - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); case CSSPropertyListStylePosition: - return cssValuePool->createValue(style->listStylePosition()); + return cssValuePool().createValue(style->listStylePosition()); case CSSPropertyListStyleType: - return cssValuePool->createValue(style->listStyleType()); + return cssValuePool().createValue(style->listStyleType()); case CSSPropertyWebkitLocale: if (style->locale().isNull()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->locale(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->locale(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyMarginTop: { Length marginTop = style->marginTop(); if (marginTop.isFixed() || !renderer || !renderer->isBox()) - return zoomAdjustedPixelValueForLength(marginTop, style.get(), cssValuePool); - return zoomAdjustedPixelValue(toRenderBox(renderer)->marginTop(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(marginTop, style.get()); + return zoomAdjustedPixelValue(toRenderBox(renderer)->marginTop(), style.get()); } case CSSPropertyMarginRight: { Length marginRight = style->marginRight(); if (marginRight.isFixed() || !renderer || !renderer->isBox()) - return zoomAdjustedPixelValueForLength(marginRight, style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(marginRight, style.get()); int value; - if (marginRight.isPercent()) + if (marginRight.isPercent() || marginRight.isViewportPercentage()) // RenderBox gives a marginRight() that is the distance between the right-edge of the child box // and the right-edge of the containing box, when display == BLOCK. Let's calculate the absolute // value of the specified margin-right % instead of relying on RenderBox's marginRight() value. - value = marginRight.calcMinValue(toRenderBox(renderer)->containingBlockLogicalWidthForContent()); + value = minimumValueForLength(marginRight, toRenderBox(renderer)->containingBlockLogicalWidthForContent(), m_node->document()->renderView()); else value = toRenderBox(renderer)->marginRight(); - return zoomAdjustedPixelValue(value, style.get(), cssValuePool); + return zoomAdjustedPixelValue(value, style.get()); } case CSSPropertyMarginBottom: { Length marginBottom = style->marginBottom(); if (marginBottom.isFixed() || !renderer || !renderer->isBox()) - return zoomAdjustedPixelValueForLength(marginBottom, style.get(), cssValuePool); - return zoomAdjustedPixelValue(toRenderBox(renderer)->marginBottom(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(marginBottom, style.get()); + return zoomAdjustedPixelValue(toRenderBox(renderer)->marginBottom(), style.get()); } case CSSPropertyMarginLeft: { Length marginLeft = style->marginLeft(); if (marginLeft.isFixed() || !renderer || !renderer->isBox()) - return zoomAdjustedPixelValueForLength(marginLeft, style.get(), cssValuePool); - return zoomAdjustedPixelValue(toRenderBox(renderer)->marginLeft(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(marginLeft, style.get()); + return zoomAdjustedPixelValue(toRenderBox(renderer)->marginLeft(), style.get()); } case CSSPropertyWebkitMarqueeDirection: - return cssValuePool->createValue(style->marqueeDirection()); + return cssValuePool().createValue(style->marqueeDirection()); case CSSPropertyWebkitMarqueeIncrement: - return cssValuePool->createValue(style->marqueeIncrement()); + return cssValuePool().createValue(style->marqueeIncrement()); case CSSPropertyWebkitMarqueeRepetition: if (style->marqueeLoopCount() < 0) - return cssValuePool->createIdentifierValue(CSSValueInfinite); - return cssValuePool->createValue(style->marqueeLoopCount(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createIdentifierValue(CSSValueInfinite); + return cssValuePool().createValue(style->marqueeLoopCount(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWebkitMarqueeStyle: - return cssValuePool->createValue(style->marqueeBehavior()); + return cssValuePool().createValue(style->marqueeBehavior()); case CSSPropertyWebkitUserModify: - return cssValuePool->createValue(style->userModify()); + return cssValuePool().createValue(style->userModify()); case CSSPropertyMaxHeight: { const Length& maxHeight = style->maxHeight(); if (maxHeight.isUndefined()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return zoomAdjustedPixelValueForLength(maxHeight, style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueNone); + return zoomAdjustedPixelValueForLength(maxHeight, style.get()); } case CSSPropertyMaxWidth: { const Length& maxWidth = style->maxWidth(); if (maxWidth.isUndefined()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return zoomAdjustedPixelValueForLength(maxWidth, style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueNone); + return zoomAdjustedPixelValueForLength(maxWidth, style.get()); } case CSSPropertyMinHeight: - return zoomAdjustedPixelValueForLength(style->minHeight(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(style->minHeight(), style.get()); case CSSPropertyMinWidth: - return zoomAdjustedPixelValueForLength(style->minWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(style->minWidth(), style.get()); case CSSPropertyOpacity: - return cssValuePool->createValue(style->opacity(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->opacity(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyOrphans: - return cssValuePool->createValue(style->orphans(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->orphans(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyOutlineColor: - return m_allowVisitedStyle ? cssValuePool->createColorValue(style->visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style.get(), style->outlineColor()); + return m_allowVisitedStyle ? cssValuePool().createColorValue(style->visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style.get(), style->outlineColor()); case CSSPropertyOutlineOffset: - return zoomAdjustedPixelValue(style->outlineOffset(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->outlineOffset(), style.get()); case CSSPropertyOutlineStyle: if (style->outlineStyleIsAuto()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->outlineStyle()); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->outlineStyle()); case CSSPropertyOutlineWidth: - return zoomAdjustedPixelValue(style->outlineWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->outlineWidth(), style.get()); case CSSPropertyOverflow: - return cssValuePool->createValue(max(style->overflowX(), style->overflowY())); + return cssValuePool().createValue(max(style->overflowX(), style->overflowY())); case CSSPropertyOverflowX: - return cssValuePool->createValue(style->overflowX()); + return cssValuePool().createValue(style->overflowX()); case CSSPropertyOverflowY: - return cssValuePool->createValue(style->overflowY()); + return cssValuePool().createValue(style->overflowY()); case CSSPropertyPaddingTop: if (renderer && renderer->isBox()) - return zoomAdjustedPixelValue(toRenderBox(renderer)->paddingTop(ExcludeIntrinsicPadding), style.get(), cssValuePool); - return zoomAdjustedPixelValueForLength(style->paddingTop(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingTop(), style.get()); + return zoomAdjustedPixelValueForLength(style->paddingTop(), style.get()); case CSSPropertyPaddingRight: if (renderer && renderer->isBox()) - return zoomAdjustedPixelValue(toRenderBox(renderer)->paddingRight(ExcludeIntrinsicPadding), style.get(), cssValuePool); - return zoomAdjustedPixelValueForLength(style->paddingRight(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingRight(), style.get()); + return zoomAdjustedPixelValueForLength(style->paddingRight(), style.get()); case CSSPropertyPaddingBottom: if (renderer && renderer->isBox()) - return zoomAdjustedPixelValue(toRenderBox(renderer)->paddingBottom(ExcludeIntrinsicPadding), style.get(), cssValuePool); - return zoomAdjustedPixelValueForLength(style->paddingBottom(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingBottom(), style.get()); + return zoomAdjustedPixelValueForLength(style->paddingBottom(), style.get()); case CSSPropertyPaddingLeft: if (renderer && renderer->isBox()) - return zoomAdjustedPixelValue(toRenderBox(renderer)->paddingLeft(ExcludeIntrinsicPadding), style.get(), cssValuePool); - return zoomAdjustedPixelValueForLength(style->paddingLeft(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(toRenderBox(renderer)->computedCSSPaddingLeft(), style.get()); + return zoomAdjustedPixelValueForLength(style->paddingLeft(), style.get()); case CSSPropertyPageBreakAfter: - return cssValuePool->createValue(style->pageBreakAfter()); + return cssValuePool().createValue(style->pageBreakAfter()); case CSSPropertyPageBreakBefore: - return cssValuePool->createValue(style->pageBreakBefore()); + return cssValuePool().createValue(style->pageBreakBefore()); case CSSPropertyPageBreakInside: { EPageBreak pageBreak = style->pageBreakInside(); ASSERT(pageBreak != PBALWAYS); if (pageBreak == PBALWAYS) return 0; - return cssValuePool->createValue(style->pageBreakInside()); + return cssValuePool().createValue(style->pageBreakInside()); } case CSSPropertyPosition: - return cssValuePool->createValue(style->position()); + return cssValuePool().createValue(style->position()); case CSSPropertyRight: - return getPositionOffsetValue(style.get(), CSSPropertyRight, cssValuePool); + return getPositionOffsetValue(style.get(), CSSPropertyRight, m_node->document()->renderView()); case CSSPropertyTableLayout: - return cssValuePool->createValue(style->tableLayout()); + return cssValuePool().createValue(style->tableLayout()); case CSSPropertyTextAlign: - return cssValuePool->createValue(style->textAlign()); + return cssValuePool().createValue(style->textAlign()); case CSSPropertyTextDecoration: - return renderTextDecorationFlagsToCSSValue(style->textDecoration(), cssValuePool); + return renderTextDecorationFlagsToCSSValue(style->textDecoration()); case CSSPropertyWebkitTextDecorationsInEffect: - return renderTextDecorationFlagsToCSSValue(style->textDecorationsInEffect(), cssValuePool); + return renderTextDecorationFlagsToCSSValue(style->textDecorationsInEffect()); case CSSPropertyWebkitTextFillColor: return currentColorOrValidColor(style.get(), style->textFillColor()); case CSSPropertyWebkitTextEmphasisColor: return currentColorOrValidColor(style.get(), style->textEmphasisColor()); case CSSPropertyWebkitTextEmphasisPosition: - return cssValuePool->createValue(style->textEmphasisPosition()); + return cssValuePool().createValue(style->textEmphasisPosition()); case CSSPropertyWebkitTextEmphasisStyle: switch (style->textEmphasisMark()) { case TextEmphasisMarkNone: - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); case TextEmphasisMarkCustom: - return cssValuePool->createValue(style->textEmphasisCustomMark(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createValue(style->textEmphasisCustomMark(), CSSPrimitiveValue::CSS_STRING); case TextEmphasisMarkAuto: ASSERT_NOT_REACHED(); // Fall through @@ -1899,129 +1913,129 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case TextEmphasisMarkTriangle: case TextEmphasisMarkSesame: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - list->append(cssValuePool->createValue(style->textEmphasisFill())); - list->append(cssValuePool->createValue(style->textEmphasisMark())); + list->append(cssValuePool().createValue(style->textEmphasisFill())); + list->append(cssValuePool().createValue(style->textEmphasisMark())); return list.release(); } } case CSSPropertyTextIndent: - return zoomAdjustedPixelValueForLength(style->textIndent(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(style->textIndent(), style.get()); case CSSPropertyTextShadow: return valueForShadow(style->textShadow(), propertyID, style.get()); case CSSPropertyTextRendering: - return cssValuePool->createValue(style->fontDescription().textRenderingMode()); + return cssValuePool().createValue(style->fontDescription().textRenderingMode()); case CSSPropertyTextOverflow: if (style->textOverflow()) - return cssValuePool->createIdentifierValue(CSSValueEllipsis); - return cssValuePool->createIdentifierValue(CSSValueClip); + return cssValuePool().createIdentifierValue(CSSValueEllipsis); + return cssValuePool().createIdentifierValue(CSSValueClip); case CSSPropertyWebkitTextSecurity: - return cssValuePool->createValue(style->textSecurity()); + return cssValuePool().createValue(style->textSecurity()); case CSSPropertyWebkitTextSizeAdjust: if (style->textSizeAdjust()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createIdentifierValue(CSSValueNone); case CSSPropertyWebkitTextStrokeColor: return currentColorOrValidColor(style.get(), style->textStrokeColor()); case CSSPropertyWebkitTextStrokeWidth: - return zoomAdjustedPixelValue(style->textStrokeWidth(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->textStrokeWidth(), style.get()); case CSSPropertyTextTransform: - return cssValuePool->createValue(style->textTransform()); + return cssValuePool().createValue(style->textTransform()); case CSSPropertyTop: - return getPositionOffsetValue(style.get(), CSSPropertyTop, cssValuePool); + return getPositionOffsetValue(style.get(), CSSPropertyTop, m_node->document()->renderView()); case CSSPropertyUnicodeBidi: - return renderUnicodeBidiFlagsToCSSValue(style->unicodeBidi(), cssValuePool); + return renderUnicodeBidiFlagsToCSSValue(style->unicodeBidi()); case CSSPropertyVerticalAlign: switch (style->verticalAlign()) { case BASELINE: - return cssValuePool->createIdentifierValue(CSSValueBaseline); + return cssValuePool().createIdentifierValue(CSSValueBaseline); case MIDDLE: - return cssValuePool->createIdentifierValue(CSSValueMiddle); + return cssValuePool().createIdentifierValue(CSSValueMiddle); case SUB: - return cssValuePool->createIdentifierValue(CSSValueSub); + return cssValuePool().createIdentifierValue(CSSValueSub); case SUPER: - return cssValuePool->createIdentifierValue(CSSValueSuper); + return cssValuePool().createIdentifierValue(CSSValueSuper); case TEXT_TOP: - return cssValuePool->createIdentifierValue(CSSValueTextTop); + return cssValuePool().createIdentifierValue(CSSValueTextTop); case TEXT_BOTTOM: - return cssValuePool->createIdentifierValue(CSSValueTextBottom); + return cssValuePool().createIdentifierValue(CSSValueTextBottom); case TOP: - return cssValuePool->createIdentifierValue(CSSValueTop); + return cssValuePool().createIdentifierValue(CSSValueTop); case BOTTOM: - return cssValuePool->createIdentifierValue(CSSValueBottom); + return cssValuePool().createIdentifierValue(CSSValueBottom); case BASELINE_MIDDLE: - return cssValuePool->createIdentifierValue(CSSValueWebkitBaselineMiddle); + return cssValuePool().createIdentifierValue(CSSValueWebkitBaselineMiddle); case LENGTH: - return cssValuePool->createValue(style->verticalAlignLength()); + return cssValuePool().createValue(style->verticalAlignLength()); } ASSERT_NOT_REACHED(); return 0; case CSSPropertyVisibility: - return cssValuePool->createValue(style->visibility()); + return cssValuePool().createValue(style->visibility()); case CSSPropertyWhiteSpace: - return cssValuePool->createValue(style->whiteSpace()); + return cssValuePool().createValue(style->whiteSpace()); case CSSPropertyWidows: - return cssValuePool->createValue(style->widows(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->widows(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyWidth: if (renderer) { // According to http://www.w3.org/TR/CSS2/visudet.html#the-width-property, // the "width" property does not apply for non-replaced inline elements. if (!renderer->isReplaced() && renderer->isInline()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return zoomAdjustedPixelValue(sizingBox(renderer).width(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return zoomAdjustedPixelValue(sizingBox(renderer).width(), style.get()); } - return zoomAdjustedPixelValueForLength(style->width(), style.get(), cssValuePool); + return zoomAdjustedPixelValueForLength(style->width(), style.get()); case CSSPropertyWordBreak: - return cssValuePool->createValue(style->wordBreak()); + return cssValuePool().createValue(style->wordBreak()); case CSSPropertyWordSpacing: - return zoomAdjustedPixelValue(style->wordSpacing(), style.get(), cssValuePool); + return zoomAdjustedPixelValue(style->wordSpacing(), style.get()); case CSSPropertyWordWrap: - return cssValuePool->createValue(style->wordWrap()); + return cssValuePool().createValue(style->wordWrap()); case CSSPropertyWebkitLineBreak: - return cssValuePool->createValue(style->khtmlLineBreak()); + return cssValuePool().createValue(style->khtmlLineBreak()); case CSSPropertyWebkitNbspMode: - return cssValuePool->createValue(style->nbspMode()); + return cssValuePool().createValue(style->nbspMode()); case CSSPropertyWebkitMatchNearestMailBlockquoteColor: - return cssValuePool->createValue(style->matchNearestMailBlockquoteColor()); + return cssValuePool().createValue(style->matchNearestMailBlockquoteColor()); case CSSPropertyResize: - return cssValuePool->createValue(style->resize()); + return cssValuePool().createValue(style->resize()); case CSSPropertyWebkitFontKerning: - return cssValuePool->createValue(style->fontDescription().kerning()); + return cssValuePool().createValue(style->fontDescription().kerning()); case CSSPropertyWebkitFontSmoothing: - return cssValuePool->createValue(style->fontDescription().fontSmoothing()); + return cssValuePool().createValue(style->fontDescription().fontSmoothing()); case CSSPropertyWebkitFontVariantLigatures: { FontDescription::LigaturesState commonLigaturesState = style->fontDescription().commonLigaturesState(); FontDescription::LigaturesState discretionaryLigaturesState = style->fontDescription().discretionaryLigaturesState(); FontDescription::LigaturesState historicalLigaturesState = style->fontDescription().historicalLigaturesState(); if (commonLigaturesState == FontDescription::NormalLigaturesState && discretionaryLigaturesState == FontDescription::NormalLigaturesState && historicalLigaturesState == FontDescription::NormalLigaturesState) - return cssValuePool->createIdentifierValue(CSSValueNormal); + return cssValuePool().createIdentifierValue(CSSValueNormal); RefPtr<CSSValueList> valueList = CSSValueList::createSpaceSeparated(); if (commonLigaturesState != FontDescription::NormalLigaturesState) - valueList->append(cssValuePool->createIdentifierValue(commonLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoCommonLigatures : CSSValueCommonLigatures)); + valueList->append(cssValuePool().createIdentifierValue(commonLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoCommonLigatures : CSSValueCommonLigatures)); if (discretionaryLigaturesState != FontDescription::NormalLigaturesState) - valueList->append(cssValuePool->createIdentifierValue(discretionaryLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoDiscretionaryLigatures : CSSValueDiscretionaryLigatures)); + valueList->append(cssValuePool().createIdentifierValue(discretionaryLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoDiscretionaryLigatures : CSSValueDiscretionaryLigatures)); if (historicalLigaturesState != FontDescription::NormalLigaturesState) - valueList->append(cssValuePool->createIdentifierValue(historicalLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoHistoricalLigatures : CSSValueHistoricalLigatures)); + valueList->append(cssValuePool().createIdentifierValue(historicalLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoHistoricalLigatures : CSSValueHistoricalLigatures)); return valueList; } case CSSPropertyZIndex: if (style->hasAutoZIndex()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyZoom: - return cssValuePool->createValue(style->zoom(), CSSPrimitiveValue::CSS_NUMBER); + return cssValuePool().createValue(style->zoom(), CSSPrimitiveValue::CSS_NUMBER); case CSSPropertyBoxSizing: if (style->boxSizing() == CONTENT_BOX) - return cssValuePool->createIdentifierValue(CSSValueContentBox); - return cssValuePool->createIdentifierValue(CSSValueBorderBox); + return cssValuePool().createIdentifierValue(CSSValueContentBox); + return cssValuePool().createIdentifierValue(CSSValueBorderBox); #if ENABLE(DASHBOARD_SUPPORT) case CSSPropertyWebkitDashboardRegion: { const Vector<StyleDashboardRegion>& regions = style->dashboardRegions(); unsigned count = regions.size(); if (count == 1 && regions[0].type == StyleDashboardRegion::None) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); RefPtr<DashboardRegion> firstRegion; DashboardRegion* previousRegion = 0; @@ -2031,10 +2045,10 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper region->m_label = styleRegion.label; LengthBox offset = styleRegion.offset; - region->setTop(zoomAdjustedPixelValue(offset.top().value(), style.get(), cssValuePool)); - region->setRight(zoomAdjustedPixelValue(offset.right().value(), style.get(), cssValuePool)); - region->setBottom(zoomAdjustedPixelValue(offset.bottom().value(), style.get(), cssValuePool)); - region->setLeft(zoomAdjustedPixelValue(offset.left().value(), style.get(), cssValuePool)); + region->setTop(zoomAdjustedPixelValue(offset.top().value(), style.get())); + region->setRight(zoomAdjustedPixelValue(offset.right().value(), style.get())); + region->setBottom(zoomAdjustedPixelValue(offset.bottom().value(), style.get())); + region->setLeft(zoomAdjustedPixelValue(offset.left().value(), style.get())); region->m_isRectangle = (styleRegion.type == StyleDashboardRegion::Rectangle); region->m_isCircle = (styleRegion.type == StyleDashboardRegion::Circle); @@ -2044,27 +2058,27 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper firstRegion = region; previousRegion = region.get(); } - return cssValuePool->createValue(firstRegion.release()); + return cssValuePool().createValue(firstRegion.release()); } #endif case CSSPropertyWebkitAnimationDelay: - return getDelayValue(style->animations(), cssValuePool); + return getDelayValue(style->animations()); case CSSPropertyWebkitAnimationDirection: { RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); const AnimationList* t = style->animations(); if (t) { for (size_t i = 0; i < t->size(); ++i) { if (t->animation(i)->direction()) - list->append(cssValuePool->createIdentifierValue(CSSValueAlternate)); + list->append(cssValuePool().createIdentifierValue(CSSValueAlternate)); else - list->append(cssValuePool->createIdentifierValue(CSSValueNormal)); + list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); } } else - list->append(cssValuePool->createIdentifierValue(CSSValueNormal)); + list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); return list.release(); } case CSSPropertyWebkitAnimationDuration: - return getDurationValue(style->animations(), cssValuePool); + return getDurationValue(style->animations()); case CSSPropertyWebkitAnimationFillMode: { RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); const AnimationList* t = style->animations(); @@ -2072,21 +2086,21 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper for (size_t i = 0; i < t->size(); ++i) { switch (t->animation(i)->fillMode()) { case AnimationFillModeNone: - list->append(cssValuePool->createIdentifierValue(CSSValueNone)); + list->append(cssValuePool().createIdentifierValue(CSSValueNone)); break; case AnimationFillModeForwards: - list->append(cssValuePool->createIdentifierValue(CSSValueForwards)); + list->append(cssValuePool().createIdentifierValue(CSSValueForwards)); break; case AnimationFillModeBackwards: - list->append(cssValuePool->createIdentifierValue(CSSValueBackwards)); + list->append(cssValuePool().createIdentifierValue(CSSValueBackwards)); break; case AnimationFillModeBoth: - list->append(cssValuePool->createIdentifierValue(CSSValueBoth)); + list->append(cssValuePool().createIdentifierValue(CSSValueBoth)); break; } } } else - list->append(cssValuePool->createIdentifierValue(CSSValueNone)); + list->append(cssValuePool().createIdentifierValue(CSSValueNone)); return list.release(); } case CSSPropertyWebkitAnimationIterationCount: { @@ -2094,14 +2108,14 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper const AnimationList* t = style->animations(); if (t) { for (size_t i = 0; i < t->size(); ++i) { - int iterationCount = t->animation(i)->iterationCount(); + double iterationCount = t->animation(i)->iterationCount(); if (iterationCount == Animation::IterationCountInfinite) - list->append(cssValuePool->createIdentifierValue(CSSValueInfinite)); + list->append(cssValuePool().createIdentifierValue(CSSValueInfinite)); else - list->append(cssValuePool->createValue(iterationCount, CSSPrimitiveValue::CSS_NUMBER)); + list->append(cssValuePool().createValue(iterationCount, CSSPrimitiveValue::CSS_NUMBER)); } } else - list->append(cssValuePool->createValue(Animation::initialAnimationIterationCount(), CSSPrimitiveValue::CSS_NUMBER)); + list->append(cssValuePool().createValue(Animation::initialAnimationIterationCount(), CSSPrimitiveValue::CSS_NUMBER)); return list.release(); } case CSSPropertyWebkitAnimationName: { @@ -2109,9 +2123,9 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper const AnimationList* t = style->animations(); if (t) { for (size_t i = 0; i < t->size(); ++i) - list->append(cssValuePool->createValue(t->animation(i)->name(), CSSPrimitiveValue::CSS_STRING)); + list->append(cssValuePool().createValue(t->animation(i)->name(), CSSPrimitiveValue::CSS_STRING)); } else - list->append(cssValuePool->createIdentifierValue(CSSValueNone)); + list->append(cssValuePool().createIdentifierValue(CSSValueNone)); return list.release(); } case CSSPropertyWebkitAnimationPlayState: { @@ -2121,221 +2135,223 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper for (size_t i = 0; i < t->size(); ++i) { int prop = t->animation(i)->playState(); if (prop == AnimPlayStatePlaying) - list->append(cssValuePool->createIdentifierValue(CSSValueRunning)); + list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); else - list->append(cssValuePool->createIdentifierValue(CSSValuePaused)); + list->append(cssValuePool().createIdentifierValue(CSSValuePaused)); } } else - list->append(cssValuePool->createIdentifierValue(CSSValueRunning)); + list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); return list.release(); } case CSSPropertyWebkitAnimationTimingFunction: return getTimingFunctionValue(style->animations()); case CSSPropertyWebkitAppearance: - return cssValuePool->createValue(style->appearance()); + return cssValuePool().createValue(style->appearance()); case CSSPropertyWebkitAspectRatio: if (!style->hasAspectRatio()) - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); return CSSAspectRatioValue::create(style->aspectRatioNumerator(), style->aspectRatioDenominator()); case CSSPropertyWebkitBackfaceVisibility: - return cssValuePool->createIdentifierValue((style->backfaceVisibility() == BackfaceVisibilityHidden) ? CSSValueHidden : CSSValueVisible); + return cssValuePool().createIdentifierValue((style->backfaceVisibility() == BackfaceVisibilityHidden) ? CSSValueHidden : CSSValueVisible); case CSSPropertyWebkitBorderImage: - return valueForNinePieceImage(style->borderImage(), cssValuePool); + return valueForNinePieceImage(style->borderImage()); case CSSPropertyBorderImageOutset: - return valueForNinePieceImageQuad(style->borderImage().outset(), cssValuePool); + return valueForNinePieceImageQuad(style->borderImage().outset()); case CSSPropertyBorderImageRepeat: - return valueForNinePieceImageRepeat(style->borderImage(), cssValuePool); + return valueForNinePieceImageRepeat(style->borderImage()); case CSSPropertyBorderImageSlice: - return valueForNinePieceImageSlice(style->borderImage(), cssValuePool); + return valueForNinePieceImageSlice(style->borderImage()); case CSSPropertyBorderImageWidth: - return valueForNinePieceImageQuad(style->borderImage().borderSlices(), cssValuePool); + return valueForNinePieceImageQuad(style->borderImage().borderSlices()); case CSSPropertyWebkitMaskBoxImage: - return valueForNinePieceImage(style->maskBoxImage(), cssValuePool); + return valueForNinePieceImage(style->maskBoxImage()); case CSSPropertyWebkitMaskBoxImageOutset: - return valueForNinePieceImageQuad(style->maskBoxImage().outset(), cssValuePool); + return valueForNinePieceImageQuad(style->maskBoxImage().outset()); case CSSPropertyWebkitMaskBoxImageRepeat: - return valueForNinePieceImageRepeat(style->maskBoxImage(), cssValuePool); + return valueForNinePieceImageRepeat(style->maskBoxImage()); case CSSPropertyWebkitMaskBoxImageSlice: - return valueForNinePieceImageSlice(style->maskBoxImage(), cssValuePool); + return valueForNinePieceImageSlice(style->maskBoxImage()); case CSSPropertyWebkitMaskBoxImageWidth: - return valueForNinePieceImageQuad(style->maskBoxImage().borderSlices(), cssValuePool); + return valueForNinePieceImageQuad(style->maskBoxImage().borderSlices()); case CSSPropertyWebkitMaskBoxImageSource: if (style->maskBoxImageSource()) return style->maskBoxImageSource()->cssValue(); - return cssValuePool->createIdentifierValue(CSSValueNone); + return cssValuePool().createIdentifierValue(CSSValueNone); case CSSPropertyWebkitFontSizeDelta: // Not a real style property -- used by the editing engine -- so has no computed value. break; case CSSPropertyWebkitMarginBottomCollapse: case CSSPropertyWebkitMarginAfterCollapse: - return cssValuePool->createValue(style->marginAfterCollapse()); + return cssValuePool().createValue(style->marginAfterCollapse()); case CSSPropertyWebkitMarginTopCollapse: case CSSPropertyWebkitMarginBeforeCollapse: - return cssValuePool->createValue(style->marginBeforeCollapse()); + return cssValuePool().createValue(style->marginBeforeCollapse()); #if ENABLE(OVERFLOW_SCROLLING) case CSSPropertyWebkitOverflowScrolling: if (!style->useTouchOverflowScrolling()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createIdentifierValue(CSSValueTouch); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createIdentifierValue(CSSValueTouch); #endif case CSSPropertyWebkitPerspective: if (!style->hasPerspective()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return zoomAdjustedPixelValue(style->perspective(), style.get(), cssValuePool); + return cssValuePool().createIdentifierValue(CSSValueNone); + return zoomAdjustedPixelValue(style->perspective(), style.get()); case CSSPropertyWebkitPerspectiveOrigin: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); if (renderer) { LayoutRect box = sizingBox(renderer); - list->append(zoomAdjustedPixelValue(style->perspectiveOriginX().calcMinValue(box.width()), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValue(style->perspectiveOriginY().calcMinValue(box.height()), style.get(), cssValuePool)); + RenderView* renderView = m_node->document()->renderView(); + list->append(zoomAdjustedPixelValue(minimumValueForLength(style->perspectiveOriginX(), box.width(), renderView), style.get())); + list->append(zoomAdjustedPixelValue(minimumValueForLength(style->perspectiveOriginY(), box.height(), renderView), style.get())); } else { - list->append(zoomAdjustedPixelValueForLength(style->perspectiveOriginX(), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValueForLength(style->perspectiveOriginY(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValueForLength(style->perspectiveOriginX(), style.get())); + list->append(zoomAdjustedPixelValueForLength(style->perspectiveOriginY(), style.get())); } return list.release(); } case CSSPropertyWebkitRtlOrdering: - return cssValuePool->createIdentifierValue(style->rtlOrdering() ? CSSValueVisual : CSSValueLogical); + return cssValuePool().createIdentifierValue(style->rtlOrdering() ? CSSValueVisual : CSSValueLogical); #if ENABLE(TOUCH_EVENTS) case CSSPropertyWebkitTapHighlightColor: return currentColorOrValidColor(style.get(), style->tapHighlightColor()); #endif case CSSPropertyWebkitUserDrag: - return cssValuePool->createValue(style->userDrag()); + return cssValuePool().createValue(style->userDrag()); case CSSPropertyWebkitUserSelect: - return cssValuePool->createValue(style->userSelect()); + return cssValuePool().createValue(style->userSelect()); case CSSPropertyBorderBottomLeftRadius: - return getBorderRadiusCornerValue(style->borderBottomLeftRadius(), style.get(), cssValuePool); + return getBorderRadiusCornerValue(style->borderBottomLeftRadius(), style.get(), m_node->document()->renderView()); case CSSPropertyBorderBottomRightRadius: - return getBorderRadiusCornerValue(style->borderBottomRightRadius(), style.get(), cssValuePool); + return getBorderRadiusCornerValue(style->borderBottomRightRadius(), style.get(), m_node->document()->renderView()); case CSSPropertyBorderTopLeftRadius: - return getBorderRadiusCornerValue(style->borderTopLeftRadius(), style.get(), cssValuePool); + return getBorderRadiusCornerValue(style->borderTopLeftRadius(), style.get(), m_node->document()->renderView()); case CSSPropertyBorderTopRightRadius: - return getBorderRadiusCornerValue(style->borderTopRightRadius(), style.get(), cssValuePool); + return getBorderRadiusCornerValue(style->borderTopRightRadius(), style.get(), m_node->document()->renderView()); case CSSPropertyClip: { if (!style->hasClip()) - return cssValuePool->createIdentifierValue(CSSValueAuto); + return cssValuePool().createIdentifierValue(CSSValueAuto); RefPtr<Rect> rect = Rect::create(); - rect->setTop(zoomAdjustedPixelValue(style->clip().top().value(), style.get(), cssValuePool)); - rect->setRight(zoomAdjustedPixelValue(style->clip().right().value(), style.get(), cssValuePool)); - rect->setBottom(zoomAdjustedPixelValue(style->clip().bottom().value(), style.get(), cssValuePool)); - rect->setLeft(zoomAdjustedPixelValue(style->clip().left().value(), style.get(), cssValuePool)); - return cssValuePool->createValue(rect.release()); + rect->setTop(zoomAdjustedPixelValue(style->clip().top().value(), style.get())); + rect->setRight(zoomAdjustedPixelValue(style->clip().right().value(), style.get())); + rect->setBottom(zoomAdjustedPixelValue(style->clip().bottom().value(), style.get())); + rect->setLeft(zoomAdjustedPixelValue(style->clip().left().value(), style.get())); + return cssValuePool().createValue(rect.release()); } case CSSPropertySpeak: - return cssValuePool->createValue(style->speak()); + return cssValuePool().createValue(style->speak()); case CSSPropertyWebkitTransform: - return computedTransform(renderer, style.get(), cssValuePool); + return computedTransform(renderer, style.get()); case CSSPropertyWebkitTransformOrigin: { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); if (renderer) { - IntRect box = sizingBox(renderer); - list->append(zoomAdjustedPixelValue(style->transformOriginX().calcMinValue(box.width()), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValue(style->transformOriginY().calcMinValue(box.height()), style.get(), cssValuePool)); + LayoutRect box = sizingBox(renderer); + RenderView* renderView = m_node->document()->renderView(); + list->append(zoomAdjustedPixelValue(minimumValueForLength(style->transformOriginX(), box.width(), renderView), style.get())); + list->append(zoomAdjustedPixelValue(minimumValueForLength(style->transformOriginY(), box.height(), renderView), style.get())); if (style->transformOriginZ() != 0) - list->append(zoomAdjustedPixelValue(style->transformOriginZ(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValue(style->transformOriginZ(), style.get())); } else { - list->append(zoomAdjustedPixelValueForLength(style->transformOriginX(), style.get(), cssValuePool)); - list->append(zoomAdjustedPixelValueForLength(style->transformOriginY(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValueForLength(style->transformOriginX(), style.get())); + list->append(zoomAdjustedPixelValueForLength(style->transformOriginY(), style.get())); if (style->transformOriginZ() != 0) - list->append(zoomAdjustedPixelValue(style->transformOriginZ(), style.get(), cssValuePool)); + list->append(zoomAdjustedPixelValue(style->transformOriginZ(), style.get())); } return list.release(); } case CSSPropertyWebkitTransformStyle: - return cssValuePool->createIdentifierValue((style->transformStyle3D() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat); + return cssValuePool().createIdentifierValue((style->transformStyle3D() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat); case CSSPropertyWebkitTransitionDelay: - return getDelayValue(style->transitions(), cssValuePool); + return getDelayValue(style->transitions()); case CSSPropertyWebkitTransitionDuration: - return getDurationValue(style->transitions(), cssValuePool); + return getDurationValue(style->transitions()); case CSSPropertyWebkitTransitionProperty: { RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); const AnimationList* t = style->transitions(); if (t) { for (size_t i = 0; i < t->size(); ++i) { - int prop = t->animation(i)->property(); RefPtr<CSSValue> propertyValue; - if (prop == cAnimateNone) - propertyValue = cssValuePool->createIdentifierValue(CSSValueNone); - else if (prop == cAnimateAll) - propertyValue = cssValuePool->createIdentifierValue(CSSValueAll); + const Animation* animation = t->animation(i); + if (animation->animationMode() == Animation::AnimateNone) + propertyValue = cssValuePool().createIdentifierValue(CSSValueNone); + else if (animation->animationMode() == Animation::AnimateAll) + propertyValue = cssValuePool().createIdentifierValue(CSSValueAll); else - propertyValue = cssValuePool->createValue(getPropertyName(static_cast<CSSPropertyID>(prop)), CSSPrimitiveValue::CSS_STRING); + propertyValue = cssValuePool().createValue(getPropertyName(animation->property()), CSSPrimitiveValue::CSS_STRING); list->append(propertyValue); } } else - list->append(cssValuePool->createIdentifierValue(CSSValueAll)); + list->append(cssValuePool().createIdentifierValue(CSSValueAll)); return list.release(); } case CSSPropertyWebkitTransitionTimingFunction: return getTimingFunctionValue(style->transitions()); case CSSPropertyPointerEvents: - return cssValuePool->createValue(style->pointerEvents()); + return cssValuePool().createValue(style->pointerEvents()); case CSSPropertyWebkitColorCorrection: - return cssValuePool->createValue(style->colorSpace()); + return cssValuePool().createValue(style->colorSpace()); case CSSPropertyWebkitLineGrid: if (style->lineGrid().isNull()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return cssValuePool->createValue(style->lineGrid(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueNone); + return cssValuePool().createValue(style->lineGrid(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyWebkitLineSnap: return CSSPrimitiveValue::create(style->lineSnap()); case CSSPropertyWebkitLineAlign: return CSSPrimitiveValue::create(style->lineAlign()); case CSSPropertyWebkitWritingMode: - return cssValuePool->createValue(style->writingMode()); + return cssValuePool().createValue(style->writingMode()); case CSSPropertyWebkitTextCombine: - return cssValuePool->createValue(style->textCombine()); + return cssValuePool().createValue(style->textCombine()); case CSSPropertyWebkitTextOrientation: return CSSPrimitiveValue::create(style->fontDescription().textOrientation()); case CSSPropertyWebkitLineBoxContain: - return createLineBoxContainValue(cssValuePool, style->lineBoxContain()); + return createLineBoxContainValue(style->lineBoxContain()); case CSSPropertyContent: - return contentToCSSValue(style.get(), cssValuePool); + return contentToCSSValue(style.get()); case CSSPropertyCounterIncrement: - return counterToCSSValue(style.get(), propertyID, cssValuePool); + return counterToCSSValue(style.get(), propertyID); case CSSPropertyCounterReset: - return counterToCSSValue(style.get(), propertyID, cssValuePool); + return counterToCSSValue(style.get(), propertyID); case CSSPropertyWebkitFlowInto: if (style->flowThread().isNull()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return cssValuePool->createValue(style->flowThread(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueNone); + return cssValuePool().createValue(style->flowThread(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyWebkitFlowFrom: if (style->regionThread().isNull()) - return cssValuePool->createIdentifierValue(CSSValueNone); - return cssValuePool->createValue(style->regionThread(), CSSPrimitiveValue::CSS_STRING); + return cssValuePool().createIdentifierValue(CSSValueNone); + return cssValuePool().createValue(style->regionThread(), CSSPrimitiveValue::CSS_STRING); case CSSPropertyWebkitRegionOverflow: - return cssValuePool->createValue(style->regionOverflow()); + return cssValuePool().createValue(style->regionOverflow()); case CSSPropertyWebkitWrapFlow: - return cssValuePool->createValue(style->wrapFlow()); + return cssValuePool().createValue(style->wrapFlow()); case CSSPropertyWebkitWrapMargin: - return cssValuePool->createValue(style->wrapMargin()); + return cssValuePool().createValue(style->wrapMargin()); case CSSPropertyWebkitWrapPadding: - return cssValuePool->createValue(style->wrapPadding()); - case CSSPropertyWebkitWrapShapeInside: + return cssValuePool().createValue(style->wrapPadding()); + case CSSPropertyWebkitShapeInside: if (!style->wrapShapeInside()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->wrapShapeInside()); - case CSSPropertyWebkitWrapShapeOutside: + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->wrapShapeInside()); + case CSSPropertyWebkitShapeOutside: if (!style->wrapShapeOutside()) - return cssValuePool->createIdentifierValue(CSSValueAuto); - return cssValuePool->createValue(style->wrapShapeOutside()); + return cssValuePool().createIdentifierValue(CSSValueAuto); + return cssValuePool().createValue(style->wrapShapeOutside()); case CSSPropertyWebkitWrapThrough: - return cssValuePool->createValue(style->wrapThrough()); + return cssValuePool().createValue(style->wrapThrough()); #if ENABLE(CSS_FILTERS) case CSSPropertyWebkitFilter: return valueForFilter(style.get()); #endif case CSSPropertyBackground: { - const int properties[5] = { CSSPropertyBackgroundColor, CSSPropertyBackgroundImage, + const CSSPropertyID properties[5] = { CSSPropertyBackgroundColor, CSSPropertyBackgroundImage, CSSPropertyBackgroundRepeat, CSSPropertyBackgroundAttachment, CSSPropertyBackgroundPosition }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); + return getCSSPropertyValuesForShorthandProperties(StylePropertyShorthand(properties, WTF_ARRAY_LENGTH(properties))); } case CSSPropertyBorder: { RefPtr<CSSValue> value = getPropertyCSSValue(CSSPropertyBorderTop, DoNotUpdateLayout); - const int properties[3] = { CSSPropertyBorderRight, CSSPropertyBorderBottom, + const CSSPropertyID properties[3] = { CSSPropertyBorderRight, CSSPropertyBorderBottom, CSSPropertyBorderLeft }; for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) { if (value->cssText() != getPropertyCSSValue(properties[i], DoNotUpdateLayout)->cssText()) @@ -2343,65 +2359,32 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper } return value.release(); } - case CSSPropertyBorderBottom: { - const int properties[3] = { CSSPropertyBorderBottomWidth, CSSPropertyBorderBottomStyle, - CSSPropertyBorderBottomColor }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } - case CSSPropertyBorderColor: { - const int properties[4] = { CSSPropertyBorderTopColor, CSSPropertyBorderRightColor, - CSSPropertyBorderBottomColor, CSSPropertyBorderLeftColor }; - return getCSSPropertyValuesForSidesShorthand(properties); - } - case CSSPropertyBorderLeft: { - const int properties[3] = { CSSPropertyBorderLeftWidth, CSSPropertyBorderLeftStyle, - CSSPropertyBorderLeftColor }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } + case CSSPropertyBorderBottom: + return getCSSPropertyValuesForShorthandProperties(borderBottomShorthand()); + case CSSPropertyBorderColor: + return getCSSPropertyValuesForSidesShorthand(borderColorShorthand()); + case CSSPropertyBorderLeft: + return getCSSPropertyValuesForShorthandProperties(borderLeftShorthand()); case CSSPropertyBorderImage: - return valueForNinePieceImage(style->borderImage(), cssValuePool); + return valueForNinePieceImage(style->borderImage()); case CSSPropertyBorderRadius: - return getBorderRadiusShorthandValue(style.get(), cssValuePool); - case CSSPropertyBorderRight: { - const int properties[3] = { CSSPropertyBorderRightWidth, CSSPropertyBorderRightStyle, - CSSPropertyBorderRightColor }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } - case CSSPropertyBorderStyle: { - const int properties[4] = { CSSPropertyBorderTopStyle, CSSPropertyBorderRightStyle, - CSSPropertyBorderBottomStyle, CSSPropertyBorderLeftStyle }; - return getCSSPropertyValuesForSidesShorthand(properties); - } - case CSSPropertyBorderTop: { - const int properties[3] = { CSSPropertyBorderTopWidth, CSSPropertyBorderTopStyle, - CSSPropertyBorderTopColor }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } - case CSSPropertyBorderWidth: { - const int properties[4] = { CSSPropertyBorderTopWidth, CSSPropertyBorderRightWidth, - CSSPropertyBorderBottomWidth, CSSPropertyBorderLeftWidth }; - return getCSSPropertyValuesForSidesShorthand(properties); - } - case CSSPropertyListStyle: { - const int properties[3] = { CSSPropertyListStyleType, CSSPropertyListStylePosition, - CSSPropertyListStyleImage }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } - case CSSPropertyMargin: { - const int properties[4] = { CSSPropertyMarginTop, CSSPropertyMarginRight, - CSSPropertyMarginBottom, CSSPropertyMarginLeft }; - return getCSSPropertyValuesForSidesShorthand(properties); - } - case CSSPropertyOutline: { - const int properties[3] = { CSSPropertyOutlineColor, CSSPropertyOutlineStyle, - CSSPropertyOutlineWidth }; - return getCSSPropertyValuesForShorthandProperties(properties, WTF_ARRAY_LENGTH(properties)); - } - case CSSPropertyPadding: { - const int properties[4] = { CSSPropertyPaddingTop, CSSPropertyPaddingRight, - CSSPropertyPaddingBottom, CSSPropertyPaddingLeft }; - return getCSSPropertyValuesForSidesShorthand(properties); - } + return getBorderRadiusShorthandValue(style.get(), m_node->document()->renderView()); + case CSSPropertyBorderRight: + return getCSSPropertyValuesForShorthandProperties(borderRightShorthand()); + case CSSPropertyBorderStyle: + return getCSSPropertyValuesForSidesShorthand(borderStyleShorthand()); + case CSSPropertyBorderTop: + return getCSSPropertyValuesForShorthandProperties(borderTopShorthand()); + case CSSPropertyBorderWidth: + return getCSSPropertyValuesForSidesShorthand(borderWidthShorthand()); + case CSSPropertyListStyle: + return getCSSPropertyValuesForShorthandProperties(listStyleShorthand()); + case CSSPropertyMargin: + return getCSSPropertyValuesForSidesShorthand(marginShorthand()); + case CSSPropertyOutline: + return getCSSPropertyValuesForShorthandProperties(outlineShorthand()); + case CSSPropertyPadding: + return getCSSPropertyValuesForSidesShorthand(paddingShorthand()); /* Individual properties not part of the spec */ case CSSPropertyBackgroundRepeatX: case CSSPropertyBackgroundRepeatY: @@ -2542,7 +2525,7 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper return 0; } -String CSSComputedStyleDeclaration::getPropertyValue(int propertyID) const +String CSSComputedStyleDeclaration::getPropertyValue(CSSPropertyID propertyID) const { RefPtr<CSSValue> value = getPropertyCSSValue(propertyID); if (value) @@ -2569,7 +2552,7 @@ String CSSComputedStyleDeclaration::item(unsigned i) const if (i >= length()) return ""; - return getPropertyName(static_cast<CSSPropertyID>(computedProperties[i])); + return getPropertyName(computedProperties[i]); } bool CSSComputedStyleDeclaration::cssPropertyMatches(const CSSProperty* property) const @@ -2598,24 +2581,24 @@ PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::makeMutable() return copy(); } -PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForShorthandProperties(const int* properties, size_t size) const +PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForShorthandProperties(const StylePropertyShorthand& shorthand) const { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); - for (size_t i = 0; i < size; ++i) { - RefPtr<CSSValue> value = getPropertyCSSValue(properties[i], DoNotUpdateLayout); + for (size_t i = 0; i < shorthand.length(); ++i) { + RefPtr<CSSValue> value = getPropertyCSSValue(shorthand.properties()[i], DoNotUpdateLayout); list->append(value); } return list.release(); } -PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForSidesShorthand(const int* properties) const +PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForSidesShorthand(const StylePropertyShorthand& shorthand) const { RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); // Assume the properties are in the usual order top, right, bottom, left. - RefPtr<CSSValue> topValue = getPropertyCSSValue(properties[0], DoNotUpdateLayout); - RefPtr<CSSValue> rightValue = getPropertyCSSValue(properties[1], DoNotUpdateLayout); - RefPtr<CSSValue> bottomValue = getPropertyCSSValue(properties[2], DoNotUpdateLayout); - RefPtr<CSSValue> leftValue = getPropertyCSSValue(properties[3], DoNotUpdateLayout); + RefPtr<CSSValue> topValue = getPropertyCSSValue(shorthand.properties()[0], DoNotUpdateLayout); + RefPtr<CSSValue> rightValue = getPropertyCSSValue(shorthand.properties()[1], DoNotUpdateLayout); + RefPtr<CSSValue> bottomValue = getPropertyCSSValue(shorthand.properties()[2], DoNotUpdateLayout); + RefPtr<CSSValue> leftValue = getPropertyCSSValue(shorthand.properties()[3], DoNotUpdateLayout); // All 4 properties must be specified. if (!topValue || !rightValue || !bottomValue || !leftValue) @@ -2636,7 +2619,7 @@ PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForSid return list.release(); } -PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::copyPropertiesInSet(const int* set, unsigned length) const +PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::copyPropertiesInSet(const CSSPropertyID* set, unsigned length) const { Vector<CSSProperty> list; list.reserveInitialCapacity(length); @@ -2655,15 +2638,16 @@ CSSRule* CSSComputedStyleDeclaration::parentRule() const PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(const String& propertyName) { - int propertyID = cssPropertyID(propertyName); + CSSPropertyID propertyID = cssPropertyID(propertyName); if (!propertyID) return 0; - return getPropertyCSSValue(propertyID); + RefPtr<CSSValue> value = getPropertyCSSValue(propertyID); + return value ? value->cloneForCSSOM() : 0; } String CSSComputedStyleDeclaration::getPropertyValue(const String &propertyName) { - int propertyID = cssPropertyID(propertyName); + CSSPropertyID propertyID = cssPropertyID(propertyName); if (!propertyID) return String(); return getPropertyValue(propertyID); |