| Index: Source/core/css/resolver/StyleResolver.cpp
|
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
|
| index edcebea5a1767097fc33503f849559530ad1c158..94579ac2710630866d0cdae507ec27eb957f6b68 100644
|
| --- a/Source/core/css/resolver/StyleResolver.cpp
|
| +++ b/Source/core/css/resolver/StyleResolver.cpp
|
| @@ -589,8 +589,9 @@ PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderS
|
| state.setParentStyle(defaultStyleForElement());
|
| } else {
|
| if (state.parentStyle()) {
|
| - state.setStyle(RenderStyle::create());
|
| - state.style()->inheritFrom(state.parentStyle(), isAtShadowBoundary(element) ? RenderStyle::AtShadowBoundary : RenderStyle::NotAtShadowBoundary);
|
| + RefPtr<RenderStyle> style = RenderStyle::create();
|
| + style->inheritFrom(state.parentStyle(), isAtShadowBoundary(element) ? RenderStyle::AtShadowBoundary : RenderStyle::NotAtShadowBoundary);
|
| + state.setStyle(style.release());
|
| } else {
|
| state.setStyle(defaultStyleForElement());
|
| state.setParentStyle(RenderStyle::clone(state.style()));
|
| @@ -776,8 +777,9 @@ bool StyleResolver::pseudoStyleForElementInternal(Element& element, const Pseudo
|
| if (baseRenderStyle) {
|
| state.setStyle(RenderStyle::clone(baseRenderStyle));
|
| } else if (pseudoStyleRequest.allowsInheritance(state.parentStyle())) {
|
| - state.setStyle(RenderStyle::create());
|
| - state.style()->inheritFrom(state.parentStyle());
|
| + RefPtr<RenderStyle> style = RenderStyle::create();
|
| + style->inheritFrom(state.parentStyle());
|
| + state.setStyle(style.release());
|
| } else {
|
| state.setStyle(defaultStyleForElement());
|
| state.setParentStyle(RenderStyle::clone(state.style()));
|
| @@ -855,10 +857,11 @@ PassRefPtr<RenderStyle> StyleResolver::styleForPage(int pageIndex)
|
| resetDirectionAndWritingModeOnDocument(document());
|
| StyleResolverState state(document(), document().documentElement()); // m_rootElementStyle will be set to the document style.
|
|
|
| - state.setStyle(RenderStyle::create());
|
| + RefPtr<RenderStyle> style = RenderStyle::create();
|
| const RenderStyle* rootElementStyle = state.rootElementStyle() ? state.rootElementStyle() : document().renderStyle();
|
| ASSERT(rootElementStyle);
|
| - state.style()->inheritFrom(rootElementStyle);
|
| + style->inheritFrom(rootElementStyle);
|
| + state.setStyle(style.release());
|
|
|
| PageRuleCollector collector(rootElementStyle, pageIndex);
|
|
|
| @@ -906,11 +909,12 @@ void StyleResolver::collectViewportRules()
|
|
|
| PassRefPtr<RenderStyle> StyleResolver::defaultStyleForElement()
|
| {
|
| - StyleResolverState state(document(), 0);
|
| - state.setStyle(RenderStyle::create());
|
| - state.fontBuilder().setInitial(state.style()->effectiveZoom());
|
| - state.style()->font().update(document().styleEngine()->fontSelector());
|
| - return state.takeStyle();
|
| + RefPtr<RenderStyle> style = RenderStyle::create();
|
| + FontBuilder fontBuilder(document());
|
| + fontBuilder.setStyle(style.get());
|
| + fontBuilder.setInitial(style->effectiveZoom());
|
| + style->font().update(document().styleEngine()->fontSelector());
|
| + return style.release();
|
| }
|
|
|
| PassRefPtr<RenderStyle> StyleResolver::styleForText(Text* textNode)
|
| @@ -926,6 +930,8 @@ PassRefPtr<RenderStyle> StyleResolver::styleForText(Text* textNode)
|
| void StyleResolver::updateFont(StyleResolverState& state)
|
| {
|
| state.fontBuilder().createFont(document().styleEngine()->fontSelector(), state.parentStyle(), state.style());
|
| + state.setConversionFontSizes(CSSToLengthConversionData::FontSizes(state.style(), state.rootElementStyle()));
|
| + state.setConversionZoom(state.style()->effectiveZoom());
|
| }
|
|
|
| PassRefPtrWillBeRawPtr<StyleRuleList> StyleResolver::styleRulesForElement(Element* element, unsigned rulesToInclude)
|
| @@ -1419,6 +1425,9 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
|
|
|
| // Unfortunately the link status is treated like an inherited property. We need to explicitly restore it.
|
| state.style()->setInsideLink(linkStatus);
|
| +
|
| + updateFont(state);
|
| +
|
| return;
|
| }
|
| applyInheritedOnly = true;
|
|
|