Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(764)

Unified Diff: Source/core/layout/LayoutBlockFlowLine.cpp

Issue 763173003: Convert RenderBlockFlow code to use FloatingObject references (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Address Review Comments Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/layout/LayoutBlockFlowLine.cpp
diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp
index b382670640a5280839364f6f59a4f168f5a86df3..a097b187a7b7994ebdfe5fb91e71c5a5b0d86279 100644
--- a/Source/core/layout/LayoutBlockFlowLine.cpp
+++ b/Source/core/layout/LayoutBlockFlowLine.cpp
@@ -670,11 +670,11 @@ void LayoutBlockFlow::computeBlockDirectionPositionsForLine(RootInlineBox* lineB
}
}
-void LayoutBlockFlow::appendFloatingObjectToLastLine(FloatingObject* floatingObject)
+void LayoutBlockFlow::appendFloatingObjectToLastLine(FloatingObject& floatingObject)
{
- ASSERT(!floatingObject->originatingLine());
- floatingObject->setOriginatingLine(lastRootBox());
- lastRootBox()->appendFloat(floatingObject->layoutObject());
+ ASSERT(!floatingObject.originatingLine());
+ floatingObject.setOriginatingLine(lastRootBox());
+ lastRootBox()->appendFloat(floatingObject.layoutObject());
}
// This function constructs line boxes for all of the text runs in the resolver and computes their position.
@@ -914,7 +914,7 @@ void LayoutBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState,
}
for (; it != end; ++it) {
FloatingObject* f = it->get();
- appendFloatingObjectToLastLine(f);
+ appendFloatingObjectToLastLine(*f);
Julien - ping for review 2015/03/16 15:27:54 |f| should be a reference (and probably renamed to
Sunil Ratnu 2015/03/17 11:31:19 Done.
ASSERT(f->layoutObject() == layoutState.floats()[layoutState.floatIndex()].object);
// If a float's geometry has changed, give up on syncing with clean lines.
if (layoutState.floats()[layoutState.floatIndex()].rect != f->frameRect())
@@ -1062,7 +1062,7 @@ void LayoutBlockFlow::linkToEndLineIfNeeded(LineLayoutState& layoutState)
}
for (; it != end; ++it)
- appendFloatingObjectToLastLine(it->get());
+ appendFloatingObjectToLastLine(it->getReference());
}
}
@@ -1847,7 +1847,7 @@ bool LayoutBlockFlow::checkPaginationAndFloatsAtEndLine(LineLayoutState& layoutS
const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
FloatingObjectSetIterator end = floatingObjectSet.end();
for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
- FloatingObject* floatingObject = it->get();
+ FloatingObject& floatingObject = it->getReference();
if (logicalBottomForFloat(floatingObject) >= logicalTop && logicalBottomForFloat(floatingObject) < logicalBottom)
return false;
}
@@ -2004,7 +2004,7 @@ bool LayoutBlockFlow::positionNewFloatOnLine(FloatingObject* newFloat, FloatingO
const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
ASSERT(floatingObjectSet.last() == newFloat);
- LayoutUnit floatLogicalTop = logicalTopForFloat(newFloat);
+ LayoutUnit floatLogicalTop = logicalTopForFloat(*newFloat);
Julien - ping for review 2015/03/16 15:27:54 Again |newFloat| looks like it should be a referen
Sunil Ratnu 2015/03/17 11:31:19 Done.
int paginationStrut = newFloat->paginationStrut();
if (floatLogicalTop - paginationStrut != logicalHeight() + lineInfo.floatPaginationStrut())
@@ -2018,7 +2018,7 @@ bool LayoutBlockFlow::positionNewFloatOnLine(FloatingObject* newFloat, FloatingO
FloatingObject* floatingObject = it->get();
if (floatingObject == lastFloatFromPreviousLine)
break;
- if (logicalTopForFloat(floatingObject) == logicalHeight() + lineInfo.floatPaginationStrut()) {
+ if (logicalTopForFloat(*floatingObject) == logicalHeight() + lineInfo.floatPaginationStrut()) {
floatingObject->setPaginationStrut(paginationStrut + floatingObject->paginationStrut());
LayoutBox* floatBox = floatingObject->layoutObject();
setLogicalTopForChild(*floatBox, logicalTopForChild(*floatBox) + marginBeforeForChild(*floatBox) + paginationStrut);
@@ -2028,9 +2028,9 @@ bool LayoutBlockFlow::positionNewFloatOnLine(FloatingObject* newFloat, FloatingO
floatBox->layoutIfNeeded();
// Save the old logical top before calling removePlacedObject which will set
// isPlaced to false. Otherwise it will trigger an assert in logicalTopForFloat.
- LayoutUnit oldLogicalTop = logicalTopForFloat(floatingObject);
+ LayoutUnit oldLogicalTop = logicalTopForFloat(*floatingObject);
m_floatingObjects->removePlacedObject(floatingObject);
- setLogicalTopForFloat(floatingObject, oldLogicalTop + paginationStrut);
+ setLogicalTopForFloat(*floatingObject, oldLogicalTop + paginationStrut);
m_floatingObjects->addPlacedObject(floatingObject);
}
}

Powered by Google App Engine
This is Rietveld 408576698