| Index: Source/core/css/resolver/StyleBuilderConverter.cpp
|
| diff --git a/Source/core/css/resolver/StyleBuilderConverter.cpp b/Source/core/css/resolver/StyleBuilderConverter.cpp
|
| index 180d77d15d4805b8fa222458722b697ecf39fac2..a34d0016bef87406ce41c3c539ff3917cce34da3 100644
|
| --- a/Source/core/css/resolver/StyleBuilderConverter.cpp
|
| +++ b/Source/core/css/resolver/StyleBuilderConverter.cpp
|
| @@ -572,6 +572,33 @@ LineBoxContain StyleBuilderConverter::convertLineBoxContain(StyleResolverState&,
|
| return toCSSLineBoxContainValue(value)->value();
|
| }
|
|
|
| +static CSSToLengthConversionData lineHeightToLengthConversionData(StyleResolverState& state)
|
| +{
|
| + float multiplier = state.style()->effectiveZoom();
|
| + if (LocalFrame* frame = state.document().frame())
|
| + multiplier *= frame->textZoomFactor();
|
| + return state.cssToLengthConversionData().copyWithAdjustedZoom(multiplier);
|
| +}
|
| +
|
| +Length StyleBuilderConverter::convertLineHeight(StyleResolverState& state, CSSValue* value)
|
| +{
|
| + CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
|
| +
|
| + if (primitiveValue->isLength())
|
| + return primitiveValue->computeLength<Length>(lineHeightToLengthConversionData(state));
|
| + if (primitiveValue->isPercentage())
|
| + return Length((state.style()->computedFontSize() * primitiveValue->getIntValue()) / 100.0, Fixed);
|
| + if (primitiveValue->isNumber())
|
| + return Length(primitiveValue->getDoubleValue() * 100.0, Percent);
|
| + if (primitiveValue->isCalculated()) {
|
| + Length zoomedLength = Length(primitiveValue->cssCalcValue()->toCalcValue(lineHeightToLengthConversionData(state)));
|
| + return Length(valueForLength(zoomedLength, state.style()->fontSize()), Fixed);
|
| + }
|
| +
|
| + ASSERT(primitiveValue->getValueID() == CSSValueNormal);
|
| + return RenderStyle::initialLineHeight();
|
| +}
|
| +
|
| float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state, CSSValue* value)
|
| {
|
| CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
|
|
|