Modified: trunk/Source/WebCore/ChangeLog (163916 => 163917)
--- trunk/Source/WebCore/ChangeLog 2014-02-12 00:06:01 UTC (rev 163916)
+++ trunk/Source/WebCore/ChangeLog 2014-02-12 00:08:16 UTC (rev 163917)
@@ -1,3 +1,33 @@
+2014-02-11 Andreas Kling <akl...@apple.com>
+
+ CTTE: RenderNamedFlowThread always has a WebKitNamedFlow.
+ <https://webkit.org/b/128623>
+
+ Codify the fact that RenderNamedFlowThread always has a corresponding
+ WebKitNamedFlow by storing it in a Ref, and adding an accessor that
+ returns a reference to get rid of all the ->'s.
+
+ Also removed some unnecessary assertions exposed by this.
+
+ Reviewed by Antti Koivisto.
+
+ * dom/NamedFlowCollection.cpp:
+ (WebCore::NamedFlowCollection::ensureFlowWithName):
+ * dom/NamedFlowCollection.h:
+ * rendering/RenderNamedFlowThread.cpp:
+ (WebCore::RenderNamedFlowThread::RenderNamedFlowThread):
+ (WebCore::RenderNamedFlowThread::registerNamedFlowContentElement):
+ (WebCore::RenderNamedFlowThread::unregisterNamedFlowContentElement):
+ (WebCore::RenderNamedFlowThread::flowThreadName):
+ (WebCore::RenderNamedFlowThread::dispatchRegionLayoutUpdateEvent):
+ (WebCore::RenderNamedFlowThread::dispatchRegionOversetChangeEvent):
+ (WebCore::RenderNamedFlowThread::regionLayoutUpdateEventTimerFired):
+ (WebCore::RenderNamedFlowThread::regionOversetChangeEventTimerFired):
+ (WebCore::RenderNamedFlowThread::setMarkForDestruction):
+ (WebCore::RenderNamedFlowThread::resetMarkForDestruction):
+ (WebCore::RenderNamedFlowThread::isMarkedForDestruction):
+ * rendering/RenderNamedFlowThread.h:
+
2014-02-10 Myles C. Maxfield <mmaxfi...@apple.com>
Convert position:fixed property to position:absolute upon copy
Modified: trunk/Source/WebCore/dom/NamedFlowCollection.cpp (163916 => 163917)
--- trunk/Source/WebCore/dom/NamedFlowCollection.cpp 2014-02-12 00:06:01 UTC (rev 163916)
+++ trunk/Source/WebCore/dom/NamedFlowCollection.cpp 2014-02-12 00:08:16 UTC (rev 163917)
@@ -66,14 +66,14 @@
return *it;
}
-PassRefPtr<WebKitNamedFlow> NamedFlowCollection::ensureFlowWithName(const String& flowName)
+PassRef<WebKitNamedFlow> NamedFlowCollection::ensureFlowWithName(const String& flowName)
{
NamedFlowSet::iterator it = m_namedFlows.find<String, NamedFlowHashTranslator>(flowName);
if (it != m_namedFlows.end()) {
WebKitNamedFlow* namedFlow = *it;
ASSERT(namedFlow->flowState() == WebKitNamedFlow::FlowStateNull);
- return namedFlow;
+ return *namedFlow;
}
RefPtr<WebKitNamedFlow> newFlow = WebKitNamedFlow::create(this, flowName);
@@ -81,7 +81,7 @@
InspectorInstrumentation::didCreateNamedFlow(document(), newFlow.get());
- return newFlow.release();
+ return newFlow.releaseNonNull();
}
void NamedFlowCollection::discardNamedFlow(WebKitNamedFlow* namedFlow)
Modified: trunk/Source/WebCore/dom/NamedFlowCollection.h (163916 => 163917)
--- trunk/Source/WebCore/dom/NamedFlowCollection.h 2014-02-12 00:06:01 UTC (rev 163916)
+++ trunk/Source/WebCore/dom/NamedFlowCollection.h 2014-02-12 00:08:16 UTC (rev 163917)
@@ -49,7 +49,7 @@
Vector<RefPtr<WebKitNamedFlow>> namedFlows();
WebKitNamedFlow* flowByName(const String&);
- PassRefPtr<WebKitNamedFlow> ensureFlowWithName(const String&);
+ PassRef<WebKitNamedFlow> ensureFlowWithName(const String&);
void discardNamedFlow(WebKitNamedFlow*);
Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp (163916 => 163917)
--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp 2014-02-12 00:06:01 UTC (rev 163916)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp 2014-02-12 00:08:16 UTC (rev 163917)
@@ -45,12 +45,12 @@
namespace WebCore {
-RenderNamedFlowThread::RenderNamedFlowThread(Document& document, PassRef<RenderStyle> style, PassRefPtr<WebKitNamedFlow> namedFlow)
+RenderNamedFlowThread::RenderNamedFlowThread(Document& document, PassRef<RenderStyle> style, PassRef<WebKitNamedFlow> namedFlow)
: RenderFlowThread(document, std::move(style))
, m_flowThreadChildList(adoptPtr(new FlowThreadChildList()))
, m_overset(true)
, m_hasRegionsWithStyling(false)
- , m_namedFlow(namedFlow)
+ , m_namedFlow(std::move(namedFlow))
, m_regionLayoutUpdateEventTimer(this, &RenderNamedFlowThread::regionLayoutUpdateEventTimerFired)
, m_regionOversetChangeEventTimer(this, &RenderNamedFlowThread::regionOversetChangeEventTimerFired)
{
@@ -436,13 +436,13 @@
unsigned short position = contentElement.compareDocumentPosition(element);
if (position & Node::DOCUMENT_POSITION_FOLLOWING) {
m_contentElements.insertBefore(element, &contentElement);
- InspectorInstrumentation::didRegisterNamedFlowContentElement(&document(), m_namedFlow.get(), &contentElement, element);
+ InspectorInstrumentation::didRegisterNamedFlowContentElement(&document(), &namedFlow(), &contentElement, element);
return;
}
}
m_contentElements.add(&contentElement);
- InspectorInstrumentation::didRegisterNamedFlowContentElement(&document(), m_namedFlow.get(), &contentElement);
+ InspectorInstrumentation::didRegisterNamedFlowContentElement(&document(), &namedFlow(), &contentElement);
}
void RenderNamedFlowThread::unregisterNamedFlowContentElement(Element& contentElement)
@@ -457,7 +457,7 @@
if (canBeDestroyed())
setMarkForDestruction();
- InspectorInstrumentation::didUnregisterNamedFlowContentElement(&document(), m_namedFlow.get(), &contentElement);
+ InspectorInstrumentation::didUnregisterNamedFlowContentElement(&document(), &namedFlow(), &contentElement);
}
bool RenderNamedFlowThread::hasContentElement(Element& contentElement) const
@@ -467,7 +467,7 @@
const AtomicString& RenderNamedFlowThread::flowThreadName() const
{
- return m_namedFlow->name();
+ return namedFlow().name();
}
bool RenderNamedFlowThread::isChildAllowed(const RenderObject& child, const RenderStyle& style) const
@@ -487,57 +487,53 @@
void RenderNamedFlowThread::dispatchRegionLayoutUpdateEvent()
{
RenderFlowThread::dispatchRegionLayoutUpdateEvent();
- InspectorInstrumentation::didUpdateRegionLayout(&document(), m_namedFlow.get());
+ InspectorInstrumentation::didUpdateRegionLayout(&document(), &namedFlow());
- if (!m_regionLayoutUpdateEventTimer.isActive() && m_namedFlow->hasEventListeners())
+ if (!m_regionLayoutUpdateEventTimer.isActive() && namedFlow().hasEventListeners())
m_regionLayoutUpdateEventTimer.startOneShot(0);
}
void RenderNamedFlowThread::dispatchRegionOversetChangeEvent()
{
RenderFlowThread::dispatchRegionOversetChangeEvent();
- InspectorInstrumentation::didChangeRegionOverset(&document(), m_namedFlow.get());
+ InspectorInstrumentation::didChangeRegionOverset(&document(), &namedFlow());
- if (!m_regionOversetChangeEventTimer.isActive() && m_namedFlow->hasEventListeners())
+ if (!m_regionOversetChangeEventTimer.isActive() && namedFlow().hasEventListeners())
m_regionOversetChangeEventTimer.startOneShot(0);
}
void RenderNamedFlowThread::regionLayoutUpdateEventTimerFired(Timer<RenderNamedFlowThread>&)
{
- ASSERT(m_namedFlow);
-
- m_namedFlow->dispatchRegionLayoutUpdateEvent();
+ namedFlow().dispatchRegionLayoutUpdateEvent();
}
void RenderNamedFlowThread::regionOversetChangeEventTimerFired(Timer<RenderNamedFlowThread>&)
{
- ASSERT(m_namedFlow);
-
- m_namedFlow->dispatchRegionOversetChangeEvent();
+ namedFlow().dispatchRegionOversetChangeEvent();
}
void RenderNamedFlowThread::setMarkForDestruction()
{
- if (m_namedFlow->flowState() == WebKitNamedFlow::FlowStateNull)
+ if (namedFlow().flowState() == WebKitNamedFlow::FlowStateNull)
return;
- m_namedFlow->setRenderer(0);
+ namedFlow().setRenderer(nullptr);
// After this call ends, the renderer can be safely destroyed.
// The NamedFlow object may outlive its renderer if it's referenced from a script and may be reatached to one if the named flow is recreated in the stylesheet.
}
void RenderNamedFlowThread::resetMarkForDestruction()
{
- if (m_namedFlow->flowState() == WebKitNamedFlow::FlowStateCreated)
+ if (namedFlow().flowState() == WebKitNamedFlow::FlowStateCreated)
return;
- m_namedFlow->setRenderer(this);
+ namedFlow().setRenderer(this);
}
bool RenderNamedFlowThread::isMarkedForDestruction() const
{
// Flow threads in the "NULL" state can be destroyed.
- return m_namedFlow->flowState() == WebKitNamedFlow::FlowStateNull;
+ return namedFlow().flowState() == WebKitNamedFlow::FlowStateNull;
}
static bool isContainedInElements(const Vector<Element*>& others, Element* element)
Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.h (163916 => 163917)
--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.h 2014-02-12 00:06:01 UTC (rev 163916)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.h 2014-02-12 00:08:16 UTC (rev 163917)
@@ -45,7 +45,7 @@
class RenderNamedFlowThread final : public RenderFlowThread {
public:
- RenderNamedFlowThread(Document&, PassRef<RenderStyle>, PassRefPtr<WebKitNamedFlow>);
+ RenderNamedFlowThread(Document&, PassRef<RenderStyle>, PassRef<WebKitNamedFlow>);
virtual ~RenderNamedFlowThread();
const AtomicString& flowThreadName() const;
@@ -116,7 +116,9 @@
void clearContentElements();
void updateWritingMode();
-private:
+ WebKitNamedFlow& namedFlow() { return m_namedFlow.get(); }
+ const WebKitNamedFlow& namedFlow() const { return m_namedFlow.get(); }
+
// Observer flow threads have invalid regions that depend on the state of this thread
// to re-validate their regions. Keeping a set of observer threads make it easy
// to notify them when a region was removed from this flow.
@@ -139,7 +141,7 @@
bool m_hasRegionsWithStyling : 1;
// The DOM Object that represents a named flow.
- RefPtr<WebKitNamedFlow> m_namedFlow;
+ Ref<WebKitNamedFlow> m_namedFlow;
Timer<RenderNamedFlowThread> m_regionLayoutUpdateEventTimer;
Timer<RenderNamedFlowThread> m_regionOversetChangeEventTimer;