Diff
Modified: trunk/Source/WebCore/ChangeLog (228519 => 228520)
--- trunk/Source/WebCore/ChangeLog 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/ChangeLog 2018-02-15 18:25:05 UTC (rev 228520)
@@ -1,3 +1,28 @@
+2018-02-15 Zalan Bujtas <[email protected]>
+
+ [RenderTreeBuilder] Move RenderInline/RenderGrid::addChild() to RenderTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=182819
+ <rdar://problem/37558187>
+
+ Reviewed by Antti Koivisto.
+
+ No change in functionality.
+
+ * rendering/RenderGrid.cpp:
+ (WebCore::RenderGrid::addChild): Deleted.
+ * rendering/RenderGrid.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::addChild): Deleted.
+ * rendering/RenderInline.h:
+ * rendering/updating/RenderTreeBuilder.cpp:
+ (WebCore::RenderTreeBuilder::insertChild):
+ (WebCore::RenderTreeBuilder::takeChild): Deleted.
+ * rendering/updating/RenderTreeBuilder.h:
+ * rendering/updating/RenderTreeBuilderRuby.cpp:
+ (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild):
+ * rendering/updating/RenderTreeBuilderSVG.cpp:
+ (WebCore::RenderTreeBuilder::SVG::insertChild):
+
2018-02-15 Antoine Quint <[email protected]>
[Modern Media Controls] REGRESSION: Inline media controls are not disabled while in fullscreen on iOS
Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (228519 => 228520)
--- trunk/Source/WebCore/rendering/RenderGrid.cpp 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp 2018-02-15 18:25:05 UTC (rev 228520)
@@ -70,21 +70,6 @@
RenderGrid::~RenderGrid() = default;
-void RenderGrid::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
-{
- auto& child = *newChild;
- builder.insertChildToRenderBlock(*this, WTFMove(newChild), beforeChild);
-
- // Positioned grid items do not take up space or otherwise participate in the layout of the grid,
- // for that reason we don't need to mark the grid as dirty when they are added.
- if (child.isOutOfFlowPositioned())
- return;
-
- // The grid needs to be recomputed as it might contain auto-placed items that
- // will change their position.
- dirtyGrid();
-}
-
StyleSelfAlignmentData RenderGrid::selfAlignmentForChild(GridAxis axis, const RenderBox& child, const RenderStyle* gridStyle) const
{
return axis == GridRowAxis ? justifySelfForChild(child, gridStyle) : alignSelfForChild(child, gridStyle);
Modified: trunk/Source/WebCore/rendering/RenderGrid.h (228519 => 228520)
--- trunk/Source/WebCore/rendering/RenderGrid.h 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/RenderGrid.h 2018-02-15 18:25:05 UTC (rev 228520)
@@ -79,8 +79,6 @@
bool isRenderGrid() const override { return true; }
void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override;
- void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> newChild, RenderObject* beforeChild) final;
-
StyleSelfAlignmentData selfAlignmentForChild(GridAxis, const RenderBox&, const RenderStyle* = nullptr) const;
bool selfAlignmentChangedToStretch(GridAxis, const RenderStyle& oldStyle, const RenderStyle& newStyle, const RenderBox&) const;
bool selfAlignmentChangedFromStretch(GridAxis, const RenderStyle& oldStyle, const RenderStyle& newStyle, const RenderBox&) const;
Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (228519 => 228520)
--- trunk/Source/WebCore/rendering/RenderInline.cpp 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp 2018-02-15 18:25:05 UTC (rev 228520)
@@ -255,11 +255,6 @@
return caretRect;
}
-void RenderInline::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
-{
- builder.insertChildToRenderInline(*this, WTFMove(newChild), beforeChild);
-}
-
void RenderInline::addChildIgnoringContinuation(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
{
builder.insertChildToRenderInlineIgnoringContinuation(*this, WTFMove(newChild), beforeChild);
Modified: trunk/Source/WebCore/rendering/RenderInline.h (228519 => 228520)
--- trunk/Source/WebCore/rendering/RenderInline.h 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/RenderInline.h 2018-02-15 18:25:05 UTC (rev 228520)
@@ -37,8 +37,6 @@
RenderInline(Element&, RenderStyle&&);
RenderInline(Document&, RenderStyle&&);
- void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> newChild, RenderObject* beforeChild = 0) override;
-
LayoutUnit marginLeft() const final;
LayoutUnit marginRight() const final;
LayoutUnit marginTop() const final;
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228519 => 228520)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-15 18:25:05 UTC (rev 228520)
@@ -220,6 +220,16 @@
return;
}
+ if (is<RenderGrid>(parent)) {
+ insertChildToRenderGrid(downcast<RenderGrid>(parent), WTFMove(child), beforeChild);
+ return;
+ }
+
+ if (is<RenderInline>(parent)) {
+ inlineBuilder().insertChild(downcast<RenderInline>(parent), WTFMove(child), beforeChild);
+ return;
+ }
+
parent.addChild(*this, WTFMove(child), beforeChild);
}
@@ -483,11 +493,6 @@
// WARNING: child is deleted here.
}
-void RenderTreeBuilder::insertChildToRenderInline(RenderInline& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
-{
- inlineBuilder().insertChild(parent, WTFMove(child), beforeChild);
-}
-
void RenderTreeBuilder::insertChildToRenderInlineIgnoringContinuation(RenderInline& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
{
inlineBuilder().insertChildIgnoringContinuation(parent, WTFMove(child), beforeChild);
@@ -613,5 +618,19 @@
return childToTake;
}
+void RenderTreeBuilder::insertChildToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+ auto& newChild = *child;
+ blockBuilder().insertChild(parent, WTFMove(child), beforeChild);
+ // Positioned grid items do not take up space or otherwise participate in the layout of the grid,
+ // for that reason we don't need to mark the grid as dirty when they are added.
+ if (newChild.isOutOfFlowPositioned())
+ return;
+
+ // The grid needs to be recomputed as it might contain auto-placed items that
+ // will change their position.
+ parent.dirtyGrid();
}
+
+}
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (228519 => 228520)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h 2018-02-15 18:25:05 UTC (rev 228520)
@@ -67,7 +67,6 @@
void insertChildToRenderBlock(RenderBlock& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
void insertChildToRenderBlockIgnoringContinuation(RenderBlock& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
void insertChildToRenderBlockFlow(RenderBlockFlow& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
- void insertChildToRenderInline(RenderInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
void insertChildToRenderInlineIgnoringContinuation(RenderInline& 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);
@@ -100,6 +99,8 @@
RenderPtr<RenderObject> takeChildFromRenderButton(RenderButton& parent, RenderObject& child);
RenderPtr<RenderObject> takeChildFromRenderGrid(RenderGrid& parent, RenderObject& child);
+ void insertChildToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
+
FirstLetter& firstLetterBuilder() { return *m_firstLetterBuilder; }
List& listBuilder() { return *m_listBuilder; }
MultiColumn& multiColumnBuilder() { return *m_multiColumnBuilder; }
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp (228519 => 228520)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderRuby.cpp 2018-02-15 18:25:05 UTC (rev 228520)
@@ -31,6 +31,7 @@
#include "RenderRubyRun.h"
#include "RenderTreeBuilder.h"
#include "RenderTreeBuilderBlock.h"
+#include "RenderTreeBuilderInline.h"
namespace WebCore {
@@ -313,7 +314,7 @@
if (!beforeBlock) {
auto newBlock = createAnonymousRubyInlineBlock(parent);
beforeBlock = newBlock.get();
- m_builder.insertChildToRenderInline(parent, WTFMove(newBlock), parent.firstChild());
+ m_builder.inlineBuilder().insertChild(parent, WTFMove(newBlock), parent.firstChild());
}
beforeChild = nullptr;
return *beforeBlock;
@@ -328,7 +329,7 @@
if (!afterBlock) {
auto newBlock = createAnonymousRubyInlineBlock(parent);
afterBlock = newBlock.get();
- m_builder.insertChildToRenderInline(parent, WTFMove(newBlock));
+ m_builder.inlineBuilder().insertChild(parent, WTFMove(newBlock), nullptr);
}
beforeChild = nullptr;
return *afterBlock;
@@ -357,7 +358,7 @@
if (!lastRun || lastRun->hasRubyText()) {
auto newRun = RenderRubyRun::staticCreateRubyRun(&parent);
lastRun = newRun.get();
- m_builder.insertChildToRenderInline(parent, WTFMove(newRun), beforeChild);
+ m_builder.inlineBuilder().insertChild(parent, WTFMove(newRun), beforeChild);
}
beforeChild = nullptr;
return *lastRun;
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp (228519 => 228520)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp 2018-02-15 18:03:55 UTC (rev 228519)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp 2018-02-15 18:25:05 UTC (rev 228520)
@@ -30,6 +30,7 @@
#include "RenderSVGInline.h"
#include "RenderSVGRoot.h"
#include "RenderSVGText.h"
+#include "RenderTreeBuilderInline.h"
#include "SVGResourcesCache.h"
namespace WebCore {
@@ -49,7 +50,7 @@
void RenderTreeBuilder::SVG::insertChild(RenderSVGInline& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
{
auto& childToAdd = *child;
- m_builder.insertChildToRenderInline(parent, WTFMove(child), beforeChild);
+ m_builder.inlineBuilder().insertChild(parent, WTFMove(child), beforeChild);
SVGResourcesCache::clientWasAddedToTree(childToAdd);
if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(parent))