Changeset 152320 in webkit
- Timestamp:
- Jul 2, 2013 1:43:31 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r152319 r152320 1 2013-07-02 Radu Stavila <stavila@adobe.com> 2 3 [CSS Regions] Improve implementation of elements in region being flowed to another flow thread 4 https://bugs.webkit.org/show_bug.cgi?id=118300 5 6 Reviewed by David Hyatt. 7 8 * fast/regions/flow-body-in-html.html: 9 * fast/regions/region-content-flown-into-region-expected.html: 10 * fast/regions/region-content-flown-into-region.html: 11 * fast/regions/universal-selector-children-to-the-same-region.html: 12 1 13 2013-07-02 David Farler <dfarler@apple.com> 2 14 -
trunk/LayoutTests/fast/regions/flow-body-in-html.html
r148865 r152320 1 1 <html> 2 2 <head> 3 <title> 103685 - [CSS Regions] Universal child selector on region breaks the rendering of its content</title>3 <title>74144 - [CSS Regions] Elements in a region should be assignable to a named flow</title> 4 4 <style type="text/css"> 5 5 body { 6 -webkit-flow-into: foo;6 -webkit-flow-into: foo; 7 7 } 8 8 html { 9 -webkit-flow-from: foo;9 -webkit-flow-from: foo; 10 10 } 11 11 </style> -
trunk/LayoutTests/fast/regions/region-content-flown-into-region-expected.html
r148865 r152320 2 2 <head> 3 3 <style type="text/css"> 4 div{5 padding: 1px;4 .region { 5 border:solid 1px red; 6 6 } 7 .region { 8 border:solid 1px #bbb; 7 .redirectRegion { 8 border: solid 1px blue; 9 margin-top: 10px; 10 margin-bottom: 10px; 11 } 12 .redirectRegion2 { 13 border:solid 1px green; 9 14 } 10 15 </style> 11 16 </head> 12 17 <body> 13 <div class="region"> <template>PASS r0: content that goes in the region.</template></div>14 <div class="re gion">18 <div class="region">PASS r0: content that goes in the region.</div> 19 <div class="redirectRegion"> 15 20 <div>PASS r1: content in the region that has flow-into. 1.</div> 16 <div>PASS r1: (enclosed in a div) content in the region that has flow-into. 2. <b>PASS r1: (enclosed in a div) content in the region that has flow-into. 3.</b>.</div> 17 <div>PASS r1: (enclosed in a div) content in the region that has flow-into. 4 .</div> 21 <div>PASS r1: (enclosed in a div) content in the region that has flow-into. 2. 22 <b><br/>PASS r1: (b enclosed in the div above) content in the region that has flow-into. 3.</b> 23 </div> 24 <div>PASS r1: (enclosed in a div) content in the region that has flow-into. 4.</div> 18 25 <div>PASS r1: content in the region that has flow-into. 5.</div> 26 <svg class="redirectContent" xmlns="http://www.w3.org/2000/svg" version="1.1" height="70"> 27 <text x="0" y="15">PASS: SVG text</text> 28 <text x="0" y="30">PASS: SVG text redirected to a flow without regions. only svg root elements are directly collected by a render flow thread.</text> 29 <text x="0" y="45">PASS: SVG text redirected to a flow with regions. only svg root elements are directly collected by a render flow thread.</text> 30 </svg> 19 31 </div> 20 <div class="re gion"><span>PASS r2: content that is already in a flow goes to another flow .</span></div>32 <div class="redirectRegion2"><span>PASS r2: content that is already in a flow goes to another flow .</span></div> 21 33 <p><a href="https://bugs.webkit.org/show_bug.cgi?id=74144">Bug 74144</a> - [CSS Regions] Elements in a region should be assignable to a named flow</p> 22 34 </body> -
trunk/LayoutTests/fast/regions/region-content-flown-into-region.html
r148865 r152320 3 3 <title>74144 - [CSS Regions] Elements in a region should be assignable to a named flow</title> 4 4 <style type="text/css"> 5 div {6 padding: 1px;7 }8 5 .content { 9 6 -webkit-flow-into: flow; … … 11 8 .region { 12 9 -webkit-flow-from: flow; 13 border:solid 1px #bbb;10 border:solid 1px red; 14 11 } 15 12 … … 19 16 .redirectRegion { 20 17 -webkit-flow-from: redirectFlow; 21 border:solid 1px #bbb; 18 border:solid 1px blue; 19 margin-top: 10px; 20 margin-bottom: 10px; 22 21 } 23 22 … … 27 26 .redirectRegion2 { 28 27 -webkit-flow-from: redirectFlow2; 29 border:solid 1px #bbb;28 border:solid 1px green; 30 29 } 31 30 … … 33 32 -webkit-flow-into: redirectToNowhere; 34 33 } 34 35 .displayNone { 36 display: none; 37 } 35 38 </style> 36 <template class="content">PASS r0: content that goes in the region.</template>37 39 </head> 38 40 39 41 <body> 42 <div class="content">PASS r0: content that goes in the region.</div> 40 43 <div class="region"> 41 44 FAIL: this should not be visible 1. … … 52 55 <div class="redirectContent">PASS r1: (enclosed in a div) content in the region that has flow-into. 2. 53 56 <div class="redirectContentToNowhere">FAIL: this should not be visible (redirected to nowhere) 2.</div> 54 <b> PASS r1: (enclosed in a div) content in the region that has flow-into. 3.</b>.57 <b><br/>PASS r1: (b enclosed in the div above) content in the region that has flow-into. 3.</b> 55 58 </div> 56 59 … … 61 64 FAIL: this should not be visible 5. 62 65 63 <div class="redirectContent">PASS r1: (enclosed in a div) content in the region that has flow-into. 4 66 <div class="redirectContent">PASS r1: (enclosed in a div) content in the region that has flow-into. 4. 64 67 <span class="redirectContent2">PASS r2: content that is already in a flow goes to another flow 65 68 <span class="redirectContentToNowhere">FAIL: this should not be visible (redirected to nowhere) 3.</span>. 66 69 </span> 67 .68 70 </div> 69 71 … … 78 80 79 81 FAIL: this should not be visible 9. 82 83 <div> 84 FAIL: this should not be visible 10. 85 86 <svg class="redirectContent" xmlns="http://www.w3.org/2000/svg" version="1.1" height="70"> 87 <text x="0" y="15">PASS: SVG text</text> 88 <text x="0" y="30" class="redirectContentToNowhere">PASS: SVG text redirected to a flow without regions. only svg root elements are directly collected by a render flow thread.</text> 89 <text x="0" y="45" class="redirectContent2">PASS: SVG text redirected to a flow with regions. only svg root elements are directly collected by a render flow thread.</text> 90 </svg> 91 92 FAIL: this should not be visible 11. 93 </div> 94 95 <div class="displayNone"> 96 FAIL: this should not be visible 12. 97 98 <div class="redirectContent">FAIL r1: (enclosed in a div) content in the region that has flow-into but display:none 99 <div class="redirectContentToNowhere">FAIL: this should not be visible (redirected to nowhere AND display:none)</div> 100 <b><br/>FAIL r1: (b enclosed in the div above) content in the region that has flow-into but display:none</b> 101 </div> 102 103 FAIL: this should not be visible 13. 104 </div> 80 105 </div> 81 106 82 107 <div class="redirectRegion"> 83 FAIL: this should not be visible 1 0.108 FAIL: this should not be visible 14. 84 109 </div> 85 110 86 111 <div class="redirectRegion2"> 87 FAIL: this should not be visible 1 1.112 FAIL: this should not be visible 15. 88 113 </div> 89 114 -
trunk/LayoutTests/fast/regions/universal-selector-children-to-the-same-region.html
r148865 r152320 4 4 <style type="text/css"> 5 5 .region > * { 6 -webkit-flow-into: foo;6 -webkit-flow-into: foo; 7 7 } 8 8 .region { 9 -webkit-flow-from: foo;9 -webkit-flow-from: foo; 10 10 } 11 11 </style> -
trunk/Source/WebCore/ChangeLog
r152318 r152320 1 2013-07-02 Radu Stavila <stavila@adobe.com> 2 3 [CSS Regions] Improve implementation of elements in region being flowed to another flow thread 4 https://bugs.webkit.org/show_bug.cgi?id=118300 5 6 Reviewed by David Hyatt. 7 8 Methods that must be const have been turned back into const. Code has been better organized. 9 Performance is better. Tests have been added to. 10 11 * dom/Element.cpp: 12 (WebCore::Element::detach): 13 (WebCore::Element::setIsInsideRegion): 14 (WebCore::Element::isInsideRegion): 15 (WebCore::Element::shouldMoveToFlowThread): 16 * dom/Element.h: 17 * dom/ElementRareData.h: 18 (WebCore::ElementRareData::isInsideRegion): 19 (WebCore::ElementRareData::setIsInsideRegion): 20 (WebCore::ElementRareData::ElementRareData): 21 * dom/Node.cpp: 22 (WebCore::Node::isRegisteredWithNamedFlow): 23 * dom/Node.h: 24 * dom/NodeRenderingContext.cpp: 25 (WebCore::NodeRenderingContext::parentRenderer): 26 (WebCore::NodeRenderingContext::shouldCreateRenderer): 27 (WebCore::NodeRenderingContext::elementInsideRegionNeedsRenderer): 28 (WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded): 29 (WebCore::NodeRenderingContext::createRendererForElementIfNeeded): 30 * dom/NodeRenderingContext.h: 31 * dom/PseudoElement.h: 32 * dom/Text.cpp: 33 (WebCore::Text::textRendererIsNeeded): 34 * dom/Text.h: 35 * rendering/FlowThreadController.cpp: 36 (WebCore::FlowThreadController::unregisterNamedFlowContentNode): 37 (WebCore::FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow): 38 * rendering/FlowThreadController.h: 39 * rendering/RenderObject.h: 40 * rendering/RenderRegion.h: 41 * svg/SVGElement.cpp: 42 (WebCore::SVGElement::shouldMoveToFlowThread): 43 * svg/SVGElement.h: 44 1 45 2013-07-02 Eric Carlson <eric.carlson@apple.com> 2 46 -
trunk/Source/WebCore/dom/Element.cpp
r152197 r152320 1477 1477 data->resetComputedStyle(); 1478 1478 data->resetDynamicRestyleObservations(); 1479 data->setIsInsideRegion(false); 1479 1480 } 1480 1481 … … 2420 2421 } 2421 2422 2423 void Element::setIsInsideRegion(bool value) 2424 { 2425 if (value == isInsideRegion()) 2426 return; 2427 2428 ensureElementRareData()->setIsInsideRegion(value); 2429 } 2430 2431 bool Element::isInsideRegion() const 2432 { 2433 return hasRareData() ? elementRareData()->isInsideRegion() : false; 2434 } 2435 2422 2436 void Element::setRegionOversetState(RegionOversetState state) 2423 2437 { … … 2777 2791 } 2778 2792 2779 bool Element::moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle) 2780 { 2781 Document* doc = document(); 2782 2783 if (!doc->cssRegionsEnabled()) 2784 return false; 2793 #if ENABLE(CSS_REGIONS) 2794 2795 bool Element::shouldMoveToFlowThread(RenderStyle* styleToUse) const 2796 { 2797 ASSERT(styleToUse); 2785 2798 2786 2799 #if ENABLE(FULLSCREEN_API) 2787 if (doc ->webkitIsFullScreen() && doc->webkitCurrentFullScreenElement() == this)2800 if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == this) 2788 2801 return false; 2789 2802 #endif … … 2792 2805 return false; 2793 2806 2794 if (!cachedStyle) 2795 cachedStyle = styleForRenderer(); 2796 if (!cachedStyle) 2807 if (styleToUse->flowThread().isEmpty()) 2797 2808 return false; 2798 2809 2799 if (cachedStyle->flowThread().isEmpty()) 2800 return false; 2801 2802 return !document()->renderView()->flowThreadController()->isContentNodeRegisteredWithAnyNamedFlow(this); 2803 } 2804 2805 #if ENABLE(CSS_REGIONS) 2810 return !isRegisteredWithNamedFlow(); 2811 } 2806 2812 2807 2813 const AtomicString& Element::webkitRegionOverset() const -
trunk/Source/WebCore/dom/Element.h
r151827 r152320 480 480 bool isInCanvasSubtree() const; 481 481 482 void setIsInsideRegion(bool); 483 bool isInsideRegion() const; 484 482 485 void setRegionOversetState(RegionOversetState); 483 486 RegionOversetState regionOversetState() const; … … 633 636 634 637 RenderRegion* renderRegion() const; 635 virtual bool moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle); 638 virtual bool shouldMoveToFlowThread(RenderStyle*) const; 639 636 640 #if ENABLE(CSS_REGIONS) 637 641 const AtomicString& webkitRegionOverset() const; -
trunk/Source/WebCore/dom/ElementRareData.h
r151777 r152320 60 60 bool isInCanvasSubtree() const { return m_isInCanvasSubtree; } 61 61 void setIsInCanvasSubtree(bool value) { m_isInCanvasSubtree = value; } 62 63 bool isInsideRegion() const { return m_isInsideRegion; } 64 void setIsInsideRegion(bool value) { m_isInsideRegion = value; } 62 65 63 66 RegionOversetState regionOversetState() const { return m_regionOversetState; } … … 160 163 unsigned m_childrenAffectedByBackwardPositionalRules : 1; 161 164 165 unsigned m_isInsideRegion : 1; 162 166 RegionOversetState m_regionOversetState; 163 167 … … 208 212 , m_childrenAffectedByForwardPositionalRules(false) 209 213 , m_childrenAffectedByBackwardPositionalRules(false) 214 , m_isInsideRegion(false) 210 215 , m_regionOversetState(RegionUndefined) 211 216 , m_minimumSizeForResizing(defaultMinimumSizeForResizing()) -
trunk/Source/WebCore/dom/Node.cpp
r152290 r152320 61 61 #include "ExceptionCode.h" 62 62 #include "ExceptionCodePlaceholder.h" 63 #include "FlowThreadController.h" 63 64 #include "Frame.h" 64 65 #include "FrameView.h" … … 1124 1125 } 1125 1126 1127 bool Node::isRegisteredWithNamedFlow() const 1128 { 1129 return document()->renderView()->flowThreadController()->isContentNodeRegisteredWithAnyNamedFlow(this); 1130 } 1131 1126 1132 Element* Node::shadowHost() const 1127 1133 { -
trunk/Source/WebCore/dom/Node.h
r151839 r152320 277 277 bool hasCustomStyleCallbacks() const { return getFlag(HasCustomStyleCallbacksFlag); } 278 278 279 bool isRegisteredWithNamedFlow() const; 280 279 281 bool hasSyntheticAttrChildNodes() const { return getFlag(HasSyntheticAttrChildNodesFlag); } 280 282 void setHasSyntheticAttrChildNodes(bool flag) { setFlag(flag, HasSyntheticAttrChildNodesFlag); } -
trunk/Source/WebCore/dom/NodeRenderingContext.cpp
r151647 r152320 156 156 } 157 157 158 RenderObject* NodeRenderingContext::parentRenderer() 158 RenderObject* NodeRenderingContext::parentRenderer() const 159 159 { 160 160 if (RenderObject* renderer = m_node->renderer()) … … 178 178 return m_parentFlowRenderer; 179 179 180 if (m_node->isElementNode() && toElement(m_node)->moveToFlowThreadIsNeeded(m_style)) {181 moveToFlowThread();182 return m_parentFlowRenderer;183 }184 185 180 return m_renderingParent ? m_renderingParent->renderer() : 0; 186 181 } 187 182 188 bool NodeRenderingContext::shouldCreateRenderer() 183 bool NodeRenderingContext::shouldCreateRenderer() const 189 184 { 190 185 if (!m_node->document()->shouldCreateRenderers()) … … 195 190 if (!parentRenderer) 196 191 return false; 197 if (!parentRenderer->canHaveChildren() 198 && !(m_node->isPseudoElement() && parentRenderer->isRenderRegion())) { 199 if (parentRenderer->canDOMChildrenHaveRenderParent()) { 200 // In a region, only the children that need to be in a flow thread should have a renderer. 201 bool shouldBeInNamedFlow = m_node->isElementNode() && toElement(m_node)->moveToFlowThreadIsNeeded(m_style); 202 if (!shouldBeInNamedFlow) 203 return false; 204 } else 205 return false; 206 } 207 192 if (!parentRenderer->canHaveChildren() && !(m_node->isPseudoElement() && parentRenderer->canHaveGeneratedChildren())) 193 return false; 208 194 if (!m_renderingParent->childShouldCreateRenderer(*this)) 209 195 return false; … … 211 197 } 212 198 199 // Check the specific case of elements that are children of regions but are flowed into a flow thread themselves. 200 bool NodeRenderingContext::elementInsideRegionNeedsRenderer() 201 { 202 Element* element = toElement(m_node); 203 bool elementInsideRegionNeedsRenderer = false; 204 RenderObject* parentRenderer = this->parentRenderer(); 205 if ((parentRenderer && !parentRenderer->canHaveChildren() && parentRenderer->isRenderRegion()) 206 || (!parentRenderer && element->parentElement() && element->parentElement()->isInsideRegion())) { 207 208 if (!m_style) 209 m_style = element->styleForRenderer(); 210 211 elementInsideRegionNeedsRenderer = element->shouldMoveToFlowThread(m_style.get()); 212 213 // Children of this element will only be allowed to be flowed into other flow-threads if display is NOT none. 214 if (element->rendererIsNeeded(*this)) 215 element->setIsInsideRegion(true); 216 } 217 218 return elementInsideRegionNeedsRenderer; 219 } 220 213 221 void NodeRenderingContext::moveToFlowThreadIfNeeded() 214 222 { 215 ASSERT(m_node->isElementNode()); 216 217 if (!toElement(m_node)->moveToFlowThreadIsNeeded(m_style)) 218 return; 219 220 moveToFlowThread(); 221 } 222 223 void NodeRenderingContext::moveToFlowThread() 224 { 225 ASSERT(m_node->isElementNode()); 226 ASSERT(toElement(m_node)->moveToFlowThreadIsNeeded(m_style)); 227 228 if (!m_style) 229 m_style = toElement(m_node)->styleForRenderer(); 230 ASSERT(m_style); 223 Element* element = toElement(m_node); 224 225 if (!element->shouldMoveToFlowThread(m_style.get())) 226 return; 227 231 228 ASSERT(m_node->document()->renderView()); 232 229 FlowThreadController* flowThreadController = m_node->document()->renderView()->flowThreadController(); … … 251 248 Element* element = toElement(m_node); 252 249 253 if (!shouldCreateRenderer()) 254 return; 250 element->setIsInsideRegion(false); 251 252 if (!shouldCreateRenderer() && !elementInsideRegionNeedsRenderer()) 253 return; 254 255 255 if (!m_style) 256 256 m_style = element->styleForRenderer(); -
trunk/Source/WebCore/dom/NodeRenderingContext.h
r151282 r152320 57 57 ContainerNode* parentNodeForRenderingAndStyle() const; 58 58 bool resetStyleInheritance() const; 59 RenderObject* parentRenderer() ; // the renderer that will be the parent for this node's renderer. In the case of RenderFlowThreads, it may need to create it.59 RenderObject* parentRenderer() const; 60 60 RenderObject* nextRenderer() const; 61 61 RenderObject* previousRenderer() const; … … 68 68 69 69 private: 70 bool shouldCreateRenderer(); 71 void moveToFlowThread(); 70 bool shouldCreateRenderer() const; 72 71 void moveToFlowThreadIfNeeded(); 72 bool elementInsideRegionNeedsRenderer(); 73 73 74 74 Node* m_node; -
trunk/Source/WebCore/dom/PseudoElement.h
r151282 r152320 49 49 // As per http://dev.w3.org/csswg/css3-regions/#flow-into, pseudo-elements such as ::first-line, ::first-letter, ::before or ::after 50 50 // cannot be directly collected into a named flow. 51 virtual bool moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle) OVERRIDE 52 { 53 UNUSED_PARAM(cachedStyle); 54 return false; 55 } 51 virtual bool shouldMoveToFlowThread(RenderStyle*) const OVERRIDE { return false; } 56 52 57 53 virtual bool canStartSelection() const OVERRIDE { return false; } -
trunk/Source/WebCore/dom/Text.cpp
r151282 r152320 200 200 } 201 201 202 bool Text::textRendererIsNeeded( NodeRenderingContext& context)202 bool Text::textRendererIsNeeded(const NodeRenderingContext& context) 203 203 { 204 204 if (isEditingText()) -
trunk/Source/WebCore/dom/Text.h
r151282 r152320 47 47 void recalcTextStyle(StyleChange); 48 48 void createTextRendererIfNeeded(); 49 bool textRendererIsNeeded( NodeRenderingContext&);49 bool textRendererIsNeeded(const NodeRenderingContext&); 50 50 RenderText* createTextRenderer(RenderArena*, RenderStyle*); 51 51 void updateTextRenderer(unsigned offsetOfReplacedData, unsigned lengthOfReplacedData); -
trunk/Source/WebCore/rendering/FlowThreadController.cpp
r148865 r152320 119 119 { 120 120 ASSERT(contentNode && contentNode->isElementNode()); 121 HashMap< Node*, RenderNamedFlowThread*>::iterator it = m_mapNamedFlowContentNodes.find(contentNode);121 HashMap<const Node*, RenderNamedFlowThread*>::iterator it = m_mapNamedFlowContentNodes.find(contentNode); 122 122 ASSERT(it != m_mapNamedFlowContentNodes.end()); 123 123 ASSERT(it->value); … … 228 228 } 229 229 230 bool FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow( Node* contentNode) const230 bool FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow(const Node* contentNode) const 231 231 { 232 232 return m_mapNamedFlowContentNodes.contains(contentNode); -
trunk/Source/WebCore/rendering/FlowThreadController.h
r148865 r152320 67 67 void registerNamedFlowContentNode(Node*, RenderNamedFlowThread*); 68 68 void unregisterNamedFlowContentNode(Node*); 69 bool isContentNodeRegisteredWithAnyNamedFlow( Node*) const;69 bool isContentNodeRegisteredWithAnyNamedFlow(const Node*) const; 70 70 71 71 bool hasFlowThreadsWithAutoLogicalHeightRegions() const { return m_flowThreadsWithAutoLogicalHeightRegions; } … … 93 93 OwnPtr<RenderNamedFlowThreadList> m_renderNamedFlowThreadList; 94 94 // maps a content node to its render flow thread. 95 HashMap< Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes;95 HashMap<const Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes; 96 96 }; 97 97 -
trunk/Source/WebCore/rendering/RenderObject.h
r152293 r152320 253 253 ////////////////////////////////////////// 254 254 virtual bool canHaveChildren() const { return virtualChildren(); } 255 virtual bool canDOMChildrenHaveRenderParent() const { return false; } // Even if this render object can't have render children, the children in the DOM tree may have a render parent (that is different from this object).256 255 virtual bool canHaveGeneratedChildren() const; 257 256 virtual bool isChildAllowed(RenderObject*, RenderStyle*) const { return true; } -
trunk/Source/WebCore/rendering/RenderRegion.h
r152281 r152320 156 156 157 157 virtual bool canHaveChildren() const OVERRIDE { return false; } 158 virtual bool canDOMChildrenHaveRenderParent() const OVERRIDE { return true; }159 158 virtual bool canHaveGeneratedChildren() const OVERRIDE { return true; } 160 159 -
trunk/Source/WebCore/svg/SVGElement.cpp
r152299 r152320 461 461 } 462 462 463 bool SVGElement:: moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle)463 bool SVGElement::shouldMoveToFlowThread(RenderStyle* styleToUse) const 464 464 { 465 465 // Allow only svg root elements to be directly collected by a render flow thread. 466 return parentNode() && !parentNode()->isSVGElement() && hasTagName(SVGNames::svgTag) && Element:: moveToFlowThreadIsNeeded(cachedStyle);466 return parentNode() && !parentNode()->isSVGElement() && hasTagName(SVGNames::svgTag) && Element::shouldMoveToFlowThread(styleToUse); 467 467 } 468 468 -
trunk/Source/WebCore/svg/SVGElement.h
r152299 r152320 121 121 virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture) OVERRIDE; 122 122 123 virtual bool moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle)OVERRIDE;123 virtual bool shouldMoveToFlowThread(RenderStyle*) const OVERRIDE; 124 124 125 125 protected:
Note: See TracChangeset
for help on using the changeset viewer.