Index: Source/core/rendering/RenderBox.cpp |
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp |
index 2e451c543c83df43738c0207d08f829fe8f6b6ec..eebdb043f95a38d38b6ff920c4d5ee4d6eb0c017 100644 |
--- a/Source/core/rendering/RenderBox.cpp |
+++ b/Source/core/rendering/RenderBox.cpp |
@@ -191,7 +191,7 @@ void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle |
parent()->setChildNeedsLayout(); |
} |
- if (RenderBlock::hasPercentHeightContainerMap() && firstChild() |
+ if (RenderBlock::hasPercentHeightContainerMap() && slowFirstChild() |
&& oldHorizontalWritingMode != isHorizontalWritingMode()) |
RenderBlock::clearPercentHeightDescendantsFrom(this); |
@@ -297,7 +297,7 @@ void RenderBox::updateFromStyle() |
if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled() && (boxHasOverflowClip != hasOverflowClip())) { |
// FIXME: This shouldn't be required if we tracked the visual overflow |
// generated by positioned children or self painting layers. crbug.com/345403 |
- for (RenderObject* child = firstChild(); child; child = child->nextSibling()) |
+ for (RenderObject* child = slowFirstChild(); child; child = child->nextSibling()) |
child->setShouldDoFullRepaintIfSelfPaintingLayer(true); |
} |
@@ -311,7 +311,7 @@ void RenderBox::layout() |
{ |
ASSERT(needsLayout()); |
- RenderObject* child = firstChild(); |
+ RenderObject* child = slowFirstChild(); |
if (!child) { |
clearNeedsLayout(); |
return; |
@@ -1049,7 +1049,7 @@ bool RenderBox::nodeAtPoint(const HitTestRequest& request, HitTestResult& result |
LayoutPoint adjustedLocation = accumulatedOffset + location(); |
// Check kids first. |
- for (RenderObject* child = lastChild(); child; child = child->previousSibling()) { |
+ for (RenderObject* child = slowLastChild(); child; child = child->previousSibling()) { |
if (!child->hasLayer() && child->nodeAtPoint(request, result, locationInContainer, adjustedLocation, action)) { |
updateHitTestResult(result, locationInContainer.point() - toLayoutSize(adjustedLocation)); |
return true; |
@@ -1077,7 +1077,7 @@ void RenderBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
// default implementation. Just pass paint through to the children |
PaintInfo childInfo(paintInfo); |
childInfo.updatePaintingRootForChildren(this); |
- for (RenderObject* child = firstChild(); child; child = child->nextSibling()) |
+ for (RenderObject* child = slowFirstChild(); child; child = child->nextSibling()) |
child->paint(childInfo, adjustedPaintOffset); |
} |
@@ -1285,7 +1285,7 @@ bool RenderBox::foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, u |
{ |
if (!maxDepthToTest) |
return false; |
- for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { |
+ for (RenderObject* child = slowFirstChild(); child; child = child->nextSibling()) { |
if (!child->isBox()) |
continue; |
RenderBox* childBox = toRenderBox(child); |
@@ -2141,12 +2141,12 @@ static float getMaxWidthListMarker(const RenderBox* renderer) |
ASSERT(renderer->style()->textAutosizingMultiplier() != 1); |
#endif |
float maxWidth = 0; |
- for (RenderObject* child = renderer->firstChild(); child; child = child->nextSibling()) { |
+ for (RenderObject* child = renderer->slowFirstChild(); child; child = child->nextSibling()) { |
if (!child->isListItem()) |
continue; |
RenderBox* listItem = toRenderBox(child); |
- for (RenderObject* itemChild = listItem->firstChild(); itemChild; itemChild = itemChild->nextSibling()) { |
+ for (RenderObject* itemChild = listItem->slowFirstChild(); itemChild; itemChild = itemChild->nextSibling()) { |
if (!itemChild->isListMarker()) |
continue; |
RenderBox* itemMarker = toRenderBox(itemChild); |
@@ -4019,7 +4019,8 @@ LayoutRect RenderBox::localCaretRect(InlineBox* box, int caretOffset, LayoutUnit |
PositionWithAffinity RenderBox::positionForPoint(const LayoutPoint& point) |
{ |
// no children...return this render object's element, if there is one, and offset 0 |
- if (!firstChild()) |
+ RenderObject* firstChild = slowFirstChild(); |
+ if (!firstChild) |
return createPositionWithAffinity(nonPseudoNode() ? firstPositionInOrBeforeNode(nonPseudoNode()) : Position()); |
if (isTable() && nonPseudoNode()) { |
@@ -4040,8 +4041,8 @@ PositionWithAffinity RenderBox::positionForPoint(const LayoutPoint& point) |
if (isTableRow()) |
adjustedPoint.moveBy(location()); |
- for (RenderObject* renderObject = firstChild(); renderObject; renderObject = renderObject->nextSibling()) { |
- if ((!renderObject->firstChild() && !renderObject->isInline() && !renderObject->isRenderBlockFlow() ) |
+ for (RenderObject* renderObject = firstChild; renderObject; renderObject = renderObject->nextSibling()) { |
+ if ((!renderObject->slowFirstChild() && !renderObject->isInline() && !renderObject->isRenderBlockFlow() ) |
|| renderObject->style()->visibility() != VISIBLE) |
continue; |
@@ -4128,7 +4129,7 @@ void RenderBox::markForPaginationRelayoutIfNeeded(SubtreeLayoutScope& layoutScop |
ASSERT(!needsLayout()); |
// If fragmentation height has changed, we need to lay out. No need to enter the renderer if it |
// is childless, though. |
- if (view()->layoutState()->pageLogicalHeightChanged() && firstChild()) |
+ if (view()->layoutState()->pageLogicalHeightChanged() && slowFirstChild()) |
layoutScope.setChildNeedsLayout(this); |
} |
@@ -4644,7 +4645,7 @@ RenderObject* RenderBox::splitAnonymousBoxesAroundChild(RenderObject* beforeChil |
while (beforeChild->parent() != this) { |
RenderBox* boxToSplit = toRenderBox(beforeChild->parent()); |
- if (boxToSplit->firstChild() != beforeChild && boxToSplit->isAnonymous()) { |
+ if (boxToSplit->slowFirstChild() != beforeChild && boxToSplit->isAnonymous()) { |
didSplitParentAnonymousBoxes = true; |
// We have to split the parent box into two boxes and move children |