Chromium Code Reviews| Index: third_party/WebKit/Source/core/style/GridResolvedPosition.cpp |
| diff --git a/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp b/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp |
| index 6b8dc9498b2c4ae80f7dcc27618f2b1a2c4761ac..7245e6dffdb621d274e1086e178d1fa478bf11ed 100644 |
| --- a/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp |
| +++ b/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp |
| @@ -62,37 +62,37 @@ static void initialAndFinalPositionsFromStyle(const ComputedStyle& gridContainer |
| initialPosition.setSpanPosition(1, String()); |
| } |
| -static GridSpan definiteGridSpanWithInitialNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
| +static GridSpan definiteGridSpanWithInitialNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
| { |
| if (resolvedOppositePosition == 0) |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition.next()); |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1); |
| size_t firstLineBeforeOppositePositionIndex = 0; |
| - const size_t* firstLineBeforeOppositePosition = std::lower_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition.toInt()); |
| + const size_t* firstLineBeforeOppositePosition = std::lower_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition); |
| if (firstLineBeforeOppositePosition != gridLines.end()) |
| firstLineBeforeOppositePositionIndex = firstLineBeforeOppositePosition - gridLines.begin(); |
| size_t gridLineIndex = std::max<int>(0, firstLineBeforeOppositePositionIndex - position.spanPosition()); |
| - GridResolvedPosition resolvedGridLinePosition = GridResolvedPosition(gridLines[gridLineIndex]); |
| + size_t resolvedGridLinePosition = gridLines[gridLineIndex]; |
| if (resolvedGridLinePosition >= resolvedOppositePosition) |
| - resolvedGridLinePosition = resolvedOppositePosition.prev(); |
| + resolvedGridLinePosition = resolvedOppositePosition - 1; |
| return GridSpan::definiteGridSpan(resolvedGridLinePosition, resolvedOppositePosition); |
| } |
| -static GridSpan definiteGridSpanWithFinalNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
| +static GridSpan definiteGridSpanWithFinalNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
| { |
|
rune
2015/12/03 14:08:38
ASSERT(gridLines.size())?
Manuel Rego
2015/12/04 07:28:06
Acknowledged.
|
| size_t firstLineAfterOppositePositionIndex = gridLines.size() - 1; |
| - const size_t* firstLineAfterOppositePosition = std::upper_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition.toInt()); |
| + const size_t* firstLineAfterOppositePosition = std::upper_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition); |
| if (firstLineAfterOppositePosition != gridLines.end()) |
| firstLineAfterOppositePositionIndex = firstLineAfterOppositePosition - gridLines.begin(); |
| size_t gridLineIndex = std::min(gridLines.size() - 1, firstLineAfterOppositePositionIndex + position.spanPosition() - 1); |
| - GridResolvedPosition resolvedGridLinePosition = gridLines[gridLineIndex]; |
| + size_t resolvedGridLinePosition = gridLines[gridLineIndex]; |
| if (resolvedGridLinePosition <= resolvedOppositePosition) |
| - resolvedGridLinePosition = resolvedOppositePosition.next(); |
| + resolvedGridLinePosition = resolvedOppositePosition + 1; |
| return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedGridLinePosition); |
| } |
| -static GridSpan definiteGridSpanWithNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<size_t>& gridLines) |
| +static GridSpan definiteGridSpanWithNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<size_t>& gridLines) |
| { |
| if (side == RowStartSide || side == ColumnStartSide) |
| return definiteGridSpanWithInitialNamedSpanAgainstOpposite(resolvedOppositePosition, position, gridLines); |
| @@ -100,7 +100,7 @@ static GridSpan definiteGridSpanWithNamedSpanAgainstOpposite(const GridResolvedP |
| return definiteGridSpanWithFinalNamedSpanAgainstOpposite(resolvedOppositePosition, position, gridLines); |
| } |
| -static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| +static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| { |
| ASSERT(position.isSpan()); |
| ASSERT(!position.namedGridLine().isNull()); |
| @@ -113,34 +113,34 @@ static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const Comput |
| // If there is no named grid line of that name, we resolve the position to 'auto' (which is equivalent to 'span 1' in this case). |
| // See http://lists.w3.org/Archives/Public/www-style/2013Jun/0394.html. |
| if (it == gridLinesNames.end()) { |
| - if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition.toInt()) |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition.prev(), resolvedOppositePosition); |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition.next()); |
| + if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition) |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition); |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1); |
| } |
| return definiteGridSpanWithNamedSpanAgainstOpposite(resolvedOppositePosition, position, side, it->value); |
| } |
| -static GridSpan definiteGridSpanWithSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| +static GridSpan definiteGridSpanWithSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| { |
| size_t positionOffset = position.spanPosition(); |
| if (side == ColumnStartSide || side == RowStartSide) { |
| if (resolvedOppositePosition == 0) |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition.next()); |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1); |
| - GridResolvedPosition initialResolvedPosition = GridResolvedPosition(std::max<int>(0, resolvedOppositePosition.toInt() - positionOffset)); |
| + size_t initialResolvedPosition = std::max<int>(0, resolvedOppositePosition - positionOffset); |
| return GridSpan::definiteGridSpan(initialResolvedPosition, resolvedOppositePosition); |
| } |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition, GridResolvedPosition(resolvedOppositePosition.toInt() + positionOffset)); |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + positionOffset); |
| } |
| -static GridSpan resolveGridPositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| +static GridSpan resolveGridPositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
| { |
| if (position.isAuto()) { |
| - if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition.toInt()) |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition.prev(), resolvedOppositePosition); |
| - return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition.next()); |
| + if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition) |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition); |
| + return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1); |
| } |
| ASSERT(position.isSpan()); |
| @@ -154,7 +154,7 @@ static GridSpan resolveGridPositionAgainstOppositePosition(const ComputedStyle& |
| return definiteGridSpanWithSpanAgainstOpposite(resolvedOppositePosition, position, side); |
| } |
| -GridSpan GridResolvedPosition::resolveGridPositionsFromAutoPlacementPosition(const ComputedStyle& gridContainerStyle, const LayoutBox& gridItem, GridTrackSizingDirection direction, const GridResolvedPosition& resolvedInitialPosition) |
| +GridSpan GridResolvedPosition::resolveGridPositionsFromAutoPlacementPosition(const ComputedStyle& gridContainerStyle, const LayoutBox& gridItem, GridTrackSizingDirection direction, size_t resolvedInitialPosition) |
| { |
| GridPosition initialPosition, finalPosition; |
| initialAndFinalPositionsFromStyle(gridContainerStyle, gridItem, direction, initialPosition, finalPosition); |
| @@ -164,7 +164,7 @@ GridSpan GridResolvedPosition::resolveGridPositionsFromAutoPlacementPosition(con |
| // This method will only be used when both positions need to be resolved against the opposite one. |
| ASSERT(initialPosition.shouldBeResolvedAgainstOppositePosition() && finalPosition.shouldBeResolvedAgainstOppositePosition()); |
| - GridResolvedPosition resolvedFinalPosition = resolvedInitialPosition.next(); |
| + size_t resolvedFinalPosition = resolvedInitialPosition + 1; |
| if (initialPosition.isSpan()) |
| return resolveGridPositionAgainstOppositePosition(gridContainerStyle, resolvedInitialPosition, initialPosition, finalSide); |
| @@ -189,7 +189,7 @@ static size_t explicitGridSizeForSide(const ComputedStyle& gridContainerStyle, G |
| return (side == ColumnStartSide || side == ColumnEndSide) ? GridResolvedPosition::explicitGridColumnCount(gridContainerStyle) : GridResolvedPosition::explicitGridRowCount(gridContainerStyle); |
| } |
| -static GridResolvedPosition resolveNamedGridLinePositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side) |
| +static size_t resolveNamedGridLinePositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side) |
| { |
| ASSERT(!position.namedGridLine().isNull()); |
| @@ -197,8 +197,8 @@ static GridResolvedPosition resolveNamedGridLinePositionFromStyle(const Computed |
| NamedGridLinesMap::const_iterator it = gridLinesNames.find(position.namedGridLine()); |
| if (it == gridLinesNames.end()) { |
| if (position.isPositive()) |
| - return GridResolvedPosition(0); |
| - const size_t lastLine = explicitGridSizeForSide(gridContainerStyle, side); |
| + return 0; |
| + size_t lastLine = explicitGridSizeForSide(gridContainerStyle, side); |
| return lastLine; |
| } |
| @@ -210,7 +210,7 @@ static GridResolvedPosition resolveNamedGridLinePositionFromStyle(const Computed |
| return it->value[namedGridLineIndex]; |
| } |
| -static GridResolvedPosition resolveGridPositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side) |
| +static size_t resolveGridPositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side) |
| { |
| switch (position.type()) { |
| case ExplicitPosition: { |
| @@ -224,11 +224,11 @@ static GridResolvedPosition resolveGridPositionFromStyle(const ComputedStyle& gr |
| return position.integerPosition() - 1; |
| size_t resolvedPosition = abs(position.integerPosition()) - 1; |
| - const size_t endOfTrack = explicitGridSizeForSide(gridContainerStyle, side); |
| + size_t endOfTrack = explicitGridSizeForSide(gridContainerStyle, side); |
| // Per http://lists.w3.org/Archives/Public/www-style/2013Mar/0589.html, we clamp negative value to the first line. |
| if (endOfTrack < resolvedPosition) |
| - return GridResolvedPosition(0); |
| + return 0; |
| return endOfTrack - resolvedPosition; |
| } |
| @@ -255,16 +255,16 @@ static GridResolvedPosition resolveGridPositionFromStyle(const ComputedStyle& gr |
| // this function in GridResolvedPosition::resolveGridPositionsFromStyle(). We should be also covered by the |
| // ASSERT at the beginning of this block. |
| ASSERT_NOT_REACHED(); |
| - return GridResolvedPosition(0); |
| + return 0; |
| } |
| case AutoPosition: |
| case SpanPosition: |
| // 'auto' and span depend on the opposite position for resolution (e.g. grid-row: auto / 1 or grid-column: span 3 / "myHeader"). |
| ASSERT_NOT_REACHED(); |
| - return GridResolvedPosition(0); |
| + return 0; |
| } |
| ASSERT_NOT_REACHED(); |
| - return GridResolvedPosition(0); |
| + return 0; |
| } |
| GridSpan GridResolvedPosition::resolveGridPositionsFromStyle(const ComputedStyle& gridContainerStyle, const LayoutBox& gridItem, GridTrackSizingDirection direction) |
| @@ -282,23 +282,23 @@ GridSpan GridResolvedPosition::resolveGridPositionsFromStyle(const ComputedStyle |
| if (initialPosition.shouldBeResolvedAgainstOppositePosition()) { |
| // Infer the position from the final position ('auto / 1' or 'span 2 / 3' case). |
| - GridResolvedPosition finalResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); |
| + size_t finalResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); |
| return resolveGridPositionAgainstOppositePosition(gridContainerStyle, finalResolvedPosition, initialPosition, initialSide); |
| } |
| if (finalPosition.shouldBeResolvedAgainstOppositePosition()) { |
| // Infer our position from the initial position ('1 / auto' or '3 / span 2' case). |
| - GridResolvedPosition initialResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); |
| + size_t initialResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); |
| return resolveGridPositionAgainstOppositePosition(gridContainerStyle, initialResolvedPosition, finalPosition, finalSide); |
| } |
| - GridResolvedPosition resolvedInitialPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); |
| - GridResolvedPosition resolvedFinalPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); |
| + size_t resolvedInitialPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); |
| + size_t resolvedFinalPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); |
| if (resolvedFinalPosition < resolvedInitialPosition) |
| std::swap(resolvedFinalPosition, resolvedInitialPosition); |
| else if (resolvedFinalPosition == resolvedInitialPosition) |
| - resolvedFinalPosition = resolvedInitialPosition.next(); |
| + resolvedFinalPosition = resolvedInitialPosition + 1; |
| return GridSpan::definiteGridSpan(resolvedInitialPosition, resolvedFinalPosition); |
| } |