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)