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

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

Issue 1529083006: [css-grid] Initial support for implicit grid before explicit grid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Apply suggested changes Created 5 years 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: 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 0c72d8651bf4df79ac90f32526985ea10cad12be..302ac1c58bf2569ca798871c74e989257beb85c8 100644
--- a/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp
+++ b/third_party/WebKit/Source/core/style/GridResolvedPosition.cpp
@@ -65,7 +65,7 @@ static void initialAndFinalPositionsFromStyle(const ComputedStyle& gridContainer
static GridSpan definiteGridSpanWithInitialNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines)
{
if (resolvedOppositePosition == 0)
- return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
size_t firstLineBeforeOppositePositionIndex = 0;
const size_t* firstLineBeforeOppositePosition = std::lower_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition);
@@ -75,7 +75,7 @@ static GridSpan definiteGridSpanWithInitialNamedSpanAgainstOpposite(size_t resol
size_t resolvedGridLinePosition = gridLines[gridLineIndex];
if (resolvedGridLinePosition >= resolvedOppositePosition)
resolvedGridLinePosition = resolvedOppositePosition - 1;
- return GridSpan::definiteGridSpan(resolvedGridLinePosition, resolvedOppositePosition);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedGridLinePosition, resolvedOppositePosition);
}
static GridSpan definiteGridSpanWithFinalNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines)
@@ -90,7 +90,7 @@ static GridSpan definiteGridSpanWithFinalNamedSpanAgainstOpposite(size_t resolve
if (resolvedGridLinePosition <= resolvedOppositePosition)
resolvedGridLinePosition = resolvedOppositePosition + 1;
- return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedGridLinePosition);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition, resolvedGridLinePosition);
}
static GridSpan definiteGridSpanWithNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<size_t>& gridLines)
@@ -115,8 +115,8 @@ static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const Comput
// See http://lists.w3.org/Archives/Public/www-style/2013Jun/0394.html.
if (it == gridLinesNames.end()) {
if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition)
- return GridSpan::definiteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition);
- return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
}
return definiteGridSpanWithNamedSpanAgainstOpposite(resolvedOppositePosition, position, side, it->value);
@@ -125,23 +125,18 @@ static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const Comput
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 + 1);
+ if (side == ColumnStartSide || side == RowStartSide)
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition - positionOffset, resolvedOppositePosition);
- size_t initialResolvedPosition = std::max<int>(0, resolvedOppositePosition - positionOffset);
- return GridSpan::definiteGridSpan(initialResolvedPosition, resolvedOppositePosition);
- }
-
- return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + positionOffset);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition, resolvedOppositePosition + positionOffset);
}
static GridSpan resolveGridPositionAgainstOppositePosition(const ComputedStyle& gridContainerStyle, size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side)
{
if (position.isAuto()) {
- if ((side == ColumnStartSide || side == RowStartSide) && resolvedOppositePosition)
- return GridSpan::definiteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition);
- return GridSpan::definiteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
+ if (side == ColumnStartSide || side == RowStartSide)
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition - 1, resolvedOppositePosition);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedOppositePosition, resolvedOppositePosition + 1);
}
ASSERT(position.isSpan());
@@ -174,12 +169,12 @@ size_t GridResolvedPosition::spanSizeForAutoPlacedItem(const ComputedStyle& grid
size_t GridResolvedPosition::explicitGridColumnCount(const ComputedStyle& gridContainerStyle)
{
- return std::min(gridContainerStyle.gridTemplateColumns().size(), kGridMaxTracks);
+ return std::min<size_t>(gridContainerStyle.gridTemplateColumns().size(), kGridMaxTracks);
}
size_t GridResolvedPosition::explicitGridRowCount(const ComputedStyle& gridContainerStyle)
{
- return std::min(gridContainerStyle.gridTemplateRows().size(), kGridMaxTracks);
+ return std::min<size_t>(gridContainerStyle.gridTemplateRows().size(), kGridMaxTracks);
}
static size_t explicitGridSizeForSide(const ComputedStyle& gridContainerStyle, GridPositionSide side)
@@ -208,7 +203,7 @@ static size_t resolveNamedGridLinePositionFromStyle(const ComputedStyle& gridCon
return it->value[namedGridLineIndex];
}
-static size_t resolveGridPositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side)
+static int resolveGridPositionFromStyle(const ComputedStyle& gridContainerStyle, const GridPosition& position, GridPositionSide side)
{
switch (position.type()) {
case ExplicitPosition: {
@@ -224,10 +219,6 @@ static size_t resolveGridPositionFromStyle(const ComputedStyle& gridContainerSty
size_t resolvedPosition = abs(position.integerPosition()) - 1;
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 0;
-
return endOfTrack - resolvedPosition;
}
case NamedGridAreaPosition:
@@ -280,25 +271,25 @@ GridSpan GridResolvedPosition::resolveGridPositionsFromStyle(const ComputedStyle
if (initialPosition.shouldBeResolvedAgainstOppositePosition()) {
// Infer the position from the final position ('auto / 1' or 'span 2 / 3' case).
- size_t finalResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);
+ int 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).
- size_t initialResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);
+ int initialResolvedPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);
return resolveGridPositionAgainstOppositePosition(gridContainerStyle, initialResolvedPosition, finalPosition, finalSide);
}
- size_t resolvedInitialPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);
- size_t resolvedFinalPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);
+ int resolvedInitialPosition = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);
+ int resolvedFinalPosition = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);
if (resolvedFinalPosition < resolvedInitialPosition)
std::swap(resolvedFinalPosition, resolvedInitialPosition);
else if (resolvedFinalPosition == resolvedInitialPosition)
resolvedFinalPosition = resolvedInitialPosition + 1;
- return GridSpan::definiteGridSpan(resolvedInitialPosition, resolvedFinalPosition);
+ return GridSpan::untranslatedDefiniteGridSpan(resolvedInitialPosition, resolvedFinalPosition);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698