Title: [228595] trunk/Source/WebCore
Revision
228595
Author
[email protected]
Date
2018-02-16 22:01:58 -0800 (Fri, 16 Feb 2018)

Log Message

[RenderTreeBuilder] Cleanup RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182899
<rdar://problem/37627888>

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::styleDidChange):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChild):
(WebCore::RenderTreeBuilder::moveChildTo):
(WebCore::RenderTreeBuilder::moveAllChildrenTo):
(WebCore::RenderTreeBuilder::moveChildrenTo):
(WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloatsTo):
(WebCore::RenderTreeBuilder::makeChildrenNonInline):
(WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild):
(WebCore::RenderTreeBuilder::takeChildFromRenderMenuList): Deleted.
(WebCore::RenderTreeBuilder::takeChildFromRenderButton): Deleted.
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::current):
* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild):
* rendering/updating/RenderTreeBuilderBlockFlow.cpp:
(WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo):
* rendering/updating/RenderTreeBuilderFormControls.cpp:
(WebCore::RenderTreeBuilder::FormControls::takeChild):
* rendering/updating/RenderTreeBuilderFormControls.h:
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::moveInlineChildren):
(WebCore::RenderTreeBuilder::Ruby::moveBlockChildren):
(WebCore::RenderTreeBuilder::Ruby::takeChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (228594 => 228595)


--- trunk/Source/WebCore/ChangeLog	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/ChangeLog	2018-02-17 06:01:58 UTC (rev 228595)
@@ -1,3 +1,44 @@
+2018-02-16  Zalan Bujtas  <[email protected]>
+
+        [RenderTreeBuilder] Cleanup RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=182899
+        <rdar://problem/37627888>
+
+        Reviewed by Antti Koivisto.
+
+        No change in functionality.
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::styleDidChange):
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::takeChild):
+        (WebCore::RenderTreeBuilder::moveChildTo):
+        (WebCore::RenderTreeBuilder::moveAllChildrenTo):
+        (WebCore::RenderTreeBuilder::moveChildrenTo):
+        (WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloatsTo):
+        (WebCore::RenderTreeBuilder::makeChildrenNonInline):
+        (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild):
+        (WebCore::RenderTreeBuilder::takeChildFromRenderMenuList): Deleted.
+        (WebCore::RenderTreeBuilder::takeChildFromRenderButton): Deleted.
+        * rendering/updating/RenderTreeBuilder.h:
+        (WebCore::RenderTreeBuilder::current):
+        * rendering/updating/RenderTreeBuilderBlock.cpp:
+        (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild):
+        * rendering/updating/RenderTreeBuilderBlockFlow.cpp:
+        (WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo):
+        * rendering/updating/RenderTreeBuilderFormControls.cpp:
+        (WebCore::RenderTreeBuilder::FormControls::takeChild):
+        * rendering/updating/RenderTreeBuilderFormControls.h:
+        * rendering/updating/RenderTreeBuilderMultiColumn.cpp:
+        (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
+        (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
+        * rendering/updating/RenderTreeBuilderRuby.cpp:
+        (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren):
+        (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren):
+        (WebCore::RenderTreeBuilder::Ruby::takeChild):
+        * rendering/updating/RenderTreeBuilderTable.cpp:
+        (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):
+
 2018-02-16  Daniel Bates  <[email protected]>
 
         Remove dead code for UTF-32

Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -2023,7 +2023,7 @@
     // Fresh floats need to be reparented if they actually belong to the previous anonymous block.
     // It copies the logic of RenderBlock::addChildIgnoringContinuation
     if (noLongerAffectsParentBlock() && style().isFloating() && previousSibling() && previousSibling()->isAnonymousBlock())
-        RenderTreeBuilder::current()->moveChildTo(downcast<RenderBoxModelObject>(*parent()), &downcast<RenderBoxModelObject>(*previousSibling()), this, RenderTreeBuilder::NormalizeAfterInsertion::No);
+        RenderTreeBuilder::current()->moveChildTo(downcast<RenderBoxModelObject>(*parent()), downcast<RenderBoxModelObject>(*previousSibling()), *this, RenderTreeBuilder::NormalizeAfterInsertion::No);
 
     if (diff >= StyleDifferenceRepaint) {
         // FIXME: This could use a cheaper style-only test instead of SimpleLineLayout::canUseFor.

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -286,10 +286,10 @@
         return rubyBuilder().takeChild(downcast<RenderRubyRun>(parent), child);
 
     if (is<RenderMenuList>(parent))
-        return takeChildFromRenderMenuList(downcast<RenderMenuList>(parent), child);
+        return formControlsBuilder().takeChild(downcast<RenderMenuList>(parent), child);
 
     if (is<RenderButton>(parent))
-        return takeChildFromRenderButton(downcast<RenderButton>(parent), child);
+        return formControlsBuilder().takeChild(downcast<RenderButton>(parent), child);
 
     if (is<RenderGrid>(parent))
         return takeChildFromRenderGrid(downcast<RenderGrid>(parent), child);
@@ -377,46 +377,46 @@
     newChild->setHasOutlineAutoAncestor();
 }
 
-void RenderTreeBuilder::moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* child, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject& child, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     // We assume that callers have cleared their positioned objects list for child moves so the
     // positioned renderer maps don't become stale. It would be too slow to do the map lookup on each call.
     ASSERT(normalizeAfterInsertion == NormalizeAfterInsertion::No || !is<RenderBlock>(from) || !downcast<RenderBlock>(from).hasPositionedObjects());
 
-    ASSERT(&from == child->parent());
-    ASSERT(!beforeChild || to == beforeChild->parent());
-    if (normalizeAfterInsertion == NormalizeAfterInsertion::Yes && (to->isRenderBlock() || to->isRenderInline())) {
+    ASSERT(&from == child.parent());
+    ASSERT(!beforeChild || &to == beforeChild->parent());
+    if (normalizeAfterInsertion == NormalizeAfterInsertion::Yes && (to.isRenderBlock() || to.isRenderInline())) {
         // Takes care of adding the new child correctly if toBlock and fromBlock
         // have different kind of children (block vs inline).
-        auto childToMove = takeChildFromRenderElement(from, *child);
-        insertChild(*to, WTFMove(childToMove), beforeChild);
+        auto childToMove = takeChildFromRenderElement(from, child);
+        insertChild(to, WTFMove(childToMove), beforeChild);
     } else {
-        auto childToMove = takeChildFromRenderElement(from, *child);
-        insertChildToRenderElementInternal(*to, WTFMove(childToMove), beforeChild);
+        auto childToMove = takeChildFromRenderElement(from, child);
+        insertChildToRenderElementInternal(to, WTFMove(childToMove), beforeChild);
     }
 }
 
-void RenderTreeBuilder::moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* child, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject& child, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     moveChildTo(from, to, child, nullptr, normalizeAfterInsertion);
 }
 
-void RenderTreeBuilder::moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     moveAllChildrenTo(from, to, nullptr, normalizeAfterInsertion);
 }
 
-void RenderTreeBuilder::moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     moveChildrenTo(from, to, from.firstChild(), nullptr, beforeChild, normalizeAfterInsertion);
 }
 
-void RenderTreeBuilder::moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* startChild, RenderObject* endChild, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* startChild, RenderObject* endChild, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     moveChildrenTo(from, to, startChild, endChild, nullptr, normalizeAfterInsertion);
 }
 
-void RenderTreeBuilder::moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
+void RenderTreeBuilder::moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, NormalizeAfterInsertion normalizeAfterInsertion)
 {
     // This condition is rarely hit since this function is usually called on
     // anonymous blocks which can no longer carry positioned objects (see r120761)
@@ -427,7 +427,7 @@
             downcast<RenderBlockFlow>(from).removeFloatingObjects();
     }
 
-    ASSERT(!beforeChild || to == beforeChild->parent());
+    ASSERT(!beforeChild || &to == beforeChild->parent());
     for (RenderObject* child = startChild; child && child != endChild; ) {
         // Save our next sibling as moveChildTo will clear it.
         RenderObject* nextSibling = child->nextSibling();
@@ -449,7 +449,7 @@
             nextSibling = nextSibling->nextSibling();
         }
 
-        moveChildTo(from, to, child, beforeChild, normalizeAfterInsertion);
+        moveChildTo(from, to, *child, beforeChild, normalizeAfterInsertion);
         child = nextSibling;
     }
 }
@@ -460,7 +460,7 @@
         blockFlowBuilder().moveAllChildrenIncludingFloatsTo(downcast<RenderBlockFlow>(from), to, normalizeAfterInsertion);
         return;
     }
-    moveAllChildrenTo(from, &to, normalizeAfterInsertion);
+    moveAllChildrenTo(from, to, normalizeAfterInsertion);
 }
 
 void RenderTreeBuilder::makeChildrenNonInline(RenderBlock& parent, RenderObject* insertionPoint)
@@ -496,7 +496,7 @@
         auto newBlock = parent.createAnonymousBlock();
         auto& block = *newBlock;
         insertChildToRenderElementInternal(parent, WTFMove(newBlock), inlineRunStart);
-        moveChildrenTo(parent, &block, inlineRunStart, child, RenderTreeBuilder::NormalizeAfterInsertion::No);
+        moveChildrenTo(parent, block, inlineRunStart, child, RenderTreeBuilder::NormalizeAfterInsertion::No);
     }
 #ifndef NDEBUG
     for (RenderObject* c = parent.firstChild(); c; c = c->nextSibling())
@@ -525,7 +525,7 @@
             // See for example RenderTableCell:clippedOverflowRectForRepaint.
             markBoxForRelayoutAfterSplit(*parentBox);
             insertChildToRenderElementInternal(*parentBox, WTFMove(newPostBox), boxToSplit.nextSibling());
-            moveChildrenTo(boxToSplit, &postBox, beforeChild, nullptr, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+            moveChildrenTo(boxToSplit, postBox, beforeChild, nullptr, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
 
             markBoxForRelayoutAfterSplit(boxToSplit);
             markBoxForRelayoutAfterSplit(postBox);
@@ -658,24 +658,6 @@
         multiColumnBuilder().updateAfterDescendants(downcast<RenderBlockFlow>(renderer));
 }
 
-RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderMenuList(RenderMenuList& parent, RenderObject& child)
-{
-    auto* innerRenderer = parent.innerRenderer();
-    if (!innerRenderer || &child == innerRenderer)
-        return blockBuilder().takeChild(parent, child);
-    return takeChild(*innerRenderer, child);
-}
-
-RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderButton(RenderButton& parent, RenderObject& child)
-{
-    auto* innerRenderer = parent.innerRenderer();
-    if (!innerRenderer || &child == innerRenderer || child.parent() == &parent) {
-        ASSERT(&child == innerRenderer || !innerRenderer);
-        return blockBuilder().takeChild(parent, child);
-    }
-    return takeChild(*innerRenderer, child);
-}
-
 RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderGrid(RenderGrid& parent, RenderObject& child)
 {
     auto takenChild = blockBuilder().takeChild(parent, child);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-17 06:01:58 UTC (rev 228595)
@@ -29,21 +29,7 @@
 
 namespace WebCore {
 
-class RenderButton;
 class RenderGrid;
-class RenderMathMLFenced;
-class RenderMenuList;
-class RenderRubyAsBlock;
-class RenderRubyAsInline;
-class RenderRubyBase;
-class RenderRubyRun;
-class RenderSVGContainer;
-class RenderSVGInline;
-class RenderSVGRoot;
-class RenderSVGText;
-class RenderTable;
-class RenderTableRow;
-class RenderTableSection;
 class RenderTreeUpdater;
 
 class RenderTreeBuilder {
@@ -51,39 +37,48 @@
     RenderTreeBuilder(RenderView&);
     ~RenderTreeBuilder();
 
+    // This avoids having to convert all sites that need RenderTreeBuilder in one go.
+    // FIXME: Remove.
+    static RenderTreeBuilder* current() { return s_current; }
+
     void insertChild(RenderTreePosition&, RenderPtr<RenderObject>);
     void insertChild(RenderElement& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
-    void insertChildIgnoringContinuation(RenderElement& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
 
     RenderPtr<RenderObject> takeChild(RenderElement&, RenderObject&) WARN_UNUSED_RETURN;
 
+    // NormalizeAfterInsertion::Yes ensures that the destination subtree is consistent after the insertion (anonymous wrappers etc).
+    enum class NormalizeAfterInsertion { No, Yes };
+    void moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject& child, NormalizeAfterInsertion);
+
     void updateAfterDescendants(RenderElement&);
+    void removeFromParentAndDestroyCleaningUpAnonymousWrappers(RenderObject& child);
 
-    // This avoids having to convert all sites that need RenderTreeBuilder in one go.
-    // FIXME: Remove.
-    static RenderTreeBuilder* current() { return s_current; }
-
-    // These functions are temporary until after all block/inline/continuation code is moved over.
-    RenderPtr<RenderObject> takeChildFromRenderElement(RenderElement& parent, RenderObject& child) WARN_UNUSED_RETURN;
-    void insertChildToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
-
     void childFlowStateChangesAndAffectsParentBlock(RenderElement& child);
     void childFlowStateChangesAndNoLongerAffectsParentBlock(RenderElement& child);
-    void removeFromParentAndDestroyCleaningUpAnonymousWrappers(RenderObject& child);
     void multiColumnDescendantInserted(RenderMultiColumnFlow&, RenderObject& newDescendant);
 
-    // NormalizeAfterInsertion::Yes ensures that the destination subtree is consistent after the insertion (anonymous wrappers etc).
-    enum class NormalizeAfterInsertion { No, Yes };
-    void moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* child, RenderObject* beforeChild, NormalizeAfterInsertion);
-    void moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* child, NormalizeAfterInsertion);
-    void moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, NormalizeAfterInsertion);
-    void moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* beforeChild, NormalizeAfterInsertion);
+private:
+    void insertChildIgnoringContinuation(RenderElement& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+
+    RenderPtr<RenderObject> takeChildFromRenderElement(RenderElement& parent, RenderObject& child) WARN_UNUSED_RETURN;
+    RenderPtr<RenderObject> takeChildFromRenderGrid(RenderGrid& parent, RenderObject& child) WARN_UNUSED_RETURN;
+
+    void moveChildTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject& child, RenderObject* beforeChild, NormalizeAfterInsertion);
     // Move all of the kids from |startChild| up to but excluding |endChild|. 0 can be passed as the |endChild| to denote
     // that all the kids from |startChild| onwards should be moved.
-    void moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* startChild, RenderObject* endChild, NormalizeAfterInsertion);
-    void moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject* to, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, NormalizeAfterInsertion);
+    void moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* startChild, RenderObject* endChild, NormalizeAfterInsertion);
+    void moveChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, NormalizeAfterInsertion);
+    void moveAllChildrenIncludingFloatsTo(RenderBlock& from, RenderBlock& toBlock, RenderTreeBuilder::NormalizeAfterInsertion);
+    void moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, NormalizeAfterInsertion);
+    void moveAllChildrenTo(RenderBoxModelObject& from, RenderBoxModelObject& to, RenderObject* beforeChild, NormalizeAfterInsertion);
 
-private:
+    RenderObject* splitAnonymousBoxesAroundChild(RenderBox& parent, RenderObject* beforeChild);
+    void makeChildrenNonInline(RenderBlock& parent, RenderObject* insertionPoint = nullptr);
+    void removeAnonymousWrappersForInlineChildrenIfNeeded(RenderElement& parent);
+
     class FirstLetter;
     class List;
     class MultiColumn;
@@ -96,18 +91,6 @@
     class SVG;
     class MathML;
 
-    RenderObject* splitAnonymousBoxesAroundChild(RenderBox& parent, RenderObject* beforeChild);
-    void makeChildrenNonInline(RenderBlock& parent, RenderObject* insertionPoint = nullptr);
-    void removeAnonymousWrappersForInlineChildrenIfNeeded(RenderElement& parent);
-    RenderPtr<RenderObject> takeChildFromRenderMenuList(RenderMenuList& parent, RenderObject& child);
-    RenderPtr<RenderObject> takeChildFromRenderButton(RenderButton& parent, RenderObject& child);
-    RenderPtr<RenderObject> takeChildFromRenderGrid(RenderGrid& parent, RenderObject& child);
-
-    void moveAllChildrenIncludingFloatsTo(RenderBlock& from, RenderBlock& toBlock, RenderTreeBuilder::NormalizeAfterInsertion);
-
-    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; }
     MultiColumn& multiColumnBuilder() { return *m_multiColumnBuilder; }
@@ -121,7 +104,6 @@
     MathML& mathMLBuilder() { return *m_mathMLBuilder; }
 
     RenderView& m_view;
-
     RenderTreeBuilder* m_previous { nullptr };
     static RenderTreeBuilder* s_current;
 
@@ -139,4 +121,3 @@
 };
 
 }
-

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -367,7 +367,7 @@
     auto* nextSibling = child.nextSibling();
 
     auto toBeDeleted = m_builder.takeChildFromRenderElement(parent, child);
-    m_builder.moveAllChildrenTo(child, &parent, nextSibling, RenderTreeBuilder::NormalizeAfterInsertion::No);
+    m_builder.moveAllChildrenTo(child, parent, nextSibling, RenderTreeBuilder::NormalizeAfterInsertion::No);
     // Delete the now-empty block's lines and nuke it.
     child.deleteLines();
 }

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlockFlow.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlockFlow.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlockFlow.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -47,7 +47,7 @@
 
 void RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo(RenderBlockFlow& from, RenderBlock& to, RenderTreeBuilder::NormalizeAfterInsertion normalizeAfterInsertion)
 {
-    m_builder.moveAllChildrenTo(from, &to, normalizeAfterInsertion);
+    m_builder.moveAllChildrenTo(from, to, normalizeAfterInsertion);
     from.addFloatsToNewParent(downcast<RenderBlockFlow>(to));
 }
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -48,6 +48,25 @@
     parent.didInsertChild(newChild, beforeChild);
 }
 
+RenderPtr<RenderObject> RenderTreeBuilder::FormControls::takeChild(RenderMenuList& parent, RenderObject& child)
+{
+    auto* innerRenderer = parent.innerRenderer();
+    if (!innerRenderer || &child == innerRenderer)
+        return m_builder.blockBuilder().takeChild(parent, child);
+    return m_builder.takeChild(*innerRenderer, child);
+}
+
+RenderPtr<RenderObject> RenderTreeBuilder::FormControls::takeChild(RenderButton& parent, RenderObject& child)
+{
+    auto* innerRenderer = parent.innerRenderer();
+    if (!innerRenderer || &child == innerRenderer || child.parent() == &parent) {
+        ASSERT(&child == innerRenderer || !innerRenderer);
+        return m_builder.blockBuilder().takeChild(parent, child);
+    }
+    return m_builder.takeChild(*innerRenderer, child);
+}
+
+
 RenderBlock& RenderTreeBuilder::FormControls::findOrCreateParentForChild(RenderButton& parent)
 {
     auto* innerRenderer = parent.innerRenderer();

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h	2018-02-17 06:01:58 UTC (rev 228595)
@@ -40,6 +40,9 @@
     void insertChild(RenderButton& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
     void insertChild(RenderMenuList& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
 
+    RenderPtr<RenderObject> takeChild(RenderButton& parent, RenderObject& child) WARN_UNUSED_RETURN;
+    RenderPtr<RenderObject> takeChild(RenderMenuList& parent, RenderObject& child) WARN_UNUSED_RETURN;
+
 private:
     RenderBlock& findOrCreateParentForChild(RenderButton&);
     RenderBlock& findOrCreateParentForChild(RenderMenuList&);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -172,12 +172,12 @@
     m_builder.blockBuilder().insertChild(flow, WTFMove(newFragmentedFlow), nullptr);
 
     // Reparent children preceding the fragmented flow into the fragmented flow.
-    m_builder.moveChildrenTo(flow, &fragmentedFlow, flow.firstChild(), &fragmentedFlow, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+    m_builder.moveChildrenTo(flow, fragmentedFlow, flow.firstChild(), &fragmentedFlow, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
     if (flow.isFieldset()) {
         // Keep legends out of the flow thread.
         for (auto& box : childrenOfType<RenderBox>(fragmentedFlow)) {
             if (box.isLegend())
-                m_builder.moveChildTo(fragmentedFlow, &flow, &box, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+                m_builder.moveChildTo(fragmentedFlow, flow, box, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
         }
     }
 
@@ -185,7 +185,7 @@
         // Keep the middle block out of the flow thread.
         for (auto& element : childrenOfType<RenderElement>(fragmentedFlow)) {
             if (!downcast<RenderLinesClampFlow>(fragmentedFlow).isChildAllowedInFragmentedFlow(flow, element))
-                m_builder.moveChildTo(fragmentedFlow, &flow, &element, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+                m_builder.moveChildTo(fragmentedFlow, flow, element, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
         }
     }
 
@@ -215,7 +215,7 @@
         columnSet->removeFromParentAndDestroy(m_builder);
 
     flow.clearMultiColumnFlow();
-    m_builder.moveAllChildrenTo(multiColumnFlow, &flow, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+    m_builder.moveAllChildrenTo(multiColumnFlow, flow, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
     multiColumnFlow.removeFromParentAndDestroy(m_builder);
     for (auto& parentAndSpanner : parentAndSpannerList)
         m_builder.insertChild(*parentAndSpanner.first, WTFMove(parentAndSpanner.second));

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -142,8 +142,9 @@
             m_builder.insertChildToRenderElementInternal(to, WTFMove(newToBlock));
         }
     }
+    ASSERT(toBlock);
     // Move our inline children into the target block we determined above.
-    m_builder.moveChildrenTo(from, toBlock, from.firstChild(), beforeChild, RenderTreeBuilder::NormalizeAfterInsertion::No);
+    m_builder.moveChildrenTo(from, *toBlock, from.firstChild(), beforeChild, RenderTreeBuilder::NormalizeAfterInsertion::No);
 }
 
 void RenderTreeBuilder::Ruby::moveBlockChildren(RenderRubyBase& from, RenderRubyBase& to, RenderObject* beforeChild)
@@ -163,12 +164,12 @@
         && lastChildThere && lastChildThere->isAnonymousBlock() && lastChildThere->childrenInline()) {
         auto* anonBlockHere = downcast<RenderBlock>(firstChildHere);
         auto* anonBlockThere = downcast<RenderBlock>(lastChildThere);
-        m_builder.moveAllChildrenTo(*anonBlockHere, anonBlockThere, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
+        m_builder.moveAllChildrenTo(*anonBlockHere, *anonBlockThere, RenderTreeBuilder::NormalizeAfterInsertion::Yes);
         anonBlockHere->deleteLines();
         anonBlockHere->removeFromParentAndDestroy(m_builder);
     }
     // Move all remaining children normally.
-    m_builder.moveChildrenTo(from, &to, from.firstChild(), beforeChild, RenderTreeBuilder::NormalizeAfterInsertion::No);
+    m_builder.moveChildrenTo(from, to, from.firstChild(), beforeChild, RenderTreeBuilder::NormalizeAfterInsertion::No);
 }
 
 void RenderTreeBuilder::Ruby::moveChildren(RenderRubyBase& from, RenderRubyBase& to)
@@ -438,8 +439,8 @@
                 RenderRubyBase* rightBase = rightRun.rubyBase();
                 // Collect all children in a single base, then swap the bases.
                 moveChildren(*rightBase, *base);
-                m_builder.moveChildTo(parent, &rightRun, base, RenderTreeBuilder::NormalizeAfterInsertion::No);
-                m_builder.moveChildTo(rightRun, &parent, rightBase, RenderTreeBuilder::NormalizeAfterInsertion::No);
+                m_builder.moveChildTo(parent, rightRun, *base, RenderTreeBuilder::NormalizeAfterInsertion::No);
+                m_builder.moveChildTo(rightRun, parent, *rightBase, RenderTreeBuilder::NormalizeAfterInsertion::No);
                 // The now empty ruby base will be removed below.
                 ASSERT(!parent.rubyBase()->firstChild());
             }

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (228594 => 228595)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-17 05:49:59 UTC (rev 228594)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-17 06:01:58 UTC (rev 228595)
@@ -248,7 +248,7 @@
             currentRow = currentRow->nextRow();
             continue;
         }
-        m_builder.moveAllChildrenTo(*currentRow, rowToInsertInto, RenderTreeBuilder::NormalizeAfterInsertion::No);
+        m_builder.moveAllChildrenTo(*currentRow, *rowToInsertInto, RenderTreeBuilder::NormalizeAfterInsertion::No);
         auto toDestroy = m_builder.takeChild(*section, *currentRow);
         currentRow = currentRow->nextRow();
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to