Title: [156250] trunk/Source/WebCore
Revision
156250
Author
[email protected]
Date
2013-09-22 14:23:48 -0700 (Sun, 22 Sep 2013)

Log Message

CTTE: RenderNamedFlowThread and FlowThreadController should operate on Elements, not Nodes
https://bugs.webkit.org/show_bug.cgi?id=121768

Reviewed by Andreas Kling.

* dom/Element.cpp:
(WebCore::Element::unregisterNamedFlowContentElement):
(WebCore::Element::shouldMoveToFlowThread):
(WebCore::Element::clearStyleDerivedDataBeforeDetachingRenderer):
* dom/Element.h:
Update to new names and to pass this as a reference to the FlowThreadController.

* dom/Node.cpp:
* dom/Node.h:
Move isRegisteredWithNamedFlow() to Element.

* dom/WebKitNamedFlow.cpp:
(WebCore::WebKitNamedFlow::getRegionsByContent):
(WebCore::WebKitNamedFlow::getRegions):
(WebCore::WebKitNamedFlow::getContent):
Update for contentNodes() -> contentElements() name change. Modernize the code a bit
as well.

* rendering/FlowThreadController.cpp:
(WebCore::FlowThreadController::registerNamedFlowContentElement):
(WebCore::FlowThreadController::unregisterNamedFlowContentElement):
(WebCore::FlowThreadController::isContentElementRegisteredWithAnyNamedFlow):
* rendering/FlowThreadController.h:
Change the Node* -> RenderNamedFlowThread* map to a Element* -> RenderNamedFlowThread*. Update
functions taking Node*s to take Element&s.

* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::~RenderNamedFlowThread):
(WebCore::RenderNamedFlowThread::clearContentElements):
(WebCore::RenderNamedFlowThread::registerNamedFlowContentElement):
(WebCore::RenderNamedFlowThread::unregisterNamedFlowContentElement):
(WebCore::RenderNamedFlowThread::hasContentElement):
(WebCore::isContainedInElements):
(WebCore::nextNodeInsideContentElement):
(WebCore::RenderNamedFlowThread::getRanges):
* rendering/RenderNamedFlowThread.h:
Change the NamedFlowContent set to store Elements rather than Nodes. Like with FlowThreadController,
update registration functions to take Element&s instead of Node*s, removing asserts.
        
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::setRegionObjectsRegionStyle):
Update for new names.

* style/StyleResolveTree.cpp:
(WebCore::Style::moveToFlowThreadIfNeeded):
Pass the Element and RenderNamedFlowThread as references.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (156249 => 156250)


--- trunk/Source/WebCore/ChangeLog	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/ChangeLog	2013-09-22 21:23:48 UTC (rev 156250)
@@ -1,3 +1,57 @@
+2013-09-22  Sam Weinig  <[email protected]>
+
+        CTTE: RenderNamedFlowThread and FlowThreadController should operate on Elements, not Nodes
+        https://bugs.webkit.org/show_bug.cgi?id=121768
+
+        Reviewed by Andreas Kling.
+
+        * dom/Element.cpp:
+        (WebCore::Element::unregisterNamedFlowContentElement):
+        (WebCore::Element::shouldMoveToFlowThread):
+        (WebCore::Element::clearStyleDerivedDataBeforeDetachingRenderer):
+        * dom/Element.h:
+        Update to new names and to pass this as a reference to the FlowThreadController.
+
+        * dom/Node.cpp:
+        * dom/Node.h:
+        Move isRegisteredWithNamedFlow() to Element.
+
+        * dom/WebKitNamedFlow.cpp:
+        (WebCore::WebKitNamedFlow::getRegionsByContent):
+        (WebCore::WebKitNamedFlow::getRegions):
+        (WebCore::WebKitNamedFlow::getContent):
+        Update for contentNodes() -> contentElements() name change. Modernize the code a bit
+        as well.
+
+        * rendering/FlowThreadController.cpp:
+        (WebCore::FlowThreadController::registerNamedFlowContentElement):
+        (WebCore::FlowThreadController::unregisterNamedFlowContentElement):
+        (WebCore::FlowThreadController::isContentElementRegisteredWithAnyNamedFlow):
+        * rendering/FlowThreadController.h:
+        Change the Node* -> RenderNamedFlowThread* map to a Element* -> RenderNamedFlowThread*. Update
+        functions taking Node*s to take Element&s.
+
+        * rendering/RenderNamedFlowThread.cpp:
+        (WebCore::RenderNamedFlowThread::~RenderNamedFlowThread):
+        (WebCore::RenderNamedFlowThread::clearContentElements):
+        (WebCore::RenderNamedFlowThread::registerNamedFlowContentElement):
+        (WebCore::RenderNamedFlowThread::unregisterNamedFlowContentElement):
+        (WebCore::RenderNamedFlowThread::hasContentElement):
+        (WebCore::isContainedInElements):
+        (WebCore::nextNodeInsideContentElement):
+        (WebCore::RenderNamedFlowThread::getRanges):
+        * rendering/RenderNamedFlowThread.h:
+        Change the NamedFlowContent set to store Elements rather than Nodes. Like with FlowThreadController,
+        update registration functions to take Element&s instead of Node*s, removing asserts.
+        
+        * rendering/RenderRegion.cpp:
+        (WebCore::RenderRegion::setRegionObjectsRegionStyle):
+        Update for new names.
+
+        * style/StyleResolveTree.cpp:
+        (WebCore::Style::moveToFlowThreadIfNeeded):
+        Pass the Element and RenderNamedFlowThread as references.
+
 2013-09-22  Andreas Kling  <[email protected]>
 
         Give purity hints to compiler to avoid penalizing repeated calls to some functions.

Modified: trunk/Source/WebCore/dom/Element.cpp (156249 => 156250)


--- trunk/Source/WebCore/dom/Element.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/dom/Element.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -1363,10 +1363,10 @@
 #endif
 }
 
-void Element::unregisterNamedFlowContentNode()
+void Element::unregisterNamedFlowContentElement()
 {
     if (document().cssRegionsEnabled() && inNamedFlow() && document().renderView())
-        document().renderView()->flowThreadController().unregisterNamedFlowContentNode(this);
+        document().renderView()->flowThreadController().unregisterNamedFlowContentElement(*this);
 }
 
 void Element::lazyReattach(ShouldSetAttached shouldSetAttached)
@@ -2645,7 +2645,7 @@
     if (styleToUse.flowThread().isEmpty())
         return false;
 
-    return !isRegisteredWithNamedFlow();
+    return !document().renderView()->flowThreadController().isContentElementRegisteredWithAnyNamedFlow(*this);
 }
 
 const AtomicString& Element::webkitRegionOverset() const
@@ -2972,7 +2972,7 @@
 
 void Element::clearStyleDerivedDataBeforeDetachingRenderer()
 {
-    unregisterNamedFlowContentNode();
+    unregisterNamedFlowContentElement();
     cancelFocusAppearanceUpdate();
     clearBeforePseudoElement();
     clearAfterPseudoElement();

Modified: trunk/Source/WebCore/dom/Element.h (156249 => 156250)


--- trunk/Source/WebCore/dom/Element.h	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/dom/Element.h	2013-09-22 21:23:48 UTC (rev 156250)
@@ -661,7 +661,7 @@
 
     SpellcheckAttributeState spellcheckAttributeState() const;
 
-    void unregisterNamedFlowContentNode();
+    void unregisterNamedFlowContentElement();
 
     void createUniqueElementData();
 

Modified: trunk/Source/WebCore/dom/Node.cpp (156249 => 156250)


--- trunk/Source/WebCore/dom/Node.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/dom/Node.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -95,7 +95,6 @@
 #include "SelectorQuery.h"
 #include "Settings.h"
 #include "ShadowRoot.h"
-#include "StaticNodeList.h"
 #include "StorageEvent.h"
 #include "StyleResolver.h"
 #include "TagNodeList.h"
@@ -959,11 +958,6 @@
     return parentOrShadowHostNode() ? parentOrShadowHostNode()->canStartSelection() : true;
 }
 
-bool Node::isRegisteredWithNamedFlow() const
-{
-    return document().renderView()->flowThreadController().isContentNodeRegisteredWithAnyNamedFlow(this);
-}
-
 Element* Node::shadowHost() const
 {
     if (ShadowRoot* root = containingShadowRoot())

Modified: trunk/Source/WebCore/dom/Node.h (156249 => 156250)


--- trunk/Source/WebCore/dom/Node.h	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/dom/Node.h	2013-09-22 21:23:48 UTC (rev 156250)
@@ -264,8 +264,6 @@
     bool inNamedFlow() const { return getFlag(InNamedFlowFlag); }
     bool hasCustomStyleResolveCallbacks() const { return getFlag(HasCustomStyleResolveCallbacksFlag); }
 
-    bool isRegisteredWithNamedFlow() const;
-
     bool hasSyntheticAttrChildNodes() const { return getFlag(HasSyntheticAttrChildNodesFlag); }
     void setHasSyntheticAttrChildNodes(bool flag) { setFlag(flag, HasSyntheticAttrChildNodesFlag); }
 

Modified: trunk/Source/WebCore/dom/WebKitNamedFlow.cpp (156249 => 156250)


--- trunk/Source/WebCore/dom/WebKitNamedFlow.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/dom/WebKitNamedFlow.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -117,10 +117,8 @@
 
 PassRefPtr<NodeList> WebKitNamedFlow::getRegionsByContent(Node* contentNode)
 {
-    Vector<RefPtr<Node> > regionNodes;
-
     if (!contentNode)
-        return StaticNodeList::adopt(regionNodes);
+        return StaticNodeList::createEmpty();
 
     if (m_flowManager->document())
         m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
@@ -128,71 +126,76 @@
     // The renderer may be destroyed or created after the style update.
     // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
     if (!m_parentFlowThread)
-        return StaticNodeList::adopt(regionNodes);
+        return StaticNodeList::createEmpty();
 
+    Vector<RefPtr<Node>> regionElements;
+
     if (inFlowThread(contentNode->renderer(), m_parentFlowThread)) {
         const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
-        for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) {
+        for (auto iter = regionList.begin(), end = regionList.end(); iter != end; ++iter) {
             const RenderRegion* renderRegion = *iter;
             // FIXME: Pseudo-elements are not included in the list.
             // They will be included when we will properly support the Region interface
             // http://dev.w3.org/csswg/css-regions/#the-region-interface
             if (renderRegion->isPseudoElement())
                 continue;
-            if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion))
-                regionNodes.append(renderRegion->generatingElement());
+            if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion)) {
+                ASSERT(renderRegion->generatingElement());
+                regionElements.append(renderRegion->generatingElement());
+            }
         }
     }
 
-    return StaticNodeList::adopt(regionNodes);
+    return StaticNodeList::adopt(regionElements);
 }
 
 PassRefPtr<NodeList> WebKitNamedFlow::getRegions()
 {
-    Vector<RefPtr<Node> > regionNodes;
-
     if (m_flowManager->document())
         m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
 
     // The renderer may be destroyed or created after the style update.
     // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
     if (!m_parentFlowThread)
-        return StaticNodeList::adopt(regionNodes);
+        return StaticNodeList::createEmpty();
 
+    Vector<RefPtr<Node>> regionElements;
+
     const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
-    for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) {
+    for (auto iter = regionList.begin(), end = regionList.end(); iter != end; ++iter) {
         const RenderRegion* renderRegion = *iter;
         // FIXME: Pseudo-elements are not included in the list.
         // They will be included when we will properly support the Region interface
         // http://dev.w3.org/csswg/css-regions/#the-region-interface
         if (renderRegion->isPseudoElement())
             continue;
-        regionNodes.append(renderRegion->generatingElement());
+        ASSERT(renderRegion->generatingElement());
+        regionElements.append(renderRegion->generatingElement());
     }
 
-    return StaticNodeList::adopt(regionNodes);
+    return StaticNodeList::adopt(regionElements);
 }
 
 PassRefPtr<NodeList> WebKitNamedFlow::getContent()
 {
-    Vector<RefPtr<Node> > contentNodes;
-
     if (m_flowManager->document())
         m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
 
     // The renderer may be destroyed or created after the style update.
     // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
     if (!m_parentFlowThread)
-        return StaticNodeList::adopt(contentNodes);
+        return StaticNodeList::createEmpty();
 
-    const NamedFlowContentNodes& contentNodesList = m_parentFlowThread->contentNodes();
-    for (NamedFlowContentNodes::const_iterator it = contentNodesList.begin(); it != contentNodesList.end(); ++it) {
-        Node* node = *it;
-        ASSERT(node->computedStyle()->flowThread() == m_parentFlowThread->flowThreadName());
-        contentNodes.append(node);
+    Vector<RefPtr<Node>> contentElements;
+
+    const NamedFlowContentElements& contentElementsList = m_parentFlowThread->contentElements();
+    for (auto it = contentElementsList.begin(), end = contentElementsList.end(); it != end; ++it) {
+        Element* element = *it;
+        ASSERT(element->computedStyle()->flowThread() == m_parentFlowThread->flowThreadName());
+        contentElements.append(element);
     }
 
-    return StaticNodeList::adopt(contentNodes);
+    return StaticNodeList::adopt(contentElements);
 }
 
 void WebKitNamedFlow::setRenderer(RenderNamedFlowThread* parentFlowThread)

Modified: trunk/Source/WebCore/rendering/FlowThreadController.cpp (156249 => 156250)


--- trunk/Source/WebCore/rendering/FlowThreadController.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/rendering/FlowThreadController.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -106,25 +106,22 @@
     }
 }
 
-void FlowThreadController::registerNamedFlowContentNode(Node* contentNode, RenderNamedFlowThread* namedFlow)
+void FlowThreadController::registerNamedFlowContentElement(Element& contentElement, RenderNamedFlowThread& namedFlow)
 {
-    ASSERT(contentNode && contentNode->isElementNode());
-    ASSERT(namedFlow);
-    ASSERT(!m_mapNamedFlowContentNodes.contains(contentNode));
-    ASSERT(!namedFlow->hasContentNode(contentNode));
-    m_mapNamedFlowContentNodes.add(contentNode, namedFlow);
-    namedFlow->registerNamedFlowContentNode(contentNode);
+    ASSERT(!m_mapNamedFlowContentElement.contains(&contentElement));
+    ASSERT(!namedFlow.hasContentElement(contentElement));
+    m_mapNamedFlowContentElement.add(&contentElement, &namedFlow);
+    namedFlow.registerNamedFlowContentElement(contentElement);
 }
 
-void FlowThreadController::unregisterNamedFlowContentNode(Node* contentNode)
+void FlowThreadController::unregisterNamedFlowContentElement(Element& contentElement)
 {
-    ASSERT(contentNode && contentNode->isElementNode());
-    HashMap<const Node*, RenderNamedFlowThread*>::iterator it = m_mapNamedFlowContentNodes.find(contentNode);
-    ASSERT(it != m_mapNamedFlowContentNodes.end());
+    auto it = m_mapNamedFlowContentElement.find(&contentElement);
+    ASSERT(it != m_mapNamedFlowContentElement.end());
     ASSERT(it->value);
-    ASSERT(it->value->hasContentNode(contentNode));
-    it->value->unregisterNamedFlowContentNode(contentNode);
-    m_mapNamedFlowContentNodes.remove(contentNode);
+    ASSERT(it->value->hasContentElement(contentElement));
+    it->value->unregisterNamedFlowContentElement(contentElement);
+    m_mapNamedFlowContentElement.remove(&contentElement);
 }
 
 void FlowThreadController::updateFlowThreadsChainIfNecessary()
@@ -278,9 +275,9 @@
 }
 #endif
 
-bool FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow(const Node* contentNode) const
+bool FlowThreadController::isContentElementRegisteredWithAnyNamedFlow(const Element& contentElement) const
 {
-    return m_mapNamedFlowContentNodes.contains(contentNode);
+    return m_mapNamedFlowContentElement.contains(&contentElement);
 }
 
 // Collect the fixed positioned layers that have the named flows as containing block

Modified: trunk/Source/WebCore/rendering/FlowThreadController.h (156249 => 156250)


--- trunk/Source/WebCore/rendering/FlowThreadController.h	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/rendering/FlowThreadController.h	2013-09-22 21:23:48 UTC (rev 156250)
@@ -65,9 +65,9 @@
     void layoutRenderNamedFlowThreads();
     void styleDidChange();
 
-    void registerNamedFlowContentNode(Node*, RenderNamedFlowThread*);
-    void unregisterNamedFlowContentNode(Node*);
-    bool isContentNodeRegisteredWithAnyNamedFlow(const Node*) const;
+    void registerNamedFlowContentElement(Element&, RenderNamedFlowThread&);
+    void unregisterNamedFlowContentElement(Element&);
+    bool isContentElementRegisteredWithAnyNamedFlow(const Element&) const;
 
     bool hasFlowThreadsWithAutoLogicalHeightRegions() const { return m_flowThreadsWithAutoLogicalHeightRegions; }
     void incrementFlowThreadsWithAutoLogicalHeightRegions() { ++m_flowThreadsWithAutoLogicalHeightRegions; }
@@ -103,8 +103,7 @@
     bool m_isRenderNamedFlowThreadOrderDirty;
     unsigned m_flowThreadsWithAutoLogicalHeightRegions;
     OwnPtr<RenderNamedFlowThreadList> m_renderNamedFlowThreadList;
-    // maps a content node to its render flow thread.
-    HashMap<const Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes;
+    HashMap<const Element*, RenderNamedFlowThread*> m_mapNamedFlowContentElement;
 };
 
 }

Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp (156249 => 156250)


--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -64,7 +64,7 @@
 {
     // The flow thread can be destroyed without unregistering the content nodes if the document is destroyed.
     // This can lead to problems because the nodes are still marked as belonging to a flow thread.
-    clearContentNodes();
+    clearContentElements();
 
     // Also leave the NamedFlow object in a consistent state by calling mark for destruction.
     setMarkForDestruction();
@@ -75,19 +75,19 @@
     return "RenderNamedFlowThread";
 }
     
-void RenderNamedFlowThread::clearContentNodes()
+void RenderNamedFlowThread::clearContentElements()
 {
-    for (NamedFlowContentNodes::iterator it = m_contentNodes.begin(); it != m_contentNodes.end(); ++it) {
-        Node* contentNode = *it;
+    for (auto it = m_contentElements.begin(), end = m_contentElements.end(); it != end; ++it) {
+        Element* contentElement = *it;
         
-        ASSERT(contentNode && contentNode->isElementNode());
-        ASSERT(contentNode->inNamedFlow());
-        ASSERT(&contentNode->document() == &document());
+        ASSERT(contentElement);
+        ASSERT(contentElement->inNamedFlow());
+        ASSERT(&contentElement->document() == &document());
         
-        contentNode->clearInNamedFlow();
+        contentElement->clearInNamedFlow();
     }
     
-    m_contentNodes.clear();
+    m_contentElements.clear();
 }
 
 void RenderNamedFlowThread::updateWritingMode()
@@ -439,41 +439,45 @@
 // The content nodes list contains those nodes with -webkit-flow-into: flow.
 // An element with display:none should also be listed among those nodes.
 // The list of nodes is ordered.
-void RenderNamedFlowThread::registerNamedFlowContentNode(Node* contentNode)
+void RenderNamedFlowThread::registerNamedFlowContentElement(Element& contentElement)
 {
-    ASSERT(contentNode && contentNode->isElementNode());
-    ASSERT(&contentNode->document() == &document());
+    ASSERT(&contentElement.document() == &document());
 
-    contentNode->setInNamedFlow();
+    contentElement.setInNamedFlow();
 
     resetMarkForDestruction();
 
     // Find the first content node following the new content node.
-    for (NamedFlowContentNodes::iterator it = m_contentNodes.begin(); it != m_contentNodes.end(); ++it) {
-        Node* node = *it;
-        unsigned short position = contentNode->compareDocumentPosition(node);
+    for (auto it = m_contentElements.begin(), end = m_contentElements.end(); it != end; ++it) {
+        Element* element = *it;
+        unsigned short position = contentElement.compareDocumentPosition(element);
         if (position & Node::DOCUMENT_POSITION_FOLLOWING) {
-            m_contentNodes.insertBefore(node, contentNode);
+            m_contentElements.insertBefore(element, &contentElement);
             return;
         }
     }
-    m_contentNodes.add(contentNode);
+
+    m_contentElements.add(&contentElement);
 }
 
-void RenderNamedFlowThread::unregisterNamedFlowContentNode(Node* contentNode)
+void RenderNamedFlowThread::unregisterNamedFlowContentElement(Element& contentElement)
 {
-    ASSERT(contentNode && contentNode->isElementNode());
-    ASSERT(m_contentNodes.contains(contentNode));
-    ASSERT(contentNode->inNamedFlow());
-    ASSERT(&contentNode->document() == &document());
+    ASSERT(m_contentElements.contains(&contentElement));
+    ASSERT(contentElement.inNamedFlow());
+    ASSERT(&contentElement.document() == &document());
 
-    contentNode->clearInNamedFlow();
-    m_contentNodes.remove(contentNode);
+    contentElement.clearInNamedFlow();
+    m_contentElements.remove(&contentElement);
 
     if (canBeDestroyed())
         setMarkForDestruction();
 }
 
+bool RenderNamedFlowThread::hasContentElement(Element& contentElement) const
+{
+    return m_contentElements.contains(&contentElement);
+}
+    
 const AtomicString& RenderNamedFlowThread::flowThreadName() const
 {
     return m_namedFlow->name();
@@ -549,11 +553,11 @@
     return m_namedFlow->flowState() == WebKitNamedFlow::FlowStateNull;
 }
 
-static bool isContainedInNodes(Vector<Node*> others, Node* node)
+static bool isContainedInElements(const Vector<Element*>& others, Element* element)
 {
     for (size_t i = 0; i < others.size(); i++) {
-        Node* other = others.at(i);
-        if (other->contains(node))
+        Element* other = others.at(i);
+        if (other->contains(element))
             return true;
     }
     return false;
@@ -569,16 +573,16 @@
 }
 
 // Retrieve the next node to be visited while computing the ranges inside a region.
-static Node* nextNodeInsideContentNode(const Node* currNode, const Node* contentNode)
+static Node* nextNodeInsideContentElement(const Node* currNode, const Element* contentElement)
 {
     ASSERT(currNode);
-    ASSERT(contentNode && contentNode->inNamedFlow());
+    ASSERT(contentElement && contentElement->inNamedFlow());
 
 #if ENABLE(SVG)
     if (currNode->renderer() && currNode->renderer()->isSVGRoot())
-        return NodeTraversal::nextSkippingChildren(currNode, contentNode);
+        return NodeTraversal::nextSkippingChildren(currNode, contentElement);
 #endif
-    return NodeTraversal::next(currNode, contentNode);
+    return NodeTraversal::next(currNode, contentElement);
 }
 
 void RenderNamedFlowThread::getRanges(Vector<RefPtr<Range> >& rangeObjects, const RenderRegion* region) const
@@ -598,27 +602,27 @@
     else
         logicalBottomForRegion = region->logicalBottomForFlowThreadContent();
 
-    Vector<Node*> nodes;
-    // eliminate the contentNodes that are descendants of other contentNodes
-    for (NamedFlowContentNodes::const_iterator it = contentNodes().begin(); it != contentNodes().end(); ++it) {
-        Node* node = *it;
-        if (!isContainedInNodes(nodes, node))
-            nodes.append(node);
+    Vector<Element*> elements;
+    // eliminate the contentElements that are descendants of other contentElements
+    for (auto it = contentElements().begin(), end = contentElements().end(); it != end; ++it) {
+        Element* element = *it;
+        if (!isContainedInElements(elements, element))
+            elements.append(element);
     }
 
-    for (size_t i = 0; i < nodes.size(); i++) {
-        Node* contentNode = nodes.at(i);
-        if (!contentNode->renderer())
+    for (size_t i = 0; i < elements.size(); i++) {
+        Element* contentElement = elements.at(i);
+        if (!contentElement->renderer())
             continue;
 
-        RefPtr<Range> range = Range::create(&contentNode->document());
+        RefPtr<Range> range = Range::create(&contentElement->document());
         bool foundStartPosition = false;
         bool startsAboveRegion = true;
         bool endsBelowRegion = true;
         bool skipOverOutsideNodes = false;
         Node* lastEndNode = 0;
 
-        for (Node* node = contentNode; node; node = nextNodeInsideContentNode(node, contentNode)) {
+        for (Node* node = contentElement; node; node = nextNodeInsideContentElement(node, contentElement)) {
             RenderObject* renderer = node->renderer();
             if (!renderer)
                 continue;
@@ -652,7 +656,7 @@
                         if (range->intersectsNode(node, IGNORE_EXCEPTION))
                             range->setEndBefore(node, IGNORE_EXCEPTION);
                         rangeObjects.append(range->cloneRange(IGNORE_EXCEPTION));
-                        range = Range::create(&contentNode->document());
+                        range = Range::create(&contentElement->document());
                         startsAboveRegion = true;
                     } else
                         skipOverOutsideNodes = true;

Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.h (156249 => 156250)


--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.h	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.h	2013-09-22 21:23:48 UTC (rev 156250)
@@ -41,7 +41,7 @@
 
 typedef ListHashSet<RenderNamedFlowThread*> RenderNamedFlowThreadList;
 typedef HashCountedSet<RenderNamedFlowThread*> RenderNamedFlowThreadCountedSet;
-typedef ListHashSet<Node*> NamedFlowContentNodes;
+typedef ListHashSet<Element*> NamedFlowContentElements;
 
 class RenderNamedFlowThread FINAL : public RenderFlowThread {
 public:
@@ -73,10 +73,11 @@
     bool overset() const { return m_overset; }
     void computeOversetStateForRegions(LayoutUnit oldClientAfterEdge);
 
-    void registerNamedFlowContentNode(Node*);
-    void unregisterNamedFlowContentNode(Node*);
-    const NamedFlowContentNodes& contentNodes() const { return m_contentNodes; }
-    bool hasContentNode(Node* contentNode) const { ASSERT(contentNode); return m_contentNodes.contains(contentNode); }
+    void registerNamedFlowContentElement(Element&);
+    void unregisterNamedFlowContentElement(Element&);
+    const NamedFlowContentElements& contentElements() const { return m_contentElements; }
+    bool hasContentElement(Element&) const;
+
     bool isMarkedForDestruction() const;
     void getRanges(Vector<RefPtr<Range> >&, const RenderRegion*) const;
 
@@ -102,10 +103,10 @@
 
     void checkInvalidRegions();
 
-    bool canBeDestroyed() const { return m_invalidRegionList.isEmpty() && m_regionList.isEmpty() && m_contentNodes.isEmpty(); }
+    bool canBeDestroyed() const { return m_invalidRegionList.isEmpty() && m_regionList.isEmpty() && m_contentElements.isEmpty(); }
     void regionLayoutUpdateEventTimerFired(Timer<RenderNamedFlowThread>*);
     void regionOversetChangeEventTimerFired(Timer<RenderNamedFlowThread>*);
-    void clearContentNodes();
+    void clearContentElements();
     void updateWritingMode();
 
 private:
@@ -123,7 +124,7 @@
     typedef ListHashSet<RenderObject*> FlowThreadChildList;
     FlowThreadChildList m_flowThreadChildList;
 
-    NamedFlowContentNodes m_contentNodes;
+    NamedFlowContentElements m_contentElements;
 
     RenderRegionList m_invalidRegionList;
 

Modified: trunk/Source/WebCore/rendering/RenderRegion.cpp (156249 => 156250)


--- trunk/Source/WebCore/rendering/RenderRegion.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/rendering/RenderRegion.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -489,15 +489,15 @@
     // Start from content nodes and recursively compute the style in region for the render objects below.
     // If the style in region was already computed, used that style instead of computing a new one.
     const RenderNamedFlowThread& namedFlow = view().flowThreadController().ensureRenderFlowThreadWithName(style()->regionThread());
-    const NamedFlowContentNodes& contentNodes = namedFlow.contentNodes();
+    const NamedFlowContentElements& contentElements = namedFlow.contentElements();
 
-    for (NamedFlowContentNodes::const_iterator iter = contentNodes.begin(), end = contentNodes.end(); iter != end; ++iter) {
-        const Node* node = *iter;
+    for (auto iter = contentElements.begin(), end = contentElements.end(); iter != end; ++iter) {
+        const Element* element = *iter;
         // The list of content nodes contains also the nodes with display:none.
-        if (!node->renderer())
+        if (!element->renderer())
             continue;
 
-        RenderObject* object = node->renderer();
+        RenderObject* object = element->renderer();
         // If the content node does not flow any of its children in this region,
         // we do not compute any style for them in this region.
         if (!flowThread()->objectInFlowRegion(object, this))

Modified: trunk/Source/WebCore/style/StyleResolveTree.cpp (156249 => 156250)


--- trunk/Source/WebCore/style/StyleResolveTree.cpp	2013-09-22 21:23:34 UTC (rev 156249)
+++ trunk/Source/WebCore/style/StyleResolveTree.cpp	2013-09-22 21:23:48 UTC (rev 156250)
@@ -190,7 +190,7 @@
         return 0;
     FlowThreadController& flowThreadController = element.document().renderView()->flowThreadController();
     RenderNamedFlowThread& parentFlowRenderer = flowThreadController.ensureRenderFlowThreadWithName(style.flowThread());
-    flowThreadController.registerNamedFlowContentNode(&element, &parentFlowRenderer);
+    flowThreadController.registerNamedFlowContentElement(element, parentFlowRenderer);
     return &parentFlowRenderer;
 }
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to