Title: [135419] trunk/Source/WebCore
- Revision
- 135419
- Author
- an...@apple.com
- Date
- 2012-11-21 10:53:09 -0800 (Wed, 21 Nov 2012)
Log Message
Replace NodeRendererFactory class with a function
https://bugs.webkit.org/show_bug.cgi?id=102950
Reviewed by Andreas Kling.
Simplify the code by turning NodeRendererFactory single-use class into function of NodeRenderingContext.
* dom/Node.cpp:
(WebCore::Node::createRendererIfNeeded):
* dom/NodeRenderingContext.cpp:
(WebCore::NodeRenderingContext::NodeRenderingContext):
(WebCore):
(WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded):
(WebCore::NodeRenderingContext::createRendererIfNeeded):
* dom/NodeRenderingContext.h:
(NodeRenderingContext):
(WebCore::NodeRenderingContext::style):
(WebCore):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (135418 => 135419)
--- trunk/Source/WebCore/ChangeLog 2012-11-21 18:52:19 UTC (rev 135418)
+++ trunk/Source/WebCore/ChangeLog 2012-11-21 18:53:09 UTC (rev 135419)
@@ -1,3 +1,24 @@
+2012-11-21 Antti Koivisto <an...@apple.com>
+
+ Replace NodeRendererFactory class with a function
+ https://bugs.webkit.org/show_bug.cgi?id=102950
+
+ Reviewed by Andreas Kling.
+
+ Simplify the code by turning NodeRendererFactory single-use class into function of NodeRenderingContext.
+
+ * dom/Node.cpp:
+ (WebCore::Node::createRendererIfNeeded):
+ * dom/NodeRenderingContext.cpp:
+ (WebCore::NodeRenderingContext::NodeRenderingContext):
+ (WebCore):
+ (WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded):
+ (WebCore::NodeRenderingContext::createRendererIfNeeded):
+ * dom/NodeRenderingContext.h:
+ (NodeRenderingContext):
+ (WebCore::NodeRenderingContext::style):
+ (WebCore):
+
2012-11-21 W. James MacLean <wjmacl...@chromium.org>
[chromium] Change default tap highlight color for Chromium Windows & Linux.
Modified: trunk/Source/WebCore/dom/Node.cpp (135418 => 135419)
--- trunk/Source/WebCore/dom/Node.cpp 2012-11-21 18:52:19 UTC (rev 135418)
+++ trunk/Source/WebCore/dom/Node.cpp 2012-11-21 18:53:09 UTC (rev 135419)
@@ -1399,7 +1399,7 @@
void Node::createRendererIfNeeded()
{
- NodeRendererFactory(this).createRendererIfNeeded();
+ NodeRenderingContext(this).createRendererIfNeeded();
}
bool Node::rendererIsNeeded(const NodeRenderingContext& context)
Modified: trunk/Source/WebCore/dom/NodeRenderingContext.cpp (135418 => 135419)
--- trunk/Source/WebCore/dom/NodeRenderingContext.cpp 2012-11-21 18:52:19 UTC (rev 135418)
+++ trunk/Source/WebCore/dom/NodeRenderingContext.cpp 2012-11-21 18:53:09 UTC (rev 135419)
@@ -52,7 +52,6 @@
NodeRenderingContext::NodeRenderingContext(Node* node)
: m_node(node)
- , m_style(0)
, m_parentFlowRenderer(0)
{
ComposedShadowTreeWalker::findParent(m_node, &m_parentDetails);
@@ -69,17 +68,6 @@
{
}
-void NodeRenderingContext::setStyle(PassRefPtr<RenderStyle> style)
-{
- m_style = style;
- moveToFlowThreadIfNeeded();
-}
-
-PassRefPtr<RenderStyle> NodeRenderingContext::releaseStyle()
-{
- return m_style.release();
-}
-
RenderObject* NodeRenderingContext::nextRenderer() const
{
if (RenderObject* renderer = m_node->renderer())
@@ -158,10 +146,11 @@
void NodeRenderingContext::moveToFlowThreadIfNeeded()
{
+ ASSERT(m_style);
if (!m_node->document()->cssRegionsEnabled())
return;
- if (!m_node->isElementNode() || !m_style || m_style->flowThread().isEmpty())
+ if (!m_node->isElementNode() || m_style->flowThread().isEmpty())
return;
// FIXME: Do not collect elements if they are in shadow tree.
@@ -192,28 +181,6 @@
return m_node->parentNode() && m_node->parentNode()->isShadowRoot();
}
-NodeRendererFactory::NodeRendererFactory(Node* node)
- : m_context(node)
-{
-}
-
-RenderObject* NodeRendererFactory::createRenderer()
-{
- Node* node = m_context.node();
- RenderObject* newRenderer = node->createRenderer(node->document()->renderArena(), m_context.style());
- if (!newRenderer)
- return 0;
-
- if (!m_context.parentRenderer()->isChildAllowed(newRenderer, m_context.style())) {
- newRenderer->destroy();
- return 0;
- }
-
- node->setRenderer(newRenderer);
- newRenderer->setAnimatableStyle(m_context.releaseStyle()); // setAnimatableStyle() can depend on renderer() already being set.
- return newRenderer;
-}
-
#if ENABLE(DIALOG_ELEMENT)
static void adjustInsertionPointForTopLayerElement(Element* element, RenderObject*& parentRenderer, RenderObject*& nextRenderer)
{
@@ -234,51 +201,52 @@
}
#endif
-void NodeRendererFactory::createRendererIfNeeded()
+void NodeRenderingContext::createRendererIfNeeded()
{
- Node* node = m_context.node();
- ASSERT(!node->renderer());
+ ASSERT(!m_node->renderer());
- if (!m_context.shouldCreateRenderer())
+ if (!shouldCreateRenderer())
return;
+ Element* element = m_node->isElementNode() ? toElement(m_node) : 0;
+
+ m_style = element ? element->styleForRenderer() : parentRenderer()->style();
+ ASSERT(m_style);
- ASSERT(m_context.parentRenderer());
+ moveToFlowThreadIfNeeded();
- Element* element = node->isElementNode() ? toElement(node) : 0;
- if (element)
- m_context.setStyle(element->styleForRenderer());
- else
- m_context.setStyle(m_context.parentRenderer()->style());
-
- ASSERT(m_context.style());
-
- if (!node->rendererIsNeeded(m_context)) {
- if (element && m_context.style()->affectedByEmpty())
+ if (!m_node->rendererIsNeeded(*this)) {
+ if (element && m_style->affectedByEmpty())
element->setStyleAffectedByEmpty();
return;
}
-
- RenderObject* parentRenderer = m_context.hasFlowThreadParent() ? m_context.parentFlowRenderer() : m_context.parentRenderer();
+ RenderObject* parentRenderer = m_parentFlowRenderer ? m_parentFlowRenderer : this->parentRenderer();
// Do not call m_context.nextRenderer() here in the first clause, because it expects to have
// the renderer added to its parent already.
- RenderObject* nextRenderer = m_context.hasFlowThreadParent() ? m_context.parentFlowRenderer()->nextRendererForNode(node) : m_context.nextRenderer();
+ RenderObject* nextRenderer = m_parentFlowRenderer ? m_parentFlowRenderer->nextRendererForNode(m_node) : this->nextRenderer();
#if ENABLE(DIALOG_ELEMENT)
if (element && element->isInTopLayer())
adjustInsertionPointForTopLayerElement(element, parentRenderer, nextRenderer);
#endif
- RenderObject* newRenderer = createRenderer();
+ Document* document = m_node->document();
+ RenderObject* newRenderer = m_node->createRenderer(document->renderArena(), m_style.get());
+ if (!newRenderer)
+ return;
+ if (!parentRenderer->isChildAllowed(newRenderer, m_style.get())) {
+ newRenderer->destroy();
+ return;
+ }
+ m_node->setRenderer(newRenderer);
+ newRenderer->setAnimatableStyle(m_style.release()); // setAnimatableStyle() can depend on renderer() already being set.
#if ENABLE(FULLSCREEN_API)
- Document* document = node->document();
- if (document->webkitIsFullScreen() && document->webkitCurrentFullScreenElement() == node)
+ if (document->webkitIsFullScreen() && document->webkitCurrentFullScreenElement() == m_node) {
newRenderer = RenderFullScreen::wrapRenderer(newRenderer, parentRenderer, document);
+ if (!newRenderer)
+ return;
+ }
#endif
-
- if (!newRenderer)
- return;
-
// Note: Adding newRenderer instead of renderer(). renderer() may be a child of newRenderer.
parentRenderer->addChild(newRenderer, nextRenderer);
}
Modified: trunk/Source/WebCore/dom/NodeRenderingContext.h (135418 => 135419)
--- trunk/Source/WebCore/dom/NodeRenderingContext.h 2012-11-21 18:52:19 UTC (rev 135418)
+++ trunk/Source/WebCore/dom/NodeRenderingContext.h 2012-11-21 18:53:09 UTC (rev 135419)
@@ -48,6 +48,8 @@
NodeRenderingContext(Node*, RenderStyle*);
~NodeRenderingContext();
+ void createRendererIfNeeded();
+
Node* node() const;
ContainerNode* parentNodeForRenderingAndStyle() const;
bool resetStyleInheritance() const;
@@ -56,19 +58,15 @@
RenderObject* previousRenderer() const;
InsertionPoint* insertionPoint() const;
- RenderStyle* style() const;
- void setStyle(PassRefPtr<RenderStyle>);
- PassRefPtr<RenderStyle> releaseStyle();
+ const RenderStyle* style() const;
- bool shouldCreateRenderer() const;
-
bool isOnUpperEncapsulationBoundary() const;
bool isOnEncapsulationBoundary() const;
- bool hasFlowThreadParent() const { return m_parentFlowRenderer; }
- RenderNamedFlowThread* parentFlowRenderer() const { return m_parentFlowRenderer; }
- void moveToFlowThreadIfNeeded();
private:
+ bool shouldCreateRenderer() const;
+ void moveToFlowThreadIfNeeded();
+
Node* m_node;
ComposedShadowTreeWalker::ParentTraversalDetails m_parentDetails;
RefPtr<RenderStyle> m_style;
@@ -91,7 +89,7 @@
return m_parentDetails.resetStyleInheritance();
}
-inline RenderStyle* NodeRenderingContext::style() const
+inline const RenderStyle* NodeRenderingContext::style() const
{
return m_style.get();
}
@@ -101,26 +99,6 @@
return m_parentDetails.insertionPoint();
}
-class NodeRendererFactory {
- WTF_MAKE_NONCOPYABLE(NodeRendererFactory);
- WTF_MAKE_FAST_ALLOCATED;
-public:
- explicit NodeRendererFactory(Node*);
-
- const NodeRenderingContext& context() const;
- void createRendererIfNeeded();
-
-private:
- RenderObject* createRenderer();
-
- NodeRenderingContext m_context;
-};
-
-inline const NodeRenderingContext& NodeRendererFactory::context() const
-{
- return m_context;
-}
-
} // namespace WebCore
#endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes