Diff
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-20 07:26:56 UTC (rev 228737)
@@ -1,5 +1,53 @@
2018-02-12 Zalan Bujtas <za...@apple.com>
+ [RenderTreeBuilder] Introduce RenderTreebuilder::takeChild
+ https://bugs.webkit.org/show_bug.cgi?id=182707
+ <rdar://problem/37473433>
+
+ Reviewed by Antti Koivisto.
+
+ All takeChild calls should go through RenderTreeBuilder::takeChild from now on.
+ This patch also moves the Ruby related takeChild calls to RenderTreeBuilder.
+
+ No change in functionality.
+
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::takeChild):
+ * rendering/RenderElement.cpp:
+ (WebCore::RenderElement::removeAndDestroyChild):
+ * rendering/RenderFullScreen.cpp:
+ (WebCore::RenderFullScreen::wrapExistingRenderer):
+ (WebCore::RenderFullScreen::unwrapRenderer):
+ * rendering/RenderMenuList.cpp:
+ (RenderMenuList::takeChild):
+ * rendering/RenderRuby.cpp:
+ (WebCore::RenderRubyAsInline::takeChild): Deleted.
+ (WebCore::RenderRubyAsBlock::takeChild): Deleted.
+ * rendering/RenderRuby.h:
+ * rendering/RenderRubyRun.cpp:
+ (WebCore::RenderRubyRun::takeChild): Deleted.
+ * rendering/RenderRubyRun.h:
+ * rendering/updating/RenderTreeBuilder.cpp:
+ (WebCore::RenderTreeBuilder::takeChild):
+ (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsInline): Deleted.
+ (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsBlock): Deleted.
+ (WebCore::RenderTreeBuilder::takeChildFromRenderRubyRun): Deleted.
+ * rendering/updating/RenderTreeBuilder.h:
+ * rendering/updating/RenderTreeBuilderFirstLetter.cpp:
+ (WebCore::RenderTreeBuilder::FirstLetter::updateStyle):
+ * rendering/updating/RenderTreeBuilderList.cpp:
+ (WebCore::RenderTreeBuilder::List::updateItemMarker):
+ * rendering/updating/RenderTreeBuilderMultiColumn.cpp:
+ (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
+ (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
+ (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant):
+ * rendering/updating/RenderTreeBuilderRuby.cpp:
+ (WebCore::RenderTreeBuilder::Ruby::takeChild):
+ * rendering/updating/RenderTreeBuilderTable.cpp:
+ (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):
+
+2018-02-12 Zalan Bujtas <za...@apple.com>
+
[RenderTreeBuilder] Move RenderBlock::dropAnonymousBoxChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182704
<rdar://problem/37469469>
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderButton.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderButton.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderButton.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -79,7 +79,7 @@
ASSERT(&oldChild == m_inner || !m_inner);
return RenderFlexibleBox::takeChild(builder, oldChild);
}
- return m_inner->takeChild(builder, oldChild);
+ return builder.takeChild(*m_inner, oldChild);
}
void RenderButton::updateAnonymousChildStyle(RenderStyle& childStyle) const
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderElement.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderElement.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderElement.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -497,7 +497,7 @@
child.removeAndDestroyChild(builder, firstChild);
}
}
- auto toDestroy = takeChild(builder, oldChild);
+ auto toDestroy = builder.takeChild(*this, oldChild);
}
RenderObject* RenderElement::attachRendererInternal(RenderPtr<RenderObject> child, RenderObject* beforeChild)
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderFullScreen.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderFullScreen.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderFullScreen.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -132,7 +132,7 @@
builder.insertChild(parent, WTFMove(newFullscreenRenderer), &renderer);
- auto toMove = parent.takeChild(builder, renderer);
+ auto toMove = builder.takeChild(parent, renderer);
// Always just do a full layout to ensure that line boxes get deleted properly.
// Because objects moved from |parent| to |fullscreenRenderer|, we want to
@@ -178,7 +178,7 @@
// lying around on the child.
if (is<RenderBox>(*child))
downcast<RenderBox>(*child).clearOverrideSize();
- auto childToMove = child->parent()->takeChild(builder, *child);
+ auto childToMove = builder.takeChild(*child->parent(), *child);
builder.insertChild(*parent(), WTFMove(childToMove), this);
parent()->setNeedsLayoutAndPrefWidthsRecalc();
}
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderMenuList.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderMenuList.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderMenuList.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -176,7 +176,7 @@
{
if (!m_innerBlock || &oldChild == m_innerBlock)
return RenderFlexibleBox::takeChild(builder, oldChild);
- return m_innerBlock->takeChild(builder, oldChild);
+ return builder.takeChild(*m_innerBlock, oldChild);
}
void RenderMenuList::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -60,11 +60,6 @@
propagateStyleToAnonymousChildren(PropagateToAllChildren);
}
-RenderPtr<RenderObject> RenderRubyAsInline::takeChild(RenderTreeBuilder& builder, RenderObject& child)
-{
- return builder.takeChildFromRenderRubyAsInline(*this, child);
-}
-
//=== ruby as block object ===
RenderRubyAsBlock::RenderRubyAsBlock(Element& element, RenderStyle&& style)
@@ -80,9 +75,4 @@
propagateStyleToAnonymousChildren(PropagateToAllChildren);
}
-RenderPtr<RenderObject> RenderRubyAsBlock::takeChild(RenderTreeBuilder& builder, RenderObject& child)
-{
- return builder.takeChildFromRenderRubyAsBlock(*this, child);
-}
-
} // namespace WebCore
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.h (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.h 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRuby.h 2018-02-20 07:26:56 UTC (rev 228737)
@@ -56,8 +56,6 @@
RenderRubyAsInline(Element&, RenderStyle&&);
virtual ~RenderRubyAsInline();
- RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject& child) override;
-
protected:
void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
@@ -76,8 +74,6 @@
Element& element() const { return downcast<Element>(nodeForNonAnonymous()); }
- RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject& child) override;
-
protected:
void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -97,11 +97,6 @@
return child.isInline() || child.isRubyText();
}
-RenderPtr<RenderObject> RenderRubyRun::takeChild(RenderTreeBuilder& builder, RenderObject& child)
-{
- return builder.takeChildFromRenderRubyRun(*this, child);
-}
-
RenderPtr<RenderRubyBase> RenderRubyRun::createRubyBase() const
{
auto newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.h (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.h 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/RenderRubyRun.h 2018-02-20 07:26:56 UTC (rev 228737)
@@ -56,7 +56,6 @@
void layoutBlock(bool relayoutChildren, LayoutUnit pageHeight = 0) override;
bool isChildAllowed(const RenderObject&, const RenderStyle&) const override;
- RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject&) override;
RenderBlock* firstLineBlock() const override;
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -187,6 +187,20 @@
parent.addChild(*this, WTFMove(child), beforeChild);
}
+RenderPtr<RenderObject> RenderTreeBuilder::takeChild(RenderElement& parent, RenderObject& child)
+{
+ if (is<RenderRubyAsInline>(parent))
+ return rubyBuilder().takeChild(downcast<RenderRubyAsInline>(parent), child);
+
+ if (is<RenderRubyAsBlock>(parent))
+ return rubyBuilder().takeChild(downcast<RenderRubyAsBlock>(parent), child);
+
+ if (is<RenderRubyRun>(parent))
+ return rubyBuilder().takeChild(downcast<RenderRubyRun>(parent), child);
+
+ return parent.takeChild(*this, child);
+}
+
void RenderTreeBuilder::insertChild(RenderTreePosition& position, RenderPtr<RenderObject> child)
{
insertChild(position.parent(), WTFMove(child), position.nextSibling());
@@ -476,21 +490,6 @@
mathMLBuilder().insertChild(parent, WTFMove(child), beforeChild);
}
-RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderRubyAsInline(RenderRubyAsInline& parent, RenderObject& child)
-{
- return rubyBuilder().takeChild(parent, child);
-}
-
-RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderRubyAsBlock(RenderRubyAsBlock& parent, RenderObject& child)
-{
- return rubyBuilder().takeChild(parent, child);
-}
-
-RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderRubyRun(RenderRubyRun& parent, RenderObject& child)
-{
- return rubyBuilder().takeChild(parent, child);
-}
-
RenderPtr<RenderObject> RenderTreeBuilder::takeChildFromRenderBlock(RenderBlock& parent, RenderObject& oldChild)
{
return blockBuilder().takeChild(parent, oldChild);
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.h (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.h 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilder.h 2018-02-20 07:26:56 UTC (rev 228737)
@@ -51,6 +51,8 @@
void insertChild(RenderElement& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
void insertChild(RenderTreePosition&, RenderPtr<RenderObject>);
+ RenderPtr<RenderObject> takeChild(RenderElement&, RenderObject&) WARN_UNUSED_RETURN;
+
void updateAfterDescendants(RenderElement&);
// This avoids having to convert all sites that need RenderTreeBuilder in one go.
@@ -73,9 +75,6 @@
void insertChildToRenderTableRow(RenderTableRow& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
void insertChildToRenderMathMLFenced(RenderMathMLFenced& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
- RenderPtr<RenderObject> takeChildFromRenderRubyAsInline(RenderRubyAsInline& parent, RenderObject& child);
- RenderPtr<RenderObject> takeChildFromRenderRubyAsBlock(RenderRubyAsBlock& parent, RenderObject& child);
- RenderPtr<RenderObject> takeChildFromRenderRubyRun(RenderRubyRun& parent, RenderObject& child);
RenderPtr<RenderObject> takeChildFromRenderBlock(RenderBlock& parent, RenderObject& oldChild);
bool childRequiresTable(const RenderElement& parent, const RenderObject& child);
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderFirstLetter.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderFirstLetter.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderFirstLetter.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -174,7 +174,7 @@
while (RenderObject* child = firstLetter->firstChild()) {
if (is<RenderText>(*child))
downcast<RenderText>(*child).removeAndDestroyTextBoxes();
- auto toMove = firstLetter->takeChild(m_builder, *child);
+ auto toMove = m_builder.takeChild(*firstLetter, *child);
m_builder.insertChild(*newFirstLetter, WTFMove(toMove));
}
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -115,7 +115,7 @@
return;
if (currentParent)
- m_builder.insertChild(*newParent, currentParent->takeChild(m_builder, *markerRenderer), firstNonMarkerChild(*newParent));
+ m_builder.insertChild(*newParent, m_builder.takeChild(*currentParent, *markerRenderer), firstNonMarkerChild(*newParent));
else
m_builder.insertChild(*newParent, WTFMove(newMarkerRenderer), firstNonMarkerChild(*newParent));
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -160,7 +160,7 @@
// Move the spanner back to its original position.
auto& spannerOriginalParent = *placeholder->parent();
// Detaching the spanner takes care of removing the placeholder (and merges the RenderMultiColumnSets).
- auto spannerToReInsert = spanner->parent()->takeChild(m_builder, *spanner);
+ auto spannerToReInsert = m_builder.takeChild(*spanner->parent(), *spanner);
m_builder.insertChild(spannerOriginalParent, WTFMove(spannerToReInsert));
}
}
@@ -208,7 +208,7 @@
spannerOriginalParent = &flow;
// Detaching the spanner takes care of removing the placeholder (and merges the RenderMultiColumnSets).
auto* spanner = placeholder->spanner();
- parentAndSpannerList.append(std::make_pair(spannerOriginalParent, spanner->parent()->takeChild(m_builder, *spanner)));
+ parentAndSpannerList.append(std::make_pair(spannerOriginalParent, m_builder.takeChild(*spanner->parent(), *spanner)));
}
while (auto* columnSet = multiColumnFlow.firstMultiColumnSet())
columnSet->removeFromParentAndDestroy(m_builder);
@@ -313,7 +313,7 @@
auto newPlaceholder = RenderMultiColumnSpannerPlaceholder::createAnonymous(flow, downcast<RenderBox>(descendant), container->style());
auto& placeholder = *newPlaceholder;
m_builder.insertChild(*container, WTFMove(newPlaceholder), descendant.nextSibling());
- auto takenDescendant = container->takeChild(m_builder, descendant);
+ auto takenDescendant = m_builder.takeChild(*container, descendant);
// This is a guard to stop an ancestor flow thread from processing the spanner.
gShiftingSpanner = true;
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -387,13 +387,13 @@
if (isAnonymousRubyInlineBlock(child.parent())) {
ASSERT(child.isBeforeContent() || child.isAfterContent());
auto& parent = *child.parent();
- auto takenChild = parent.takeChild(m_builder, child);
+ auto takenChild = m_builder.takeChild(parent, child);
parent.removeFromParentAndDestroy(m_builder);
return takenChild;
}
// Otherwise find the containing run and remove it from there.
- return findRubyRunParent(child).takeChild(m_builder, child);
+ return m_builder.takeChild(findRubyRunParent(child), child);
}
RenderPtr<RenderObject> RenderTreeBuilder::Ruby::takeChild(RenderRubyAsBlock& parent, RenderObject& child)
@@ -411,13 +411,13 @@
if (isAnonymousRubyInlineBlock(child.parent())) {
ASSERT(child.isBeforeContent() || child.isAfterContent());
auto& parent = *child.parent();
- auto takenChild = parent.takeChild(m_builder, child);
+ auto takenChild = m_builder.takeChild(parent, child);
parent.removeFromParentAndDestroy(m_builder);
return takenChild;
}
// Otherwise find the containing run and remove it from there.
- return findRubyRunParent(child).takeChild(m_builder, child);
+ return m_builder.takeChild(findRubyRunParent(child), child);
}
RenderPtr<RenderObject> RenderTreeBuilder::Ruby::takeChild(RenderRubyRun& parent, RenderObject& child)
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (228736 => 228737)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp 2018-02-20 07:26:48 UTC (rev 228736)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp 2018-02-20 07:26:56 UTC (rev 228737)
@@ -236,7 +236,7 @@
continue;
}
currentRow->moveAllChildrenTo(m_builder, rowToInsertInto, RenderBoxModelObject::NormalizeAfterInsertion::No);
- auto toDestroy = section->takeChild(m_builder, *currentRow);
+ auto toDestroy = m_builder.takeChild(*section, *currentRow);
currentRow = currentRow->nextRow();
}
if (rowToInsertInto)