Changeset 152320 in webkit


Ignore:
Timestamp:
Jul 2, 2013 1:43:31 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[CSS Regions] Improve implementation of elements in region being flowed to another flow thread
https://bugs.webkit.org/show_bug.cgi?id=118300

Patch by Radu Stavila <stavila@adobe.com> on 2013-07-02
Reviewed by David Hyatt.

Source/WebCore:

Methods that must be const have been turned back into const. Code has been better organized.
Performance is better. Tests have been added to.

  • dom/Element.cpp:

(WebCore::Element::detach):
(WebCore::Element::setIsInsideRegion):
(WebCore::Element::isInsideRegion):
(WebCore::Element::shouldMoveToFlowThread):

  • dom/Element.h:
  • dom/ElementRareData.h:

(WebCore::ElementRareData::isInsideRegion):
(WebCore::ElementRareData::setIsInsideRegion):
(WebCore::ElementRareData::ElementRareData):

  • dom/Node.cpp:

(WebCore::Node::isRegisteredWithNamedFlow):

  • dom/Node.h:
  • dom/NodeRenderingContext.cpp:

(WebCore::NodeRenderingContext::parentRenderer):
(WebCore::NodeRenderingContext::shouldCreateRenderer):
(WebCore::NodeRenderingContext::elementInsideRegionNeedsRenderer):
(WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded):
(WebCore::NodeRenderingContext::createRendererForElementIfNeeded):

  • dom/NodeRenderingContext.h:
  • dom/PseudoElement.h:
  • dom/Text.cpp:

(WebCore::Text::textRendererIsNeeded):

  • dom/Text.h:
  • rendering/FlowThreadController.cpp:

(WebCore::FlowThreadController::unregisterNamedFlowContentNode):
(WebCore::FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow):

  • rendering/FlowThreadController.h:
  • rendering/RenderObject.h:
  • rendering/RenderRegion.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::shouldMoveToFlowThread):

  • svg/SVGElement.h:

LayoutTests:

  • fast/regions/flow-body-in-html.html:
  • fast/regions/region-content-flown-into-region-expected.html:
  • fast/regions/region-content-flown-into-region.html:
  • fast/regions/universal-selector-children-to-the-same-region.html:
Location:
trunk
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r152319 r152320  
     12013-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
    1132013-07-02  David Farler  <dfarler@apple.com>
    214
  • trunk/LayoutTests/fast/regions/flow-body-in-html.html

    r148865 r152320  
    11<html>
    22  <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>
    44    <style type="text/css">
    55      body {
    6       -webkit-flow-into: foo;
     6        -webkit-flow-into: foo;
    77      }
    88      html {
    9        -webkit-flow-from: foo;
     9        -webkit-flow-from: foo;
    1010      }
    1111    </style>
  • trunk/LayoutTests/fast/regions/region-content-flown-into-region-expected.html

    r148865 r152320  
    22    <head>
    33        <style type="text/css">
    4             div {
    5                 padding: 1px;
     4            .region {
     5                border:solid 1px red;
    66            }
    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;
    914            }
    1015        </style>
    1116    </head>
    1217    <body>
    13         <div class="region"><template>PASS r0: content that goes in the region.</template></div>
    14         <div class="region">
     18        <div class="region">PASS r0: content that goes in the region.</div>
     19        <div class="redirectRegion">
    1520            <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>
    1825            <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>
    1931        </div>
    20         <div class="region"><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>
    2133        <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>
    2234    </body>
  • trunk/LayoutTests/fast/regions/region-content-flown-into-region.html

    r148865 r152320  
    33        <title>74144 - [CSS Regions] Elements in a region should be assignable to a named flow</title>
    44        <style type="text/css">
    5             div {
    6                 padding: 1px;
    7             }
    85            .content {
    96                -webkit-flow-into: flow;
     
    118            .region {
    129                -webkit-flow-from: flow;
    13                 border:solid 1px #bbb;
     10                border:solid 1px red;
    1411            }
    1512
     
    1916            .redirectRegion {
    2017                -webkit-flow-from: redirectFlow;
    21                 border:solid 1px #bbb;
     18                border:solid 1px blue;
     19                margin-top: 10px;
     20                margin-bottom: 10px;
    2221            }
    2322
     
    2726            .redirectRegion2 {
    2827                -webkit-flow-from: redirectFlow2;
    29                 border:solid 1px #bbb;
     28                border:solid 1px green;
    3029            }
    3130
     
    3332                -webkit-flow-into: redirectToNowhere;
    3433            }
     34
     35            .displayNone {
     36                display: none;
     37            }
    3538        </style>
    36         <template class="content">PASS r0: content that goes in the region.</template>
    3739    </head>
    3840
    3941    <body>
     42        <div class="content">PASS r0: content that goes in the region.</div>
    4043        <div class="region">
    4144            FAIL: this should not be visible 1.
     
    5255                <div class="redirectContent">PASS r1: (enclosed in a div) content in the region that has flow-into. 2.
    5356                    <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>
    5558                </div>
    5659
     
    6164                FAIL: this should not be visible 5.
    6265
    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.
    6467                    <span class="redirectContent2">PASS r2: content that is already in a flow goes to another flow
    6568                        <span class="redirectContentToNowhere">FAIL: this should not be visible (redirected to nowhere) 3.</span>.
    6669                    </span>
    67                     .
    6870                </div>
    6971
     
    7880
    7981            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>
    80105        </div>
    81106
    82107        <div class="redirectRegion">
    83             FAIL: this should not be visible 10.
     108            FAIL: this should not be visible 14.
    84109        </div>
    85110
    86111        <div class="redirectRegion2">
    87             FAIL: this should not be visible 11.
     112            FAIL: this should not be visible 15.
    88113        </div>
    89114
  • trunk/LayoutTests/fast/regions/universal-selector-children-to-the-same-region.html

    r148865 r152320  
    44    <style type="text/css">
    55      .region > * {
    6       -webkit-flow-into: foo;
     6        -webkit-flow-into: foo;
    77      }
    88      .region {
    9        -webkit-flow-from: foo;
     9        -webkit-flow-from: foo;
    1010      }
    1111    </style>
  • trunk/Source/WebCore/ChangeLog

    r152318 r152320  
     12013-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
    1452013-07-02  Eric Carlson  <eric.carlson@apple.com>
    246
  • trunk/Source/WebCore/dom/Element.cpp

    r152197 r152320  
    14771477        data->resetComputedStyle();
    14781478        data->resetDynamicRestyleObservations();
     1479        data->setIsInsideRegion(false);
    14791480    }
    14801481
     
    24202421}
    24212422
     2423void Element::setIsInsideRegion(bool value)
     2424{
     2425    if (value == isInsideRegion())
     2426        return;
     2427
     2428    ensureElementRareData()->setIsInsideRegion(value);
     2429}
     2430
     2431bool Element::isInsideRegion() const
     2432{
     2433    return hasRareData() ? elementRareData()->isInsideRegion() : false;
     2434}
     2435
    24222436void Element::setRegionOversetState(RegionOversetState state)
    24232437{
     
    27772791}
    27782792
    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
     2795bool Element::shouldMoveToFlowThread(RenderStyle* styleToUse) const
     2796{
     2797    ASSERT(styleToUse);
    27852798
    27862799#if ENABLE(FULLSCREEN_API)
    2787     if (doc->webkitIsFullScreen() && doc->webkitCurrentFullScreenElement() == this)
     2800    if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == this)
    27882801        return false;
    27892802#endif
     
    27922805        return false;
    27932806
    2794     if (!cachedStyle)
    2795         cachedStyle = styleForRenderer();
    2796     if (!cachedStyle)
     2807    if (styleToUse->flowThread().isEmpty())
    27972808        return false;
    27982809
    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}
    28062812
    28072813const AtomicString& Element::webkitRegionOverset() const
  • trunk/Source/WebCore/dom/Element.h

    r151827 r152320  
    480480    bool isInCanvasSubtree() const;
    481481
     482    void setIsInsideRegion(bool);
     483    bool isInsideRegion() const;
     484
    482485    void setRegionOversetState(RegionOversetState);
    483486    RegionOversetState regionOversetState() const;
     
    633636
    634637    RenderRegion* renderRegion() const;
    635     virtual bool moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle);
     638    virtual bool shouldMoveToFlowThread(RenderStyle*) const;
     639   
    636640#if ENABLE(CSS_REGIONS)
    637641    const AtomicString& webkitRegionOverset() const;
  • trunk/Source/WebCore/dom/ElementRareData.h

    r151777 r152320  
    6060    bool isInCanvasSubtree() const { return m_isInCanvasSubtree; }
    6161    void setIsInCanvasSubtree(bool value) { m_isInCanvasSubtree = value; }
     62
     63    bool isInsideRegion() const { return m_isInsideRegion; }
     64    void setIsInsideRegion(bool value) { m_isInsideRegion = value; }
    6265
    6366    RegionOversetState regionOversetState() const { return m_regionOversetState; }
     
    160163    unsigned m_childrenAffectedByBackwardPositionalRules : 1;
    161164
     165    unsigned m_isInsideRegion : 1;
    162166    RegionOversetState m_regionOversetState;
    163167
     
    208212    , m_childrenAffectedByForwardPositionalRules(false)
    209213    , m_childrenAffectedByBackwardPositionalRules(false)
     214    , m_isInsideRegion(false)
    210215    , m_regionOversetState(RegionUndefined)
    211216    , m_minimumSizeForResizing(defaultMinimumSizeForResizing())
  • trunk/Source/WebCore/dom/Node.cpp

    r152290 r152320  
    6161#include "ExceptionCode.h"
    6262#include "ExceptionCodePlaceholder.h"
     63#include "FlowThreadController.h"
    6364#include "Frame.h"
    6465#include "FrameView.h"
     
    11241125}
    11251126
     1127bool Node::isRegisteredWithNamedFlow() const
     1128{
     1129    return document()->renderView()->flowThreadController()->isContentNodeRegisteredWithAnyNamedFlow(this);
     1130}
     1131
    11261132Element* Node::shadowHost() const
    11271133{
  • trunk/Source/WebCore/dom/Node.h

    r151839 r152320  
    277277    bool hasCustomStyleCallbacks() const { return getFlag(HasCustomStyleCallbacksFlag); }
    278278
     279    bool isRegisteredWithNamedFlow() const;
     280
    279281    bool hasSyntheticAttrChildNodes() const { return getFlag(HasSyntheticAttrChildNodesFlag); }
    280282    void setHasSyntheticAttrChildNodes(bool flag) { setFlag(flag, HasSyntheticAttrChildNodesFlag); }
  • trunk/Source/WebCore/dom/NodeRenderingContext.cpp

    r151647 r152320  
    156156}
    157157
    158 RenderObject* NodeRenderingContext::parentRenderer()
     158RenderObject* NodeRenderingContext::parentRenderer() const
    159159{
    160160    if (RenderObject* renderer = m_node->renderer())
     
    178178        return m_parentFlowRenderer;
    179179
    180     if (m_node->isElementNode() && toElement(m_node)->moveToFlowThreadIsNeeded(m_style)) {
    181         moveToFlowThread();
    182         return m_parentFlowRenderer;
    183     }
    184 
    185180    return m_renderingParent ? m_renderingParent->renderer() : 0;
    186181}
    187182
    188 bool NodeRenderingContext::shouldCreateRenderer()
     183bool NodeRenderingContext::shouldCreateRenderer() const
    189184{
    190185    if (!m_node->document()->shouldCreateRenderers())
     
    195190    if (!parentRenderer)
    196191        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;
    208194    if (!m_renderingParent->childShouldCreateRenderer(*this))
    209195        return false;
     
    211197}
    212198
     199// Check the specific case of elements that are children of regions but are flowed into a flow thread themselves.
     200bool 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
    213221void NodeRenderingContext::moveToFlowThreadIfNeeded()
    214222{
    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
    231228    ASSERT(m_node->document()->renderView());
    232229    FlowThreadController* flowThreadController = m_node->document()->renderView()->flowThreadController();
     
    251248    Element* element = toElement(m_node);
    252249
    253     if (!shouldCreateRenderer())
    254         return;
     250    element->setIsInsideRegion(false);
     251
     252    if (!shouldCreateRenderer() && !elementInsideRegionNeedsRenderer())
     253        return;
     254
    255255    if (!m_style)
    256256        m_style = element->styleForRenderer();
  • trunk/Source/WebCore/dom/NodeRenderingContext.h

    r151282 r152320  
    5757    ContainerNode* parentNodeForRenderingAndStyle() const;
    5858    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;
    6060    RenderObject* nextRenderer() const;
    6161    RenderObject* previousRenderer() const;
     
    6868
    6969private:
    70     bool shouldCreateRenderer();
    71     void moveToFlowThread();
     70    bool shouldCreateRenderer() const;
    7271    void moveToFlowThreadIfNeeded();
     72    bool elementInsideRegionNeedsRenderer();
    7373
    7474    Node* m_node;
  • trunk/Source/WebCore/dom/PseudoElement.h

    r151282 r152320  
    4949    // As per http://dev.w3.org/csswg/css3-regions/#flow-into, pseudo-elements such as ::first-line, ::first-letter, ::before or ::after
    5050    // 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; }
    5652
    5753    virtual bool canStartSelection() const OVERRIDE { return false; }
  • trunk/Source/WebCore/dom/Text.cpp

    r151282 r152320  
    200200}
    201201
    202 bool Text::textRendererIsNeeded(NodeRenderingContext& context)
     202bool Text::textRendererIsNeeded(const NodeRenderingContext& context)
    203203{
    204204    if (isEditingText())
  • trunk/Source/WebCore/dom/Text.h

    r151282 r152320  
    4747    void recalcTextStyle(StyleChange);
    4848    void createTextRendererIfNeeded();
    49     bool textRendererIsNeeded(NodeRenderingContext&);
     49    bool textRendererIsNeeded(const NodeRenderingContext&);
    5050    RenderText* createTextRenderer(RenderArena*, RenderStyle*);
    5151    void updateTextRenderer(unsigned offsetOfReplacedData, unsigned lengthOfReplacedData);
  • trunk/Source/WebCore/rendering/FlowThreadController.cpp

    r148865 r152320  
    119119{
    120120    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);
    122122    ASSERT(it != m_mapNamedFlowContentNodes.end());
    123123    ASSERT(it->value);
     
    228228}
    229229
    230 bool FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow(Node* contentNode) const
     230bool FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow(const Node* contentNode) const
    231231{
    232232    return m_mapNamedFlowContentNodes.contains(contentNode);
  • trunk/Source/WebCore/rendering/FlowThreadController.h

    r148865 r152320  
    6767    void registerNamedFlowContentNode(Node*, RenderNamedFlowThread*);
    6868    void unregisterNamedFlowContentNode(Node*);
    69     bool isContentNodeRegisteredWithAnyNamedFlow(Node*) const;
     69    bool isContentNodeRegisteredWithAnyNamedFlow(const Node*) const;
    7070
    7171    bool hasFlowThreadsWithAutoLogicalHeightRegions() const { return m_flowThreadsWithAutoLogicalHeightRegions; }
     
    9393    OwnPtr<RenderNamedFlowThreadList> m_renderNamedFlowThreadList;
    9494    // maps a content node to its render flow thread.
    95     HashMap<Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes;
     95    HashMap<const Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes;
    9696};
    9797
  • trunk/Source/WebCore/rendering/RenderObject.h

    r152293 r152320  
    253253    //////////////////////////////////////////
    254254    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).
    256255    virtual bool canHaveGeneratedChildren() const;
    257256    virtual bool isChildAllowed(RenderObject*, RenderStyle*) const { return true; }
  • trunk/Source/WebCore/rendering/RenderRegion.h

    r152281 r152320  
    156156
    157157    virtual bool canHaveChildren() const OVERRIDE { return false; }
    158     virtual bool canDOMChildrenHaveRenderParent() const OVERRIDE { return true; }
    159158    virtual bool canHaveGeneratedChildren() const OVERRIDE { return true; }
    160159
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r152299 r152320  
    461461}
    462462
    463 bool SVGElement::moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle)
     463bool SVGElement::shouldMoveToFlowThread(RenderStyle* styleToUse) const
    464464{
    465465    // 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);
    467467}
    468468
  • trunk/Source/WebCore/svg/SVGElement.h

    r152299 r152320  
    121121    virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture) OVERRIDE;
    122122
    123     virtual bool moveToFlowThreadIsNeeded(RefPtr<RenderStyle>& cachedStyle) OVERRIDE;
     123    virtual bool shouldMoveToFlowThread(RenderStyle*) const OVERRIDE;
    124124
    125125protected:
Note: See TracChangeset for help on using the changeset viewer.