Title: [228566] trunk/Source/WebCore
Revision
228566
Author
[email protected]
Date
2018-02-16 11:25:18 -0800 (Fri, 16 Feb 2018)

Log Message

[RenderTreeBuilder] Move RenderElement::addChild() to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182878
<rdar://problem/37608349>

Reviewed by Antti Koivisto.

This patch removes the last addChild() related mutation logic from the renderers.

No change in functionality.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::didInsertChild):
(WebCore::RenderElement::addChild): Deleted.
* rendering/RenderElement.h:
(WebCore::RenderElement::isChildAllowed const):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::insertChildToRenderElement):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation):
* rendering/updating/RenderTreeBuilderInline.cpp:
(WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation):
* rendering/updating/RenderTreeBuilderSVG.cpp:
(WebCore::RenderTreeBuilder::SVG::insertChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::insertChild):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (228565 => 228566)


--- trunk/Source/WebCore/ChangeLog	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/ChangeLog	2018-02-16 19:25:18 UTC (rev 228566)
@@ -1,3 +1,33 @@
+2018-02-16  Zalan Bujtas  <[email protected]>
+
+        [RenderTreeBuilder] Move RenderElement::addChild() to RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=182878
+        <rdar://problem/37608349>
+
+        Reviewed by Antti Koivisto.
+
+        This patch removes the last addChild() related mutation logic from the renderers.
+
+        No change in functionality.
+
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::didInsertChild):
+        (WebCore::RenderElement::addChild): Deleted.
+        * rendering/RenderElement.h:
+        (WebCore::RenderElement::isChildAllowed const):
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::insertChild):
+        (WebCore::RenderTreeBuilder::insertChildToRenderElement):
+        * rendering/updating/RenderTreeBuilder.h:
+        * rendering/updating/RenderTreeBuilderBlock.cpp:
+        (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation):
+        * rendering/updating/RenderTreeBuilderInline.cpp:
+        (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation):
+        * rendering/updating/RenderTreeBuilderSVG.cpp:
+        (WebCore::RenderTreeBuilder::SVG::insertChild):
+        * rendering/updating/RenderTreeBuilderTable.cpp:
+        (WebCore::RenderTreeBuilder::Table::insertChild):
+
 2018-02-16  Matt Lewis  <[email protected]>
 
         Unreviewed, rolling out r228546.

Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/RenderElement.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -456,11 +456,8 @@
     }
 }
 
-void RenderElement::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
+void RenderElement::didInsertChild(RenderObject& child, RenderObject*)
 {
-    auto& child = *newChild;
-    builder.insertChildToRenderElement(*this, WTFMove(newChild), beforeChild);
-
     if (is<RenderText>(child))
         downcast<RenderText>(child).styleDidChange(StyleDifferenceEqual, nullptr);
     // SVG creates renderers for <g display="none">, as SVG requires children of hidden

Modified: trunk/Source/WebCore/rendering/RenderElement.h (228565 => 228566)


--- trunk/Source/WebCore/rendering/RenderElement.h	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/RenderElement.h	2018-02-16 19:25:18 UTC (rev 228566)
@@ -87,9 +87,9 @@
     bool isRenderInline() const;
 
     virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const { return true; }
-    virtual void addChild(RenderTreeBuilder&, RenderPtr<RenderObject>, RenderObject* beforeChild);
     virtual void addChildIgnoringContinuation(RenderTreeBuilder&, RenderPtr<RenderObject> newChild, RenderObject* beforeChild = nullptr);
     void removeAndDestroyChild(RenderTreeBuilder&, RenderObject&);
+    void didInsertChild(RenderObject& child, RenderObject* beforeChild);
 
     // The following functions are used when the render tree hierarchy changes to make sure layers get
     // properly added and removed. Since containership can be implemented by any subclass, and since a hierarchy

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -142,7 +142,7 @@
 {
     auto insertRecursiveIfNeeded = [&](RenderElement& parentCandidate) {
         if (&parent == &parentCandidate) {
-            parent.addChild(*this, WTFMove(child), beforeChild);
+            insertChildToRenderElement(parent, WTFMove(child), beforeChild);
             return;
         }
         insertChild(parentCandidate, WTFMove(child), beforeChild);
@@ -255,7 +255,7 @@
         return;
     }
 
-    parent.addChild(*this, WTFMove(child), beforeChild);
+    insertChildToRenderElement(parent, WTFMove(child), beforeChild);
 }
 
 RenderPtr<RenderObject> RenderTreeBuilder::takeChild(RenderElement& parent, RenderObject& child)
@@ -320,7 +320,9 @@
         insertChild(*table, WTFMove(child));
         return;
     }
-    parent.RenderElement::insertChildInternal(WTFMove(child), beforeChild);
+    auto& newChild = *child.get();
+    parent.insertChildInternal(WTFMove(child), beforeChild);
+    parent.didInsertChild(newChild, beforeChild);
 }
 
 void RenderTreeBuilder::insertChildToRenderBlockIgnoringContinuation(RenderBlock& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-16 19:25:18 UTC (rev 228566)
@@ -63,7 +63,6 @@
     static RenderTreeBuilder* current() { return s_current; }
 
     // These functions are temporary until after all block/inline/continuation code is moved over.
-    void insertChildToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
     void insertChildToRenderBlockIgnoringContinuation(RenderBlock& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     void insertChildToRenderInlineIgnoringContinuation(RenderInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
 
@@ -95,6 +94,7 @@
     RenderPtr<RenderObject> takeChildFromRenderGrid(RenderGrid& parent, RenderObject& child);
 
     void insertChildToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
 
     FirstLetter& firstLetterBuilder() { return *m_firstLetterBuilder; }
     List& listBuilder() { return *m_listBuilder; }

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -223,7 +223,7 @@
             // No suitable existing anonymous box - create a new one.
             auto newBox = parent.createAnonymousBlock();
             auto& box = *newBox;
-            parent.RenderElement::addChild(m_builder, WTFMove(newBox), beforeChild);
+            m_builder.insertChildToRenderElement(parent, WTFMove(newBox), beforeChild);
             m_builder.insertChild(box, WTFMove(child));
             return;
         }
@@ -231,7 +231,7 @@
 
     parent.invalidateLineLayoutPath();
 
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
 
     if (madeBoxesNonInline && is<RenderBlock>(parent.parent()) && parent.isAnonymousBlock())
         removeLeftoverAnonymousBlock(parent);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderInline.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderInline.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderInline.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -188,7 +188,7 @@
     }
 
     auto& childToAdd = *child;
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
     childToAdd.setNeedsLayoutAndPrefWidthsRecalc();
 }
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -43,7 +43,7 @@
 void RenderTreeBuilder::SVG::insertChild(RenderSVGContainer& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
 {
     auto& childToAdd = *child;
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
     SVGResourcesCache::clientWasAddedToTree(childToAdd);
 }
 
@@ -60,7 +60,7 @@
 void RenderTreeBuilder::SVG::insertChild(RenderSVGRoot& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
 {
     auto& childToAdd = *child;
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
     SVGResourcesCache::clientWasAddedToTree(childToAdd);
 }
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (228565 => 228566)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-16 19:12:29 UTC (rev 228565)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-16 19:25:18 UTC (rev 228566)
@@ -168,7 +168,7 @@
 
     auto& newChild = *child.get();
     ASSERT(!beforeChild || is<RenderTableCell>(*beforeChild));
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
     // FIXME: child should always be a RenderTableCell at this point.
     if (is<RenderTableCell>(newChild))
         parent.didInsertTableCell(downcast<RenderTableCell>(newChild), beforeChild);
@@ -183,7 +183,7 @@
     if (is<RenderTableRow>(*child.get()))
         parent.willInsertTableRow(downcast<RenderTableRow>(*child.get()), beforeChild);
     ASSERT(!beforeChild || is<RenderTableRow>(*beforeChild));
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
 }
 
 void RenderTreeBuilder::Table::insertChild(RenderTable& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
@@ -197,7 +197,7 @@
     else if (is<RenderTableCol>(newChild))
         parent.willInsertTableColumn(downcast<RenderTableCol>(newChild), beforeChild);
 
-    parent.RenderElement::addChild(m_builder, WTFMove(child), beforeChild);
+    m_builder.insertChildToRenderElement(parent, WTFMove(child), beforeChild);
 }
 
 bool RenderTreeBuilder::Table::childRequiresTable(const RenderElement& parent, const RenderObject& child)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to