Title: [226634] trunk/Source/WebCore
Revision
226634
Author
[email protected]
Date
2018-01-09 08:15:23 -0800 (Tue, 09 Jan 2018)

Log Message

[RenderTreeBuilder] Move RenderTable* addChild mutation logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181424
<rdar://problem/36368628>

Reviewed by Antti Koivisto.

This is about moving code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

Covered by existing tests.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChildToRenderTable):
(WebCore::RenderTreeBuilder::insertChildToRenderTableSection):
(WebCore::RenderTreeBuilder::insertChildToRenderTableRow):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::insertChild):
* rendering/updating/RenderTreeBuilderTable.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (226633 => 226634)


--- trunk/Source/WebCore/ChangeLog	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/ChangeLog	2018-01-09 16:15:23 UTC (rev 226634)
@@ -1,5 +1,33 @@
 2018-01-09  Zalan Bujtas  <[email protected]>
 
+        [RenderTreeBuilder] Move RenderTable* addChild mutation logic to RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=181424
+        <rdar://problem/36368628>
+
+        Reviewed by Antti Koivisto.
+
+        This is about moving code, no cleanup and/or normalization (unfortunately it also means
+        some temporary changes).  
+
+        Covered by existing tests.
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::addChild):
+        * rendering/RenderTableRow.cpp:
+        (WebCore::RenderTableRow::addChild):
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::addChild):
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::insertChildToRenderTable):
+        (WebCore::RenderTreeBuilder::insertChildToRenderTableSection):
+        (WebCore::RenderTreeBuilder::insertChildToRenderTableRow):
+        * rendering/updating/RenderTreeBuilder.h:
+        * rendering/updating/RenderTreeBuilderTable.cpp:
+        (WebCore::RenderTreeBuilder::Table::insertChild):
+        * rendering/updating/RenderTreeBuilderTable.h:
+
+2018-01-09  Zalan Bujtas  <[email protected]>
+
         [RenderTreeBuilder] Transition Render*::addChild() calls to RenderTreeBuilder::insertChildToRender*()
         https://bugs.webkit.org/show_bug.cgi?id=181407
         <rdar://problem/36361176>

Modified: trunk/Source/WebCore/rendering/RenderTable.cpp (226633 => 226634)


--- trunk/Source/WebCore/rendering/RenderTable.cpp	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/RenderTable.cpp	2018-01-09 16:15:23 UTC (rev 226634)
@@ -169,10 +169,7 @@
     if (is<RenderTableSection>(*child))
         setNeedsSectionRecalc();
 
-    if (beforeChild && beforeChild->parent() != this)
-        beforeChild = builder.splitAnonymousBoxesAroundChild(*this, beforeChild);
-
-    RenderBox::addChild(builder, WTFMove(child), beforeChild);
+    builder.insertChildToRenderTable(*this, WTFMove(child), beforeChild);
 }
 
 void RenderTable::addCaption(RenderTableCaption& caption)

Modified: trunk/Source/WebCore/rendering/RenderTableRow.cpp (226633 => 226634)


--- trunk/Source/WebCore/rendering/RenderTableRow.cpp	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/RenderTableRow.cpp	2018-01-09 16:15:23 UTC (rev 226634)
@@ -113,19 +113,16 @@
 
 void RenderTableRow::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> child, RenderObject* beforeChild)
 {
-    if (beforeChild && beforeChild->parent() != this)
-        beforeChild = builder.splitAnonymousBoxesAroundChild(*this, beforeChild);    
+    auto& childToAdd = *child;
+    builder.insertChildToRenderTableRow(*this, WTFMove(child), beforeChild);
 
     // Generated content can result in us having a null section so make sure to null check our parent.
-    if (auto* section = this->section())
-        section->addCell(&downcast<RenderTableCell>(*child), this);
-
-    ASSERT(!beforeChild || is<RenderTableCell>(*beforeChild));
-    RenderBox::addChild(builder, WTFMove(child), beforeChild);
-
-    if (beforeChild || nextRow())
-        section()->setNeedsCellRecalc();
-    if (RenderTable* table = this->table())
+    if (auto* section = this->section()) {
+        section->addCell(&downcast<RenderTableCell>(childToAdd), this);
+        if (beforeChild || nextRow())
+            section->setNeedsCellRecalc();
+    }
+    if (auto* table = this->table())
         table->invalidateCollapsedBorders();
 }
 

Modified: trunk/Source/WebCore/rendering/RenderTableSection.cpp (226633 => 226634)


--- trunk/Source/WebCore/rendering/RenderTableSection.cpp	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/RenderTableSection.cpp	2018-01-09 16:15:23 UTC (rev 226634)
@@ -138,12 +138,7 @@
 
     if (!beforeChild)
         setRowLogicalHeightToRowStyleLogicalHeightIfNotRelative(m_grid[insertionRow]);
-
-    if (beforeChild && beforeChild->parent() != this)
-        beforeChild = builder.splitAnonymousBoxesAroundChild(*this, beforeChild);
-
-    ASSERT(!beforeChild || is<RenderTableRow>(*beforeChild));
-    RenderBox::addChild(builder, WTFMove(child), beforeChild);
+    builder.insertChildToRenderTableSection(*this, WTFMove(child), beforeChild);
 }
 
 void RenderTableSection::ensureRows(unsigned numRows)

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (226633 => 226634)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-01-09 16:15:23 UTC (rev 226634)
@@ -31,7 +31,9 @@
 #include "RenderRuby.h"
 #include "RenderRubyBase.h"
 #include "RenderRubyRun.h"
+#include "RenderTable.h"
 #include "RenderTableRow.h"
+#include "RenderTableSection.h"
 #include "RenderText.h"
 #include "RenderTreeBuilderBlock.h"
 #include "RenderTreeBuilderBlockFlow.h"
@@ -307,6 +309,21 @@
     svgBuilder().insertChild(parent, WTFMove(child), beforeChild);
 }
 
+void RenderTreeBuilder::insertChildToRenderTable(RenderTable& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    tableBuilder().insertChild(parent, WTFMove(child), beforeChild);
+}
+
+void RenderTreeBuilder::insertChildToRenderTableSection(RenderTableSection& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    tableBuilder().insertChild(parent, WTFMove(child), beforeChild);
+}
+
+void RenderTreeBuilder::insertChildToRenderTableRow(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    tableBuilder().insertChild(parent, WTFMove(child), beforeChild);
+}
+
 void RenderTreeBuilder::splitFlow(RenderInline& parent, RenderObject* beforeChild, RenderPtr<RenderBlock> newBlockBox, RenderPtr<RenderObject> child, RenderBoxModelObject* oldCont)
 {
     inlineBuilder().splitFlow(parent, beforeChild, WTFMove(newBlockBox), WTFMove(child), oldCont);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (226633 => 226634)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-01-09 16:15:23 UTC (rev 226634)
@@ -34,6 +34,9 @@
 class RenderSVGInline;
 class RenderSVGRoot;
 class RenderSVGText;
+class RenderTable;
+class RenderTableRow;
+class RenderTableSection;
 class RenderTreeUpdater;
 
 class RenderTreeBuilder {
@@ -60,6 +63,9 @@
     void insertChildToSVGInline(RenderSVGInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     void insertChildToSVGRoot(RenderSVGRoot& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     void insertChildToSVGText(RenderSVGText& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderTable(RenderTable& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderTableSection(RenderTableSection& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+    void insertChildToRenderTableRow(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
 
     void makeChildrenNonInline(RenderBlock& parent, RenderObject* insertionPoint = nullptr);
     RenderObject* splitAnonymousBoxesAroundChild(RenderBox& parent, RenderObject* beforeChild);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (226633 => 226634)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-01-09 16:15:23 UTC (rev 226634)
@@ -161,4 +161,30 @@
     return section;
 }
 
+void RenderTreeBuilder::Table::insertChild(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    if (beforeChild && beforeChild->parent() != &parent)
+        beforeChild = m_builder.splitAnonymousBoxesAroundChild(parent, beforeChild);
+
+    ASSERT(!beforeChild || is<RenderTableCell>(*beforeChild));
+    parent.RenderBox::addChild(m_builder, WTFMove(child), beforeChild);
 }
+
+void RenderTreeBuilder::Table::insertChild(RenderTableSection& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    if (beforeChild && beforeChild->parent() != &parent)
+        beforeChild = m_builder.splitAnonymousBoxesAroundChild(parent, beforeChild);
+
+    ASSERT(!beforeChild || is<RenderTableRow>(*beforeChild));
+    parent.RenderBox::addChild(m_builder, WTFMove(child), beforeChild);
+}
+
+void RenderTreeBuilder::Table::insertChild(RenderTable& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+    if (beforeChild && beforeChild->parent() != &parent)
+        beforeChild = m_builder.splitAnonymousBoxesAroundChild(parent, beforeChild);
+
+    parent.RenderBox::addChild(m_builder, WTFMove(child), beforeChild);
+}
+
+}

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h (226633 => 226634)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h	2018-01-09 15:53:38 UTC (rev 226633)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h	2018-01-09 16:15:23 UTC (rev 226634)
@@ -44,6 +44,10 @@
     RenderElement& findOrCreateParentForChild(RenderTableSection& parent, const RenderObject& child, RenderObject*& beforeChild);
     RenderElement& findOrCreateParentForChild(RenderTable& parent, const RenderObject& child, RenderObject*& beforeChild);
 
+    void insertChild(RenderTable& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
+    void insertChild(RenderTableSection& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
+    void insertChild(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
+
 private:
     RenderTreeBuilder& m_builder;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to