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 333728c46d3428d185ed5c5885f913345cddce32..0cac743d5d8dc69410594fec02e235732968733d 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp |
@@ -1404,7 +1404,6 @@ void LayoutGrid::layoutPositionedObjects(bool relayoutChildren, PositionedLayout |
continue; |
} |
- // FIXME: Detect properly if start/end is auto for inexistent named grid lines. |
LayoutUnit columnOffset = LayoutUnit(); |
LayoutUnit columnBreadth = LayoutUnit(); |
offsetAndBreadthForPositionedChild(*child, ForColumns, columnOffset, columnBreadth); |
@@ -1432,8 +1431,10 @@ void LayoutGrid::offsetAndBreadthForPositionedChild(const LayoutBox& child, Grid |
return; |
} |
- bool startIsAuto = (direction == ForColumns) ? child.style()->gridColumnStart().isAuto() : child.style()->gridRowStart().isAuto(); |
- bool endIsAuto = (direction == ForColumns) ? child.style()->gridColumnEnd().isAuto() : child.style()->gridRowEnd().isAuto(); |
+ GridPosition startPosition = (direction == ForColumns) ? child.style()->gridColumnStart() : child.style()->gridRowStart(); |
+ GridPosition endPosition = (direction == ForColumns) ? child.style()->gridColumnEnd() : child.style()->gridRowEnd(); |
+ bool startIsAuto = startPosition.isAuto() || (startPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamedLineOrArea(startPosition.namedGridLine(), styleRef(), GridResolvedPosition::initialPositionSide(direction))); |
+ bool endIsAuto = endPosition.isAuto() || (endPosition.isNamedGridArea() && !GridResolvedPosition::isValidNamedLineOrArea(endPosition.namedGridLine(), styleRef(), GridResolvedPosition::finalPositionSide(direction))); |
GridResolvedPosition firstPosition = GridResolvedPosition(0); |
GridResolvedPosition initialPosition = startIsAuto ? firstPosition : positions->resolvedInitialPosition; |