Skip to content

Commit

Permalink
Merge r228542 - [RenderTreeBuilder] Move RenderTableRow::addChild() t…
Browse files Browse the repository at this point in the history
…o 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):
  • Loading branch information
alanbaradlay authored and carlosgcampos committed Feb 20, 2018
1 parent 6e660ec commit a07a073
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 14 deletions.
21 changes: 21 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,24 @@
2018-02-15 Zalan Bujtas <zalan@apple.com>

[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 Zalan Bujtas <zalan@apple.com>

[RenderTreeBuilder] Move RenderTableSection::addChild() to RenderTreeBuilder
Expand Down
7 changes: 2 additions & 5 deletions Source/WebCore/rendering/RenderTableRow.cpp
Expand Up @@ -111,14 +111,11 @@ const BorderValue& RenderTableRow::borderAdjoiningEndCell(const RenderTableCell&
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();
}
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/rendering/RenderTableRow.h
Expand Up @@ -59,12 +59,12 @@ class RenderTableRow final : public RenderBox {
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&);

Expand Down
12 changes: 6 additions & 6 deletions Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
Expand Up @@ -156,7 +156,12 @@ void RenderTreeBuilder::insertChild(RenderElement& parent, RenderPtr<RenderObjec
}

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;
}

Expand Down Expand Up @@ -508,11 +513,6 @@ void RenderTreeBuilder::insertChildToRenderInlineIgnoringContinuation(RenderInli
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);
Expand Down
1 change: 0 additions & 1 deletion Source/WebCore/rendering/updating/RenderTreeBuilder.h
Expand Up @@ -68,7 +68,6 @@ class RenderTreeBuilder {
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;

Expand Down
4 changes: 4 additions & 0 deletions Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
Expand Up @@ -166,8 +166,12 @@ void RenderTreeBuilder::Table::insertChild(RenderTableRow& parent, RenderPtr<Ren
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)
Expand Down

0 comments on commit a07a073

Please sign in to comment.