summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
commit2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch)
tree988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/css/CSSComputedStyleDeclaration.cpp
parentdd91e772430dc294e3bf478c119ef8d43c0a3358 (diff)
downloadqtwebkit-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.cpp1246
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);