Changeset 165542 in webkit
- Timestamp:
- Mar 13, 2014, 10:29:09 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r165540 r165542 1 2014-03-13 Antti Koivisto <antti@apple.com> 2 3 Remove StyleResolver::State::m_parentNode 4 https://bugs.webkit.org/show_bug.cgi?id=130194 5 6 Reviewed by Andreas Kling. 7 8 This variable was the "parent" node where the style was being inherited from, not the actual parent. 9 The code would also recompute it even though the call sites generally know the rendering parent already. 10 11 If we consistently pass parent style to StyleResolver::styleForElement we won't need the variable and 12 the associated code. We also get rid of one more client of NodeRenderingTraversal. 13 14 * css/MediaQueryMatcher.cpp: 15 (WebCore::MediaQueryMatcher::prepareEvaluator): 16 * css/SVGCSSStyleSelector.cpp: 17 (WebCore::StyleResolver::applySVGProperty): 18 * css/StyleMedia.cpp: 19 (WebCore::StyleMedia::matchMedium): 20 * css/StyleResolver.cpp: 21 (WebCore::StyleResolver::State::clear): 22 (WebCore::StyleResolver::StyleResolver): 23 (WebCore::StyleResolver::State::initForStyleResolve): 24 (WebCore::StyleResolver::applyProperty): 25 * css/StyleResolver.h: 26 (WebCore::StyleResolver::document): 27 (WebCore::StyleResolver::State::State): 28 * dom/Element.cpp: 29 (WebCore::Element::customStyleForRenderer): 30 31 Add parentStyle parameter. 32 33 * dom/Element.h: 34 * dom/PseudoElement.cpp: 35 (WebCore::PseudoElement::customStyleForRenderer): 36 * dom/PseudoElement.h: 37 * html/HTMLOptGroupElement.cpp: 38 (WebCore::HTMLOptGroupElement::didAttachRenderers): 39 (WebCore::HTMLOptGroupElement::updateNonRenderStyle): 40 (WebCore::HTMLOptGroupElement::customStyleForRenderer): 41 * html/HTMLOptGroupElement.h: 42 * html/HTMLOptionElement.cpp: 43 (WebCore::HTMLOptionElement::didAttachRenderers): 44 (WebCore::HTMLOptionElement::updateNonRenderStyle): 45 (WebCore::HTMLOptionElement::customStyleForRenderer): 46 * html/HTMLOptionElement.h: 47 * html/HTMLTitleElement.cpp: 48 (WebCore::HTMLTitleElement::textWithDirection): 49 * html/shadow/TextControlInnerElements.cpp: 50 (WebCore::TextControlInnerElement::customStyleForRenderer): 51 (WebCore::TextControlInnerTextElement::customStyleForRenderer): 52 * html/shadow/TextControlInnerElements.h: 53 * rendering/RenderNamedFlowFragment.cpp: 54 (WebCore::RenderNamedFlowFragment::computeStyleInRegion): 55 (WebCore::RenderNamedFlowFragment::computeChildrenStyleInRegion): 56 (WebCore::RenderNamedFlowFragment::setRegionObjectsRegionStyle): 57 * rendering/RenderNamedFlowFragment.h: 58 * style/StyleResolveTree.cpp: 59 (WebCore::Style::styleForElement): 60 61 This used to be Element::styleForRenderer. It is now a standalone static. 62 63 (WebCore::Style::elementInsideRegionNeedsRenderer): 64 (WebCore::Style::createRendererIfNeeded): 65 (WebCore::Style::resolveLocal): 66 * svg/SVGElement.cpp: 67 (WebCore::SVGElement::customStyleForRenderer): 68 * svg/SVGElement.h: 69 1 70 2014-03-13 Zalan Bujtas <zalan@apple.com> 2 71 -
trunk/Source/WebCore/css/MediaQueryMatcher.cpp
r162772 r165542 85 85 return nullptr; 86 86 87 RefPtr<RenderStyle> rootStyle = m_document->ensureStyleResolver().styleForElement(documentElement, 0 /*defaultParent*/, DisallowStyleSharing, MatchOnlyUserAgentRules);87 RefPtr<RenderStyle> rootStyle = m_document->ensureStyleResolver().styleForElement(documentElement, m_document->renderStyle(), DisallowStyleSharing, MatchOnlyUserAgentRules); 88 88 89 89 return std::make_unique<MediaQueryEvaluator>(mediaType(), m_document->frame(), rootStyle.get()); -
trunk/Source/WebCore/css/SVGCSSStyleSelector.cpp
r163751 r165542 111 111 SVGRenderStyle& svgStyle = state.style()->accessSVGStyle(); 112 112 113 bool isInherit = state.parent Node() && value->isInheritedValue();114 bool isInitial = value->isInitialValue() || (!state.parent Node() && value->isInheritedValue());113 bool isInherit = state.parentStyle() && value->isInheritedValue(); 114 bool isInitial = value->isInitialValue() || (!state.parentStyle() && value->isInheritedValue()); 115 115 116 116 // What follows is a list that maps the CSS properties into their -
trunk/Source/WebCore/css/StyleMedia.cpp
r153926 r165542 61 61 return false; 62 62 63 RefPtr<RenderStyle> rootStyle = document->ensureStyleResolver().styleForElement(documentElement, 0 /*defaultParent*/, DisallowStyleSharing, MatchOnlyUserAgentRules);63 RefPtr<RenderStyle> rootStyle = document->ensureStyleResolver().styleForElement(documentElement, document->renderStyle(), DisallowStyleSharing, MatchOnlyUserAgentRules); 64 64 65 65 RefPtr<MediaQuerySet> media = MediaQuerySet::create(); -
trunk/Source/WebCore/css/StyleResolver.cpp
r165465 r165542 89 89 #include "MediaQueryEvaluator.h" 90 90 #include "NodeRenderStyle.h" 91 #include "NodeRenderingTraversal.h"92 91 #include "Page.h" 93 92 #include "PageRuleCollector.h" … … 239 238 m_styledElement = nullptr; 240 239 m_parentStyle = nullptr; 241 m_parentNode = nullptr;242 240 m_regionForStyling = nullptr; 243 241 m_pendingImageProperties.clear(); … … 286 284 287 285 if (root) 288 m_rootDefaultStyle = styleForElement(root, 0, DisallowStyleSharing, MatchOnlyUserAgentRules);286 m_rootDefaultStyle = styleForElement(root, m_document.renderStyle(), DisallowStyleSharing, MatchOnlyUserAgentRules); 289 287 290 288 if (m_rootDefaultStyle && view) … … 412 410 413 411 if (e) { 414 m_parentNode = e->isPseudoElement() ? toPseudoElement(e)->hostElement() : NodeRenderingTraversal::parent(e);415 412 bool resetStyleInheritance = hasShadowRootParent(*e) && toShadowRoot(e->parentNode())->resetStyleInheritance(); 416 m_parentStyle = resetStyleInheritance ? 0 : 417 parentStyle ? parentStyle : 418 m_parentNode ? m_parentNode->renderStyle() : 0; 419 } else { 420 m_parentNode = 0; 413 m_parentStyle = resetStyleInheritance ? nullptr : parentStyle; 414 } else 421 415 m_parentStyle = parentStyle; 422 }423 416 424 417 Node* docElement = e ? e->document().documentElement() : 0; … … 2126 2119 } 2127 2120 2128 bool isInherit = state.parent Node() && value->isInheritedValue();2129 bool isInitial = value->isInitialValue() || (!state.parent Node() && value->isInheritedValue());2121 bool isInherit = state.parentStyle() && value->isInheritedValue(); 2122 bool isInitial = value->isInitialValue() || (!state.parentStyle() && value->isInheritedValue()); 2130 2123 2131 2124 ASSERT(!isInherit || !isInitial); // isInherit -> !isInitial && isInitial -> !isInherit 2132 ASSERT(!isInherit || (state.parentNode() && state.parentStyle())); // isInherit -> (state.parentNode() && state.parentStyle())2133 2125 2134 2126 if (!state.applyPropertyToRegularStyle() && (!state.applyPropertyToVisitedLinkStyle() || !isValidVisitedLinkProperty(id))) { -
trunk/Source/WebCore/css/StyleResolver.h
r164869 r165542 144 144 void popParentElement(Element*); 145 145 146 PassRef<RenderStyle> styleForElement(Element*, RenderStyle* parentStyle = 0, StyleSharingBehavior = AllowStyleSharing,147 RuleMatchingBehavior = MatchAllRules, RenderRegion* regionForStyling = 0);146 PassRef<RenderStyle> styleForElement(Element*, RenderStyle* parentStyle, StyleSharingBehavior = AllowStyleSharing, 147 RuleMatchingBehavior = MatchAllRules, RenderRegion* regionForStyling = nullptr); 148 148 149 149 void keyframeStylesForAnimation(Element*, const RenderStyle*, KeyframeList&); … … 159 159 Element* element() { return m_state.element(); } 160 160 Document& document() { return m_document; } 161 bool hasParentNode() const { return m_state.parentNode(); }162 161 163 162 // FIXME: It could be better to call m_ruleSets.appendAuthorStyleSheets() directly after we factor StyleRsolver further. … … 337 336 : m_element(0) 338 337 , m_styledElement(0) 339 , m_parentNode(0)340 338 , m_parentStyle(0) 341 339 , m_rootElementStyle(0) … … 362 360 PassRef<RenderStyle> takeStyle() { return m_style.releaseNonNull(); } 363 361 364 const ContainerNode* parentNode() const { return m_parentNode; }365 362 void setParentStyle(PassRef<RenderStyle> parentStyle) { m_parentStyle = std::move(parentStyle); } 366 363 RenderStyle* parentStyle() const { return m_parentStyle.get(); } … … 409 406 RefPtr<RenderStyle> m_style; 410 407 StyledElement* m_styledElement; 411 ContainerNode* m_parentNode;412 408 RefPtr<RenderStyle> m_parentStyle; 413 409 RenderStyle* m_rootElementStyle; -
trunk/Source/WebCore/dom/Element.cpp
r165465 r165542 1387 1387 } 1388 1388 1389 PassRef<RenderStyle> Element::styleForRenderer()1390 {1391 if (hasCustomStyleResolveCallbacks()) {1392 if (RefPtr<RenderStyle> style = customStyleForRenderer())1393 return style.releaseNonNull();1394 }1395 1396 return document().ensureStyleResolver().styleForElement(this);1397 }1398 1399 1389 ShadowRoot* Element::shadowRoot() const 1400 1390 { … … 2895 2885 } 2896 2886 2897 PassRefPtr<RenderStyle> Element::customStyleForRenderer( )2887 PassRefPtr<RenderStyle> Element::customStyleForRenderer(RenderStyle&) 2898 2888 { 2899 2889 ASSERT(hasCustomStyleResolveCallbacks()); -
trunk/Source/WebCore/dom/Element.h
r165046 r165542 525 525 virtual bool isSpellCheckingEnabled() const; 526 526 527 PassRef<RenderStyle> styleForRenderer();528 529 527 RenderNamedFlowFragment* renderNamedFlowFragment() const; 530 528 … … 559 557 virtual void willDetachRenderers(); 560 558 virtual void didDetachRenderers(); 559 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle); 561 560 562 561 void setBeforePseudoElement(PassRefPtr<PseudoElement>); … … 579 578 virtual void childrenChanged(const ChildChange&) override; 580 579 virtual void removeAllEventListeners() override final; 581 582 virtual PassRefPtr<RenderStyle> customStyleForRenderer();583 580 584 581 void clearTabIndexExplicitlyIfNeeded(); -
trunk/Source/WebCore/dom/PseudoElement.cpp
r163079 r165542 71 71 } 72 72 73 PassRefPtr<RenderStyle> PseudoElement::customStyleForRenderer( )73 PassRefPtr<RenderStyle> PseudoElement::customStyleForRenderer(RenderStyle& parentStyle) 74 74 { 75 return m_hostElement->renderer()->getCachedPseudoStyle(m_pseudoId );75 return m_hostElement->renderer()->getCachedPseudoStyle(m_pseudoId, &parentStyle); 76 76 } 77 77 -
trunk/Source/WebCore/dom/PseudoElement.h
r162158 r165542 46 46 void clearHostElement() { m_hostElement = nullptr; } 47 47 48 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;48 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 49 49 virtual void didAttachRenderers() override; 50 50 virtual bool rendererIsNeeded(const RenderStyle&) override; -
trunk/Source/WebCore/html/HTMLOptGroupElement.cpp
r155795 r165542 97 97 // renderer like <optgroup> or if it doesn't allow children like <select>. 98 98 if (!m_style && parentNode()->renderStyle()) 99 updateNonRenderStyle( );99 updateNonRenderStyle(*parentNode()->renderStyle()); 100 100 } 101 101 … … 105 105 } 106 106 107 void HTMLOptGroupElement::updateNonRenderStyle( )107 void HTMLOptGroupElement::updateNonRenderStyle(RenderStyle& parentStyle) 108 108 { 109 m_style = document().ensureStyleResolver().styleForElement(this );109 m_style = document().ensureStyleResolver().styleForElement(this, &parentStyle); 110 110 } 111 111 … … 115 115 } 116 116 117 PassRefPtr<RenderStyle> HTMLOptGroupElement::customStyleForRenderer( )117 PassRefPtr<RenderStyle> HTMLOptGroupElement::customStyleForRenderer(RenderStyle& parentStyle) 118 118 { 119 119 // styleForRenderer is called whenever a new style should be associated 120 120 // with an Element so now is a good time to update our cached style. 121 updateNonRenderStyle( );121 updateNonRenderStyle(parentStyle); 122 122 return m_style; 123 123 } -
trunk/Source/WebCore/html/HTMLOptGroupElement.h
r162158 r165542 55 55 56 56 // <optgroup> never has a renderer so we manually manage a cached style. 57 void updateNonRenderStyle( );57 void updateNonRenderStyle(RenderStyle& parentStyle); 58 58 virtual RenderStyle* nonRendererStyle() const override; 59 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;59 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 60 60 61 61 void recalcSelectOptions(); -
trunk/Source/WebCore/html/HTMLOptionElement.cpp
r160599 r165542 95 95 // renderer like <optgroup> or if it doesn't allow children like <select>. 96 96 if (!m_style && parentNode()->renderStyle()) 97 updateNonRenderStyle( );97 updateNonRenderStyle(*parentNode()->renderStyle()); 98 98 } 99 99 … … 301 301 } 302 302 303 void HTMLOptionElement::updateNonRenderStyle( )304 { 305 m_style = document().ensureStyleResolver().styleForElement(this );303 void HTMLOptionElement::updateNonRenderStyle(RenderStyle& parentStyle) 304 { 305 m_style = document().ensureStyleResolver().styleForElement(this, &parentStyle); 306 306 } 307 307 … … 311 311 } 312 312 313 PassRefPtr<RenderStyle> HTMLOptionElement::customStyleForRenderer( )313 PassRefPtr<RenderStyle> HTMLOptionElement::customStyleForRenderer(RenderStyle& parentStyle) 314 314 { 315 315 // styleForRenderer is called whenever a new style should be associated 316 316 // with an Element so now is a good time to update our cached style. 317 updateNonRenderStyle( );317 updateNonRenderStyle(parentStyle); 318 318 return m_style; 319 319 } -
trunk/Source/WebCore/html/HTMLOptionElement.h
r162158 r165542 83 83 84 84 // <option> never has a renderer so we manually manage a cached style. 85 void updateNonRenderStyle( );85 void updateNonRenderStyle(RenderStyle& parentStyle); 86 86 virtual RenderStyle* nonRendererStyle() const override; 87 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;87 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 88 88 89 89 virtual void didRecalcStyle(Style::Change) override; -
trunk/Source/WebCore/html/HTMLTitleElement.cpp
r157854 r165542 28 28 #include "RenderStyle.h" 29 29 #include "StyleInheritedData.h" 30 #include "StyleResolver.h" 30 31 #include "Text.h" 31 32 #include "TextNodeTraversal.h" … … 86 87 direction = computedStyle->direction(); 87 88 else { 88 Ref<RenderStyle> style( styleForRenderer());89 Ref<RenderStyle> style(document().ensureStyleResolver().styleForElement(this, parentElement() ? parentElement()->renderStyle() : nullptr)); 89 90 direction = style.get().direction(); 90 91 } -
trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp
r164184 r165542 75 75 } 76 76 77 PassRefPtr<RenderStyle> TextControlInnerElement::customStyleForRenderer( )77 PassRefPtr<RenderStyle> TextControlInnerElement::customStyleForRenderer(RenderStyle&) 78 78 { 79 79 RenderTextControlSingleLine* parentRenderer = toRenderTextControlSingleLine(shadowHost()->renderer()); … … 123 123 } 124 124 125 PassRefPtr<RenderStyle> TextControlInnerTextElement::customStyleForRenderer( )125 PassRefPtr<RenderStyle> TextControlInnerTextElement::customStyleForRenderer(RenderStyle&) 126 126 { 127 127 RenderTextControl* parentRenderer = toRenderTextControl(shadowHost()->renderer()); -
trunk/Source/WebCore/html/shadow/TextControlInnerElements.h
r162158 r165542 51 51 protected: 52 52 TextControlInnerElement(Document&); 53 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;53 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 54 54 55 55 private: … … 68 68 TextControlInnerTextElement(Document&); 69 69 virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) override; 70 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;70 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 71 71 virtual bool isMouseFocusable() const override { return false; } 72 72 virtual bool isTextControlInnerTextElement() const override { return true; } -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp
r165377 r165542 35 35 #include "RenderBoxRegionInfo.h" 36 36 #include "RenderFlowThread.h" 37 #include "RenderIterator.h" 37 38 #include "RenderNamedFlowThread.h" 38 39 #include "RenderView.h" … … 350 351 } 351 352 352 PassRefPtr<RenderStyle> RenderNamedFlowFragment::computeStyleInRegion(const RenderObject* object) 353 { 354 ASSERT(object); 355 ASSERT(!object->isAnonymous()); 356 ASSERT(object->node() && object->node()->isElementNode()); 353 PassRefPtr<RenderStyle> RenderNamedFlowFragment::computeStyleInRegion(RenderElement& renderer, RenderStyle& parentStyle) 354 { 355 ASSERT(!renderer.isAnonymous()); 357 356 358 357 // FIXME: Region styling fails for pseudo-elements because the renderers don't have a node. 359 Element* element = toElement(object->node()); 360 RefPtr<RenderStyle> renderObjectRegionStyle = object->view().document().ensureStyleResolver().styleForElement(element, 0, DisallowStyleSharing, MatchAllRules, this); 358 RefPtr<RenderStyle> renderObjectRegionStyle = renderer.view().document().ensureStyleResolver().styleForElement(renderer.element(), &parentStyle, DisallowStyleSharing, MatchAllRules, this); 361 359 362 360 return renderObjectRegionStyle.release(); 363 361 } 364 362 365 void RenderNamedFlowFragment::computeChildrenStyleInRegion( const RenderElement* object)366 { 367 for ( RenderObject* child = object->firstChild(); child; child = child->nextSibling()) {368 369 auto it = m_renderObjectRegionStyle.find( child);363 void RenderNamedFlowFragment::computeChildrenStyleInRegion(RenderElement& renderer) 364 { 365 for (auto& child : childrenOfType<RenderObject>(renderer)) { 366 367 auto it = m_renderObjectRegionStyle.find(&child); 370 368 371 369 RefPtr<RenderStyle> childStyleInRegion; … … 375 373 objectRegionStyleCached = true; 376 374 } else { 377 if (child ->isAnonymous() || child->isInFlowRenderFlowThread())378 childStyleInRegion = RenderStyle::createAnonymousStyleWithDisplay(& object->style(), child->style().display());379 else if (child ->isText())380 childStyleInRegion = RenderStyle::clone(& object->style());375 if (child.isAnonymous() || child.isInFlowRenderFlowThread()) 376 childStyleInRegion = RenderStyle::createAnonymousStyleWithDisplay(&renderer.style(), child.style().display()); 377 else if (child.isText()) 378 childStyleInRegion = RenderStyle::clone(&renderer.style()); 381 379 else 382 childStyleInRegion = computeStyleInRegion( child);383 } 384 385 setObjectStyleInRegion( child, childStyleInRegion, objectRegionStyleCached);386 387 if (child ->isRenderElement())380 childStyleInRegion = computeStyleInRegion(toRenderElement(child), renderer.style()); 381 } 382 383 setObjectStyleInRegion(&child, childStyleInRegion, objectRegionStyleCached); 384 385 if (child.isRenderElement()) 388 386 computeChildrenStyleInRegion(toRenderElement(child)); 389 387 } … … 453 451 objectRegionStyleCached = true; 454 452 } else 455 objectStyleInRegion = computeStyleInRegion( object);453 objectStyleInRegion = computeStyleInRegion(*object, style()); 456 454 457 455 setObjectStyleInRegion(object, objectStyleInRegion, objectRegionStyleCached); 458 456 459 computeChildrenStyleInRegion( object);457 computeChildrenStyleInRegion(*object); 460 458 } 461 459 } -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h
r165377 r165542 123 123 virtual const char* renderName() const override { return "RenderNamedFlowFragment"; } 124 124 125 PassRefPtr<RenderStyle> computeStyleInRegion( const RenderObject*);126 void computeChildrenStyleInRegion( const RenderElement*);125 PassRefPtr<RenderStyle> computeStyleInRegion(RenderElement&, RenderStyle& parentStyle); 126 void computeChildrenStyleInRegion(RenderElement&); 127 127 void setObjectStyleInRegion(RenderObject*, PassRefPtr<RenderStyle>, bool objectRegionStyleCached); 128 128 -
trunk/Source/WebCore/style/StyleResolveTree.cpp
r165465 r165542 164 164 } 165 165 166 static PassRef<RenderStyle> styleForElement(Element& element, RenderStyle& parentStyle) 167 { 168 if (element.hasCustomStyleResolveCallbacks()) { 169 if (RefPtr<RenderStyle> style = element.customStyleForRenderer(parentStyle)) 170 return style.releaseNonNull(); 171 } 172 return element.document().ensureStyleResolver().styleForElement(&element, &parentStyle); 173 } 174 166 175 // Check the specific case of elements that are children of regions but are flowed into a flow thread themselves. 167 176 static bool elementInsideRegionNeedsRenderer(Element& element, const ContainerNode& renderingParentNode, RefPtr<RenderStyle>& style) … … 177 186 178 187 if (!style) 179 style = element.styleForRenderer();188 style = styleForElement(element, *renderingParentNode.renderStyle()); 180 189 181 190 // Children of this element will only be allowed to be flowed into other flow-threads if display is NOT none. … … 217 226 218 227 if (!style) 219 style = element.styleForRenderer();228 style = styleForElement(element, *renderingParentNode.renderStyle()); 220 229 221 230 RenderNamedFlowThread* parentFlowRenderer = 0; … … 662 671 Document& document = current.document(); 663 672 if (currentStyle && current.styleChangeType() != ReconstructRenderTree) { 664 newStyle = current.styleForRenderer();673 newStyle = styleForElement(current, *renderingParentNode.renderStyle()); 665 674 localChange = determineChange(currentStyle.get(), newStyle.get()); 666 675 } -
trunk/Source/WebCore/svg/SVGElement.cpp
r165045 r165542 769 769 } 770 770 771 PassRefPtr<RenderStyle> SVGElement::customStyleForRenderer( )771 PassRefPtr<RenderStyle> SVGElement::customStyleForRenderer(RenderStyle& parentStyle) 772 772 { 773 773 if (!correspondingElement()) 774 return document().ensureStyleResolver().styleForElement(this); 775 776 RenderStyle* style = 0; 777 if (Element* parent = parentOrShadowHostElement()) { 778 if (auto renderer = parent->renderer()) 779 style = &renderer->style(); 780 } 781 782 return document().ensureStyleResolver().styleForElement(correspondingElement(), style, DisallowStyleSharing); 774 return document().ensureStyleResolver().styleForElement(this, &parentStyle); 775 776 return document().ensureStyleResolver().styleForElement(correspondingElement(), &parentStyle, DisallowStyleSharing); 783 777 } 784 778 -
trunk/Source/WebCore/svg/SVGElement.h
r164856 r165542 113 113 static void synchronizeAllAnimatedSVGAttribute(SVGElement*); 114 114 115 virtual PassRefPtr<RenderStyle> customStyleForRenderer( ) override;115 virtual PassRefPtr<RenderStyle> customStyleForRenderer(RenderStyle& parentStyle) override; 116 116 117 117 static void synchronizeRequiredFeatures(SVGElement* contextElement);
Note:
See TracChangeset
for help on using the changeset viewer.