Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutGrid.cpp | 
| diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp | 
| index 390a4410d79de9baacadd9c36c8bf90a5fd4460c..d41cbb106b83581c22e23a24d18ca8de0d209abd 100644 | 
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp | 
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp | 
| @@ -1493,30 +1493,28 @@ void LayoutGrid::offsetAndBreadthForPositionedChild(const LayoutBox& child, Grid | 
| breadth = (direction == ForColumns) ? clientLogicalWidth() : clientLogicalHeight(); | 
| return; | 
| } | 
| - positions.translate(direction == ForColumns ? m_smallestColumnStart : m_smallestRowStart); | 
| + int smallestStart = abs(direction == ForColumns ? m_smallestColumnStart : m_smallestRowStart); | 
| 
 
svillar
2016/01/19 12:04:51
I'm starting to do
bool isRowAxis = direction ==
 
Manuel Rego
2016/01/19 15:52:25
Done.
 
 | 
| + int resolvedInitialPosition = positions.untranslatedResolvedInitialPosition() + smallestStart; | 
| + int resolvedFinalPosition = positions.untranslatedResolvedFinalPosition() + smallestStart; | 
| 
 
svillar
2016/01/19 12:04:51
This manual translation requires some explanation
 
Manuel Rego
2016/01/19 15:52:25
Added comment.
 
 | 
| GridPosition startPosition = (direction == ForColumns) ? child.style()->gridColumnStart() : child.style()->gridRowStart(); | 
| GridPosition endPosition = (direction == ForColumns) ? child.style()->gridColumnEnd() : child.style()->gridRowEnd(); | 
| - size_t lastTrackIndex = (direction == ForColumns ? gridColumnCount() : gridRowCount()) - 1; | 
| + int lastTrackIndex = (direction == ForColumns ? gridColumnCount() : gridRowCount()); | 
| 
 
svillar
2016/01/19 12:04:51
Perhaps we should use this change to rename this t
 
Manuel Rego
2016/01/19 15:52:25
Done.
 
 | 
| bool startIsAuto = startPosition.isAuto() | 
| || (startPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamedLineOrArea(startPosition.namedGridLine(), styleRef(), GridResolvedPosition::initialPositionSide(direction))) | 
| - || (positions.resolvedInitialPosition() > lastTrackIndex); | 
| + || (resolvedInitialPosition < 0) | 
| + || (resolvedInitialPosition > lastTrackIndex); | 
| bool endIsAuto = endPosition.isAuto() | 
| || (endPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamedLineOrArea(endPosition.namedGridLine(), styleRef(), GridResolvedPosition::finalPositionSide(direction))) | 
| - || (positions.resolvedFinalPosition() - 1 > lastTrackIndex); | 
| + || (resolvedFinalPosition < 0) | 
| + || (resolvedFinalPosition > lastTrackIndex); | 
| - size_t firstPosition = 0; | 
| - size_t initialPosition = startIsAuto ? firstPosition : positions.resolvedInitialPosition(); | 
| - size_t lastPosition = lastTrackIndex; | 
| - size_t finalPosition = endIsAuto ? lastPosition : positions.resolvedFinalPosition() - 1; | 
| - | 
| - // Positioned children do not grow the grid, so we need to clamp the positions to avoid ending up outside of it. | 
| - initialPosition = std::min(initialPosition, lastPosition); | 
| - finalPosition = std::min(finalPosition, lastPosition); | 
| + size_t initialPosition = startIsAuto ? 0 : resolvedInitialPosition; | 
| + size_t finalPosition = endIsAuto ? lastTrackIndex : resolvedFinalPosition; | 
| LayoutUnit start = startIsAuto ? LayoutUnit() : (direction == ForColumns) ? m_columnPositions[initialPosition] : m_rowPositions[initialPosition]; | 
| - LayoutUnit end = endIsAuto ? (direction == ForColumns) ? logicalWidth() : logicalHeight() : (direction == ForColumns) ? m_columnPositions[finalPosition + 1] : m_rowPositions[finalPosition + 1]; | 
| + LayoutUnit end = endIsAuto ? (direction == ForColumns) ? logicalWidth() : logicalHeight() : (direction == ForColumns) ? m_columnPositions[finalPosition] : m_rowPositions[finalPosition]; | 
| 
 
jfernandez
2016/01/18 17:57:42
I'd simplify this line, if possible.
 
Manuel Rego
2016/01/19 15:52:25
Now that we use isForColumns I think it's not that
 
 | 
| breadth = end - start; |