Title: [228542] trunk/Source/WebCore
Revision
228542
Author
[email protected]
Date
2018-02-15 16:42:09 -0800 (Thu, 15 Feb 2018)

Log Message

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

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::didInsertTableCell):
(WebCore::RenderTableRow::addChild): Deleted.
* rendering/RenderTableRow.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::insertChildToRenderTableRow): Deleted.
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::insertChild):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (228541 => 228542)


--- trunk/Source/WebCore/ChangeLog	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/ChangeLog	2018-02-16 00:42:09 UTC (rev 228542)
@@ -1,3 +1,24 @@
+2018-02-15  Zalan Bujtas  <[email protected]>
+
+        [RenderTreeBuilder] Move RenderTableRow::addChild() to RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=182838
+        <rdar://problem/37580762>
+
+        Reviewed by Antti Koivisto.
+
+        No change in functionality.
+
+        * rendering/RenderTableRow.cpp:
+        (WebCore::RenderTableRow::didInsertTableCell):
+        (WebCore::RenderTableRow::addChild): Deleted.
+        * rendering/RenderTableRow.h:
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::insertChild):
+        (WebCore::RenderTreeBuilder::insertChildToRenderTableRow): Deleted.
+        * rendering/updating/RenderTreeBuilder.h:
+        * rendering/updating/RenderTreeBuilderTable.cpp:
+        (WebCore::RenderTreeBuilder::Table::insertChild):
+
 2018-02-15  Antoine Quint  <[email protected]>
 
         [Web Animations] Ensure that changing the timing model updates styles synchronously

Modified: trunk/Source/WebCore/rendering/RenderTableRow.cpp (228541 => 228542)


--- trunk/Source/WebCore/rendering/RenderTableRow.cpp	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/rendering/RenderTableRow.cpp	2018-02-16 00:42:09 UTC (rev 228542)
@@ -111,14 +111,11 @@
     return style().borderEnd();
 }
 
-void RenderTableRow::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+void RenderTableRow::didInsertTableCell(RenderTableCell& child, RenderObject* 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>(childToAdd), this);
+        section->addCell(&child, this);
         if (beforeChild || nextRow())
             section->setNeedsCellRecalc();
     }

Modified: trunk/Source/WebCore/rendering/RenderTableRow.h (228541 => 228542)


--- trunk/Source/WebCore/rendering/RenderTableRow.h	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/rendering/RenderTableRow.h	2018-02-16 00:42:09 UTC (rev 228542)
@@ -59,12 +59,12 @@
     const BorderValue& borderAdjoiningStartCell(const RenderTableCell&) const;
     const BorderValue& borderAdjoiningEndCell(const RenderTableCell&) const;
 
-    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = 0) override;
-
     bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override;
 
     RenderTableSection* section() const { return downcast<RenderTableSection>(parent()); }
 
+    void didInsertTableCell(RenderTableCell& child, RenderObject* beforeChild);
+
 private:
     static RenderPtr<RenderTableRow> createTableRowWithStyle(Document&, const RenderStyle&);
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228541 => 228542)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-16 00:42:09 UTC (rev 228542)
@@ -156,7 +156,12 @@
     }
 
     if (is<RenderTableRow>(parent)) {
-        insertRecursiveIfNeeded(tableBuilder().findOrCreateParentForChild(downcast<RenderTableRow>(parent), *child, beforeChild));
+        auto& parentCandidate = tableBuilder().findOrCreateParentForChild(downcast<RenderTableRow>(parent), *child, beforeChild);
+        if (&parentCandidate == &parent) {
+            tableBuilder().insertChild(downcast<RenderTableRow>(parentCandidate), WTFMove(child), beforeChild);
+            return;
+        }
+        insertRecursiveIfNeeded(parentCandidate);
         return;
     }
 
@@ -508,11 +513,6 @@
     inlineBuilder().insertChildIgnoringContinuation(parent, WTFMove(child), beforeChild);
 }
 
-void RenderTreeBuilder::insertChildToRenderTableRow(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
-{
-    tableBuilder().insertChild(parent, WTFMove(child), beforeChild);
-}
-
 void RenderTreeBuilder::insertChildToRenderBlockFlow(RenderBlockFlow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
 {
     blockFlowBuilder().insertChild(parent, WTFMove(child), beforeChild);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (228541 => 228542)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2018-02-16 00:42:09 UTC (rev 228542)
@@ -68,7 +68,6 @@
     void insertChildToRenderBlockIgnoringContinuation(RenderBlock& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     void insertChildToRenderBlockFlow(RenderBlockFlow& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     void insertChildToRenderInlineIgnoringContinuation(RenderInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
-    void insertChildToRenderTableRow(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
 
     RenderPtr<RenderObject> takeChildFromRenderElement(RenderElement& parent, RenderObject& child) WARN_UNUSED_RETURN;
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (228541 => 228542)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-16 00:38:43 UTC (rev 228541)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-16 00:42:09 UTC (rev 228542)
@@ -166,8 +166,12 @@
     if (beforeChild && beforeChild->parent() != &parent)
         beforeChild = m_builder.splitAnonymousBoxesAroundChild(parent, beforeChild);
 
+    auto& newChild = *child.get();
     ASSERT(!beforeChild || is<RenderTableCell>(*beforeChild));
     parent.RenderBox::addChild(m_builder, WTFMove(child), beforeChild);
+    // FIXME: child should always be a RenderTableCell at this point.
+    if (is<RenderTableCell>(newChild))
+        parent.didInsertTableCell(downcast<RenderTableCell>(newChild), beforeChild);
 }
 
 void RenderTreeBuilder::Table::insertChild(RenderTableSection& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to