Diff
Modified: trunk/Source/WebCore/ChangeLog (228546 => 228547)
--- trunk/Source/WebCore/ChangeLog 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/ChangeLog 2018-02-16 02:37:38 UTC (rev 228547)
@@ -1,3 +1,25 @@
+2018-02-15 Zalan Bujtas <[email protected]>
+
+ [RenderTreeBuilder] Move RenderMenuList::addChild() to RenderTreeBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=182840
+ <rdar://problem/37583638>
+
+ Reviewed by Antti Koivisto.
+
+ No change in functionality.
+
+ * rendering/RenderMenuList.cpp:
+ (RenderMenuList::didInsertChild):
+ (RenderMenuList::addChild): Deleted.
+ * rendering/RenderMenuList.h:
+ * rendering/updating/RenderTreeBuilder.cpp:
+ (WebCore::RenderTreeBuilder::insertChild):
+ * rendering/updating/RenderTreeBuilderFormControls.cpp:
+ (WebCore::RenderTreeBuilder::FormControls::findOrCreateParentForChild):
+ (WebCore::RenderTreeBuilder::FormControls::insertChild):
+ (WebCore::RenderTreeBuilder::FormControls::createInnerRendererIfNeeded): Deleted.
+ * rendering/updating/RenderTreeBuilderFormControls.h:
+
2018-02-15 Darin Adler <[email protected]>
Web Inspector: get rid of remaining uses of OptOutput<T>
Modified: trunk/Source/WebCore/rendering/RenderMenuList.cpp (228546 => 228547)
--- trunk/Source/WebCore/rendering/RenderMenuList.cpp 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/rendering/RenderMenuList.cpp 2018-02-16 02:37:38 UTC (rev 228547)
@@ -165,10 +165,10 @@
return downcast<HTMLSelectElement>(nodeForNonAnonymous());
}
-void RenderMenuList::addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject*)
+void RenderMenuList::didInsertChild(RenderObject& child, RenderObject*)
{
if (AXObjectCache* cache = document().existingAXObjectCache())
- cache->childrenChanged(this, child.get());
+ cache->childrenChanged(this, &child);
}
void RenderMenuList::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
Modified: trunk/Source/WebCore/rendering/RenderMenuList.h (228546 => 228547)
--- trunk/Source/WebCore/rendering/RenderMenuList.h 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/rendering/RenderMenuList.h 2018-02-16 02:37:38 UTC (rev 228547)
@@ -62,6 +62,8 @@
RenderBlock* innerRenderer() const { return m_innerBlock.get(); }
void setInnerRenderer(RenderBlock&);
+ void didInsertChild(RenderObject& child, RenderObject* beforeChild);
+
private:
void willBeDestroyed(RenderTreeBuilder&) override;
@@ -69,7 +71,6 @@
bool isMenuList() const override { return true; }
- void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> newChild, RenderObject* beforeChild = 0) override;
bool createsAnonymousWrapper() const override { return true; }
void updateFromElement() override;
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (228546 => 228547)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp 2018-02-16 02:37:38 UTC (rev 228547)
@@ -201,12 +201,12 @@
}
if (is<RenderButton>(parent)) {
- insertRecursiveIfNeeded(formControlsBuilder().createInnerRendererIfNeeded(downcast<RenderButton>(parent)));
+ formControlsBuilder().insertChild(downcast<RenderButton>(parent), WTFMove(child), beforeChild);
return;
}
if (is<RenderMenuList>(parent)) {
- insertRecursiveIfNeeded(formControlsBuilder().createInnerRendererIfNeeded(downcast<RenderMenuList>(parent)));
+ formControlsBuilder().insertChild(downcast<RenderMenuList>(parent), WTFMove(child), beforeChild);
return;
}
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp (228546 => 228547)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.cpp 2018-02-16 02:37:38 UTC (rev 228547)
@@ -36,29 +36,41 @@
{
}
-RenderBlock& RenderTreeBuilder::FormControls::createInnerRendererIfNeeded(RenderButton& button)
+void RenderTreeBuilder::FormControls::insertChild(RenderButton& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
{
- auto* innerRenderer = button.innerRenderer();
+ m_builder.blockBuilder().insertChild(findOrCreateParentForChild(parent), WTFMove(child), beforeChild);
+}
+
+void RenderTreeBuilder::FormControls::insertChild(RenderMenuList& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
+{
+ auto& newChild = *child.get();
+ m_builder.blockBuilder().insertChild(findOrCreateParentForChild(parent), WTFMove(child), beforeChild);
+ parent.didInsertChild(newChild, beforeChild);
+}
+
+RenderBlock& RenderTreeBuilder::FormControls::findOrCreateParentForChild(RenderButton& parent)
+{
+ auto* innerRenderer = parent.innerRenderer();
if (innerRenderer)
return *innerRenderer;
- auto wrapper = button.createAnonymousBlock(button.style().display());
+ auto wrapper = parent.createAnonymousBlock(parent.style().display());
innerRenderer = wrapper.get();
- button.RenderFlexibleBox::addChild(m_builder, WTFMove(wrapper));
- button.setInnerRenderer(*innerRenderer);
+ parent.RenderFlexibleBox::addChild(m_builder, WTFMove(wrapper));
+ parent.setInnerRenderer(*innerRenderer);
return *innerRenderer;
}
-RenderBlock& RenderTreeBuilder::FormControls::createInnerRendererIfNeeded(RenderMenuList& menuList)
+RenderBlock& RenderTreeBuilder::FormControls::findOrCreateParentForChild(RenderMenuList& parent)
{
- auto* innerRenderer = menuList.innerRenderer();
+ auto* innerRenderer = parent.innerRenderer();
if (innerRenderer)
return *innerRenderer;
- auto wrapper = menuList.createAnonymousBlock();
+ auto wrapper = parent.createAnonymousBlock();
innerRenderer = wrapper.get();
- menuList.RenderFlexibleBox::addChild(m_builder, WTFMove(wrapper));
- menuList.setInnerRenderer(*innerRenderer);
+ parent.RenderFlexibleBox::addChild(m_builder, WTFMove(wrapper));
+ parent.setInnerRenderer(*innerRenderer);
return *innerRenderer;
}
Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h (228546 => 228547)
--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h 2018-02-16 02:14:29 UTC (rev 228546)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h 2018-02-16 02:37:38 UTC (rev 228547)
@@ -37,10 +37,13 @@
public:
FormControls(RenderTreeBuilder&);
- RenderBlock& createInnerRendererIfNeeded(RenderButton&);
- RenderBlock& createInnerRendererIfNeeded(RenderMenuList&);
+ void insertChild(RenderButton& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
+ void insertChild(RenderMenuList& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
private:
+ RenderBlock& findOrCreateParentForChild(RenderButton&);
+ RenderBlock& findOrCreateParentForChild(RenderMenuList&);
+
RenderTreeBuilder& m_builder;
};