Index: Source/core/css/CSSToStyleMap.cpp |
diff --git a/Source/core/css/CSSToStyleMap.cpp b/Source/core/css/CSSToStyleMap.cpp |
index 10530f487d080f296c199bb96fe74af669677dbe..27eabaf8cee6f4ddb17466f6b1c898035b8f4d69 100644 |
--- a/Source/core/css/CSSToStyleMap.cpp |
+++ b/Source/core/css/CSSToStyleMap.cpp |
@@ -47,9 +47,9 @@ const RenderStyle* CSSToStyleMap::style() const |
return m_state.style(); |
} |
-const RenderStyle* CSSToStyleMap::rootElementStyle() const |
+const CSSToLengthConversionData& CSSToStyleMap::cssToLengthConversionData() const |
{ |
- return m_state.rootElementStyle(); |
+ return m_state.cssToLengthConversionData(); |
} |
bool CSSToStyleMap::useSVGZoomRules() const |
@@ -205,16 +205,14 @@ void CSSToStyleMap::mapFillSize(CSSPropertyID, FillLayer* layer, CSSValue* value |
return; |
} |
- float zoomFactor = style()->effectiveZoom(); |
- |
Length firstLength; |
Length secondLength; |
if (Pair* pair = primitiveValue->getPairValue()) { |
- firstLength = pair->first()->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); |
- secondLength = pair->second()->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); |
+ firstLength = pair->first()->convertToLength<AnyConversion>(cssToLengthConversionData()); |
+ secondLength = pair->second()->convertToLength<AnyConversion>(cssToLengthConversionData()); |
} else { |
- firstLength = primitiveValue->convertToLength<AnyConversion>(style(), rootElementStyle(), zoomFactor); |
+ firstLength = primitiveValue->convertToLength<AnyConversion>(cssToLengthConversionData()); |
secondLength = Length(); |
} |
@@ -231,8 +229,6 @@ void CSSToStyleMap::mapFillXPosition(CSSPropertyID propertyID, FillLayer* layer, |
if (!value->isPrimitiveValue()) |
return; |
- float zoomFactor = style()->effectiveZoom(); |
- |
CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
Pair* pair = primitiveValue->getPairValue(); |
if (pair) { |
@@ -242,11 +238,11 @@ void CSSToStyleMap::mapFillXPosition(CSSPropertyID propertyID, FillLayer* layer, |
Length length; |
if (primitiveValue->isLength()) |
- length = primitiveValue->computeLength<Length>(style(), rootElementStyle(), zoomFactor); |
+ length = primitiveValue->computeLength<Length>(cssToLengthConversionData()); |
else if (primitiveValue->isPercentage()) |
length = Length(primitiveValue->getDoubleValue(), Percent); |
else if (primitiveValue->isCalculatedPercentageWithLength()) |
- length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), rootElementStyle(), zoomFactor)); |
+ length = Length(primitiveValue->cssCalcValue()->toCalcValue(cssToLengthConversionData())); |
else if (primitiveValue->isViewportPercentageLength()) |
length = primitiveValue->viewportPercentageLength(); |
else |
@@ -262,8 +258,6 @@ void CSSToStyleMap::mapFillYPosition(CSSPropertyID propertyID, FillLayer* layer, |
if (!value->isPrimitiveValue()) |
return; |
- float zoomFactor = style()->effectiveZoom(); |
- |
CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
Pair* pair = primitiveValue->getPairValue(); |
if (pair) { |
@@ -273,11 +267,11 @@ void CSSToStyleMap::mapFillYPosition(CSSPropertyID propertyID, FillLayer* layer, |
Length length; |
if (primitiveValue->isLength()) |
- length = primitiveValue->computeLength<Length>(style(), rootElementStyle(), zoomFactor); |
+ length = primitiveValue->computeLength<Length>(cssToLengthConversionData()); |
else if (primitiveValue->isPercentage()) |
length = Length(primitiveValue->getDoubleValue(), Percent); |
else if (primitiveValue->isCalculatedPercentageWithLength()) |
- length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), rootElementStyle(), zoomFactor)); |
+ length = Length(primitiveValue->cssCalcValue()->toCalcValue(cssToLengthConversionData())); |
else if (primitiveValue->isViewportPercentageLength()) |
length = primitiveValue->viewportPercentageLength(); |
else |
@@ -615,8 +609,8 @@ BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const |
if (!value || !value->isPrimitiveValue()) |
return BorderImageLengthBox(); |
- // Get our zoom value. |
float zoom = useSVGZoomRules() ? 1.0f : style()->effectiveZoom(); |
+ const CSSToLengthConversionData& conversionData = cssToLengthConversionData().copyWithAdjustedZoom(zoom); |
// Retrieve the primitive value. |
CSSPrimitiveValue* borderWidths = toCSSPrimitiveValue(value); |
@@ -629,28 +623,28 @@ BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const |
else if (slices->top()->isPercentage()) |
box.setTop(Length(slices->top()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); |
else if (slices->top()->getValueID() != CSSValueAuto) |
- box.setTop(slices->top()->computeLength<Length>(style(), rootElementStyle(), zoom)); |
+ box.setTop(slices->top()->computeLength<Length>(conversionData)); |
if (slices->right()->isNumber()) |
box.setRight(slices->right()->getDoubleValue()); |
else if (slices->right()->isPercentage()) |
box.setRight(Length(slices->right()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); |
else if (slices->right()->getValueID() != CSSValueAuto) |
- box.setRight(slices->right()->computeLength<Length>(style(), rootElementStyle(), zoom)); |
+ box.setRight(slices->right()->computeLength<Length>(conversionData)); |
if (slices->bottom()->isNumber()) |
box.setBottom(slices->bottom()->getDoubleValue()); |
else if (slices->bottom()->isPercentage()) |
box.setBottom(Length(slices->bottom()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); |
else if (slices->bottom()->getValueID() != CSSValueAuto) |
- box.setBottom(slices->bottom()->computeLength<Length>(style(), rootElementStyle(), zoom)); |
+ box.setBottom(slices->bottom()->computeLength<Length>(conversionData)); |
if (slices->left()->isNumber()) |
box.setLeft(slices->left()->getDoubleValue()); |
else if (slices->left()->isPercentage()) |
box.setLeft(Length(slices->left()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent)); |
else if (slices->left()->getValueID() != CSSValueAuto) |
- box.setLeft(slices->left()->computeLength<Length>(style(), rootElementStyle(), zoom)); |
+ box.setLeft(slices->left()->computeLength<Length>(conversionData)); |
return box; |
} |