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

Unified Diff: third_party/WebKit/Source/core/style/GridResolvedPosition.cpp

Issue 1451883002: [css-grid] Store lines instead of tracks in GridResolvedPosition (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix ASSERT on the tests Created 5 years, 1 month 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
« no previous file with comments | « third_party/WebKit/Source/core/style/GridResolvedPosition.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9108080d1938e5567f7cb7f4771944b607776203..a8d5b70a3561c6bfb6ac5a9c8015f36b09045237 100644
--- a/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp
+++ b/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp
@@ -72,7 +72,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;
+ GridResolvedPosition resolvedFinalPosition = resolvedInitialPosition.next();
if (initialPosition.isSpan())
return *resolveGridPositionAgainstOppositePosition(gridContainerStyle, resolvedInitialPosition, initialPosition, finalSide);
@@ -111,8 +111,8 @@ PassOwnPtr<GridSpan> GridResolvedPosition::resolveGridPositionsFromStyle(const C
GridResolvedPosition resolvedFinalPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);
// If 'grid-after' specifies a line at or before that specified by 'grid-before', it computes to 'span 1'.
- if (resolvedFinalPosition < resolvedInitialPosition)
- resolvedFinalPosition = resolvedInitialPosition;
+ if (resolvedFinalPosition <= resolvedInitialPosition)
+ resolvedFinalPosition = resolvedInitialPosition.next();
return adoptPtr(new GridSpan(resolvedInitialPosition, resolvedFinalPosition));
}
@@ -142,7 +142,7 @@ GridResolvedPosition GridResolvedPosition::resolveNamedGridLinePositionFromStyle
if (position.isPositive())
return GridResolvedPosition(0);
const size_t lastLine = explicitGridSizeForSide(gridContainerStyle, side);
- return adjustGridPositionForSide(lastLine, side);
+ return lastLine;
}
size_t namedGridLineIndex;
@@ -150,7 +150,7 @@ GridResolvedPosition GridResolvedPosition::resolveNamedGridLinePositionFromStyle
namedGridLineIndex = std::min<size_t>(position.integerPosition(), it->value.size()) - 1;
else
namedGridLineIndex = std::max<int>(it->value.size() - abs(position.integerPosition()), 0);
- return adjustGridPositionForSide(it->value[namedGridLineIndex], side);
+ return it->value[namedGridLineIndex];
}
GridResolvedPosition GridResolvedPosition::resolveGridPositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side)
@@ -164,7 +164,7 @@ GridResolvedPosition GridResolvedPosition::resolveGridPositionFromStyle(const Co
// Handle <integer> explicit position.
if (position.isPositive())
- return adjustGridPositionForSide(position.integerPosition() - 1, side);
+ return position.integerPosition() - 1;
size_t resolvedPosition = abs(position.integerPosition()) - 1;
const size_t endOfTrack = explicitGridSizeForSide(gridContainerStyle, side);
@@ -173,7 +173,7 @@ GridResolvedPosition GridResolvedPosition::resolveGridPositionFromStyle(const Co
if (endOfTrack < resolvedPosition)
return GridResolvedPosition(0);
- return adjustGridPositionForSide(endOfTrack - resolvedPosition, side);
+ return endOfTrack - resolvedPosition;
}
case NamedGridAreaPosition:
{
@@ -186,13 +186,13 @@ GridResolvedPosition GridResolvedPosition::resolveGridPositionFromStyle(const Co
const NamedGridLinesMap& gridLineNames = gridLinesForSide(gridContainerStyle, side);
NamedGridLinesMap::const_iterator implicitLineIter = gridLineNames.find(implicitNamedGridLineForSide(namedGridLine, side));
if (implicitLineIter != gridLineNames.end())
- return adjustGridPositionForSide(implicitLineIter->value[0], side);
+ return implicitLineIter->value[0];
// Otherwise, if there is a named line with the specified name, contributes the first such line to the grid
// item's placement.
NamedGridLinesMap::const_iterator explicitLineIter = gridLineNames.find(namedGridLine);
if (explicitLineIter != gridLineNames.end())
- return adjustGridPositionForSide(explicitLineIter->value[0], side);
+ return explicitLineIter->value[0];
// If none of the above works specs mandate us to treat it as auto BUT we should have detected it before calling
// this function in GridResolvedPosition::resolveGridPositionsFromStyle(). We should be also covered by the
@@ -212,8 +212,11 @@ GridResolvedPosition GridResolvedPosition::resolveGridPositionFromStyle(const Co
PassOwnPtr<GridSpan> GridResolvedPosition::resolveGridPositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side)
{
- if (position.isAuto())
- return GridSpan::create(resolvedOppositePosition, resolvedOppositePosition);
+ if (position.isAuto()) {
+ if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition.toInt())
+ return GridSpan::create(resolvedOppositePosition.prev(), resolvedOppositePosition);
+ return GridSpan::create(resolvedOppositePosition, resolvedOppositePosition.next());
+ }
ASSERT(position.isSpan());
ASSERT(position.spanPosition() > 0);
@@ -238,8 +241,11 @@ PassOwnPtr<GridSpan> GridResolvedPosition::resolveNamedGridLinePositionAgainstOp
// 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())
- return GridSpan::create(resolvedOppositePosition, resolvedOppositePosition);
+ if (it == gridLinesNames.end()) {
+ if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition.toInt())
+ return GridSpan::create(resolvedOppositePosition.prev(), resolvedOppositePosition);
+ return GridSpan::create(resolvedOppositePosition, resolvedOppositePosition.next());
+ }
return GridSpan::createWithNamedSpanAgainstOpposite(resolvedOppositePosition, position, side, it->value);
}
« no previous file with comments | « third_party/WebKit/Source/core/style/GridResolvedPosition.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698