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