Title: [228529] trunk/Source/WebCore
Revision
228529
Author
[email protected]
Date
2018-02-15 12:01:58 -0800 (Thu, 15 Feb 2018)

Log Message

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

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::willInsertTableColumn):
(WebCore::RenderTable::willInsertTableSection):
(WebCore::RenderTable::addChild): Deleted.
* rendering/RenderTable.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::insertChild):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (228528 => 228529)


--- trunk/Source/WebCore/ChangeLog	2018-02-15 19:49:24 UTC (rev 228528)
+++ trunk/Source/WebCore/ChangeLog	2018-02-15 20:01:58 UTC (rev 228529)
@@ -1,3 +1,23 @@
+2018-02-15  Zalan Bujtas  <[email protected]>
+
+        [RenderTreeBuilder] Move RenderTable::addChild() to RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=182832
+        <rdar://problem/37576362>
+
+        Reviewed by Antti Koivisto.
+
+        No change in functionality.
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::willInsertTableColumn):
+        (WebCore::RenderTable::willInsertTableSection):
+        (WebCore::RenderTable::addChild): Deleted.
+        * rendering/RenderTable.h:
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::insertChild):
+        * rendering/updating/RenderTreeBuilderTable.cpp:
+        (WebCore::RenderTreeBuilder::Table::insertChild):
+
 2018-02-14  Darin Adler  <[email protected]>
 
         Use std::make_unique instead of explicit calls to new and instead of writing create functions

Modified: trunk/Source/WebCore/rendering/RenderTable.cpp (228528 => 228529)


--- trunk/Source/WebCore/rendering/RenderTable.cpp	2018-02-15 19:49:24 UTC (rev 228528)
+++ trunk/Source/WebCore/rendering/RenderTable.cpp	2018-02-15 20:01:58 UTC (rev 228529)
@@ -133,43 +133,41 @@
         section.clear();
 }
 
-void RenderTable::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+void RenderTable::willInsertTableColumn(RenderTableCol&, RenderObject*)
 {
-    if (is<RenderTableCol>(*child)) {
-        m_hasColElements = true;
-    } else if (is<RenderTableSection>(*child)) {
-        switch (child->style().display()) {
-            case TABLE_HEADER_GROUP:
-                resetSectionPointerIfNotBefore(m_head, beforeChild);
-                if (!m_head) {
-                    m_head = makeWeakPtr(downcast<RenderTableSection>(child.get()));
-                } else {
-                    resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
-                    if (!m_firstBody) 
-                        m_firstBody = makeWeakPtr(downcast<RenderTableSection>(child.get()));
-                }
-                break;
-            case TABLE_FOOTER_GROUP:
-                resetSectionPointerIfNotBefore(m_foot, beforeChild);
-                if (!m_foot) {
-                    m_foot = makeWeakPtr(downcast<RenderTableSection>(child.get()));
-                    break;
-                }
-                FALLTHROUGH;
-            case TABLE_ROW_GROUP:
-                resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
-                if (!m_firstBody)
-                    m_firstBody = makeWeakPtr(downcast<RenderTableSection>(child.get()));
-                break;
-            default:
-                ASSERT_NOT_REACHED();
+    m_hasColElements = true;
+}
+
+void RenderTable::willInsertTableSection(RenderTableSection& child, RenderObject* beforeChild)
+{
+    switch (child.style().display()) {
+    case TABLE_HEADER_GROUP:
+        resetSectionPointerIfNotBefore(m_head, beforeChild);
+        if (!m_head)
+            m_head = makeWeakPtr(child);
+        else {
+            resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
+            if (!m_firstBody)
+                m_firstBody = makeWeakPtr(child);
         }
+        break;
+    case TABLE_FOOTER_GROUP:
+        resetSectionPointerIfNotBefore(m_foot, beforeChild);
+        if (!m_foot) {
+            m_foot = makeWeakPtr(child);
+            break;
+        }
+        FALLTHROUGH;
+    case TABLE_ROW_GROUP:
+        resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
+        if (!m_firstBody)
+            m_firstBody = makeWeakPtr(child);
+        break;
+    default:
+        ASSERT_NOT_REACHED();
     }
 
-    if (is<RenderTableSection>(*child))
-        setNeedsSectionRecalc();
-
-    builder.insertChildToRenderTable(*this, WTFMove(child), beforeChild);
+    setNeedsSectionRecalc();
 }
 
 void RenderTable::addCaption(RenderTableCaption& caption)

Modified: trunk/Source/WebCore/rendering/RenderTable.h (228528 => 228529)


--- trunk/Source/WebCore/rendering/RenderTable.h	2018-02-15 19:49:24 UTC (rev 228528)
+++ trunk/Source/WebCore/rendering/RenderTable.h	2018-02-15 20:01:58 UTC (rev 228529)
@@ -127,8 +127,6 @@
     LayoutUnit calcBorderEnd() const;
     void recalcBordersInRowDirection();
 
-    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = 0) final;
-
     struct ColumnStruct {
         explicit ColumnStruct(unsigned initialSpan = 1)
             : span(initialSpan)
@@ -268,7 +266,10 @@
     LayoutUnit offsetHeightForColumn(const RenderTableCol&) const;
     
     void markForPaginationRelayoutIfNeeded() final;
-    
+
+    void willInsertTableColumn(RenderTableCol& child, RenderObject* beforeChild);
+    void willInsertTableSection(RenderTableSection& child, RenderObject* beforeChild);
+
 protected:
     void styleDidChange(StyleDifference, const RenderStyle* oldStyle) final;
     void simplifiedNormalFlowLayout() final;

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228528 => 228529)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-15 19:49:24 UTC (rev 228528)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2018-02-15 20:01:58 UTC (rev 228529)
@@ -166,7 +166,12 @@
     }
 
     if (is<RenderTable>(parent)) {
-        insertRecursiveIfNeeded(tableBuilder().findOrCreateParentForChild(downcast<RenderTable>(parent), *child, beforeChild));
+        auto& parentCandidate = tableBuilder().findOrCreateParentForChild(downcast<RenderTable>(parent), *child, beforeChild);
+        if (is<RenderTable>(parentCandidate) && &parentCandidate == &parent) {
+            tableBuilder().insertChild(downcast<RenderTable>(parentCandidate), WTFMove(child), beforeChild);
+            return;
+        }
+        insertRecursiveIfNeeded(parentCandidate);
         return;
     }
 

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (228528 => 228529)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-15 19:49:24 UTC (rev 228528)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2018-02-15 20:01:58 UTC (rev 228529)
@@ -184,6 +184,12 @@
     if (beforeChild && beforeChild->parent() != &parent)
         beforeChild = m_builder.splitAnonymousBoxesAroundChild(parent, beforeChild);
 
+    auto& newChild = *child.get();
+    if (is<RenderTableSection>(newChild))
+        parent.willInsertTableSection(downcast<RenderTableSection>(newChild), beforeChild);
+    else if (is<RenderTableCol>(newChild))
+        parent.willInsertTableColumn(downcast<RenderTableCol>(newChild), beforeChild);
+
     parent.RenderBox::addChild(m_builder, WTFMove(child), beforeChild);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to