summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderNamedFlowThread.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-07-16 14:51:15 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-07-16 14:51:15 +0200
commit4e6b3a206fa4ad8bb0b664f7674c9a70376d6e26 (patch)
tree7bb9ad7e31c24d1cf1707e03e6f1a80f6d033951 /Source/WebCore/rendering/RenderNamedFlowThread.cpp
parent3977e3d2f72f7fe2c887c1ec0e0c342e1d169f42 (diff)
downloadqtwebkit-4e6b3a206fa4ad8bb0b664f7674c9a70376d6e26.tar.gz
Imported WebKit commit 953baa67aa07087b6ecd4199351ec554c724e27d (http://svn.webkit.org/repository/webkit/trunk@122676)
Diffstat (limited to 'Source/WebCore/rendering/RenderNamedFlowThread.cpp')
-rw-r--r--Source/WebCore/rendering/RenderNamedFlowThread.cpp40
1 files changed, 28 insertions, 12 deletions
diff --git a/Source/WebCore/rendering/RenderNamedFlowThread.cpp b/Source/WebCore/rendering/RenderNamedFlowThread.cpp
index 088b87248..227af7df5 100644
--- a/Source/WebCore/rendering/RenderNamedFlowThread.cpp
+++ b/Source/WebCore/rendering/RenderNamedFlowThread.cpp
@@ -33,10 +33,16 @@
namespace WebCore {
-RenderNamedFlowThread::RenderNamedFlowThread(Node* node, const AtomicString& name)
+RenderNamedFlowThread::RenderNamedFlowThread(Node* node, PassRefPtr<WebKitNamedFlow> namedFlow)
: RenderFlowThread(node)
- , m_flowThreadName(name)
+ , m_namedFlow(namedFlow)
{
+ m_namedFlow->setRenderer(this);
+}
+
+RenderNamedFlowThread::~RenderNamedFlowThread()
+{
+ m_namedFlow->setRenderer(0);
}
const char* RenderNamedFlowThread::renderName() const
@@ -44,7 +50,6 @@ const char* RenderNamedFlowThread::renderName() const
return "RenderNamedFlowThread";
}
-
RenderObject* RenderNamedFlowThread::nextRendererForNode(Node* node) const
{
FlowThreadChildList::const_iterator it = m_flowThreadChildList.begin();
@@ -182,10 +187,14 @@ void RenderNamedFlowThread::removeRegionFromThread(RenderRegion* renderRegion)
removeDependencyOnFlowThread(renderRegion->parentNamedFlowThread());
}
+ if (canBeDestroyed()) {
+ destroy();
+ return;
+ }
+
invalidateRegions();
}
-
void RenderNamedFlowThread::checkInvalidRegions()
{
for (RenderRegionList::iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) {
@@ -245,14 +254,6 @@ void RenderNamedFlowThread::pushDependencies(RenderNamedFlowThreadList& list)
}
}
-WebKitNamedFlow* RenderNamedFlowThread::ensureNamedFlow()
-{
- if (!m_namedFlow)
- m_namedFlow = WebKitNamedFlow::create(this);
-
- return m_namedFlow.get();
-}
-
// 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.
@@ -283,6 +284,21 @@ void RenderNamedFlowThread::unregisterNamedFlowContentNode(Node* contentNode)
contentNode->clearInNamedFlow();
m_contentNodes.remove(contentNode);
+ if (canBeDestroyed())
+ destroy();
+}
+
+const AtomicString& RenderNamedFlowThread::flowThreadName() const
+{
+ return m_namedFlow->name();
+}
+
+void RenderNamedFlowThread::willBeDestroyed()
+{
+ if (!documentBeingDestroyed())
+ view()->flowThreadController()->removeFlowThread(this);
+
+ RenderFlowThread::willBeDestroyed();
}
}