| 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 438d518648bf5d113cde2b62a4ba90cc3751a2e3..edf9135ffa9e6fe6e1adf534aa19b4b59892c5c3 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| @@ -507,14 +507,8 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) {
|
|
|
| TextAutosizer::LayoutScope textAutosizerLayoutScope(this, &layoutScope);
|
|
|
| - // TODO(svillar): we won't need to do this once the intrinsic width
|
| - // computation is isolated from the LayoutGrid object state (it should not
|
| - // touch any attribute) (see crbug.com/627812)
|
| - if (m_autoRepeatColumns &&
|
| - m_autoRepeatColumns !=
|
| - computeAutoRepeatTracksCount(ForColumns, TrackSizing))
|
| - dirtyGrid();
|
| - placeItemsOnGrid(TrackSizing);
|
| + updateAutoRepeatTracksAndSetDirtyIfNeeded(TrackSizing);
|
| + placeItemsOnGrid();
|
|
|
| GridSizingData sizingData(gridColumnCount(), gridRowCount());
|
|
|
| @@ -684,7 +678,9 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction,
|
| void LayoutGrid::computeIntrinsicLogicalWidths(
|
| LayoutUnit& minLogicalWidth,
|
| LayoutUnit& maxLogicalWidth) const {
|
| - const_cast<LayoutGrid*>(this)->placeItemsOnGrid(IntrinsicSizeComputation);
|
| + const_cast<LayoutGrid*>(this)->updateAutoRepeatTracksAndSetDirtyIfNeeded(
|
| + IntrinsicSizeComputation);
|
| + const_cast<LayoutGrid*>(this)->placeItemsOnGrid();
|
|
|
| GridSizingData sizingData(gridColumnCount(), gridRowCount());
|
| computeTrackSizesForIndefiniteSize(ForColumns, sizingData, minLogicalWidth,
|
| @@ -1766,6 +1762,21 @@ void LayoutGrid::insertItemIntoGrid(LayoutBox& child, const GridArea& area) {
|
| }
|
| }
|
|
|
| +void LayoutGrid::updateAutoRepeatTracksAndSetDirtyIfNeeded(
|
| + SizingOperation sizingOperation) {
|
| + size_t newAutoRepeatColumns =
|
| + computeAutoRepeatTracksCount(ForColumns, sizingOperation);
|
| + size_t newAutoRepeatRows =
|
| + computeAutoRepeatTracksCount(ForRows, sizingOperation);
|
| +
|
| + if (m_autoRepeatColumns != newAutoRepeatColumns ||
|
| + m_autoRepeatRows != newAutoRepeatRows)
|
| + dirtyGrid();
|
| +
|
| + m_autoRepeatColumns = newAutoRepeatColumns;
|
| + m_autoRepeatRows = newAutoRepeatRows;
|
| +}
|
| +
|
| size_t LayoutGrid::computeAutoRepeatTracksCount(
|
| GridTrackSizingDirection direction,
|
| SizingOperation sizingOperation) const {
|
| @@ -1906,20 +1917,13 @@ LayoutGrid::computeEmptyTracksForAutoRepeat(
|
| return emptyTrackIndexes;
|
| }
|
|
|
| -void LayoutGrid::placeItemsOnGrid(SizingOperation sizingOperation) {
|
| +void LayoutGrid::placeItemsOnGrid() {
|
| if (!m_gridIsDirty)
|
| return;
|
|
|
| DCHECK(m_gridItemArea.isEmpty());
|
| DCHECK(m_gridItemsIndexesMap.isEmpty());
|
|
|
| - if (sizingOperation == IntrinsicSizeComputation)
|
| - m_autoRepeatColumns = styleRef().gridAutoRepeatColumns().size();
|
| - else
|
| - m_autoRepeatColumns =
|
| - computeAutoRepeatTracksCount(ForColumns, sizingOperation);
|
| - m_autoRepeatRows = computeAutoRepeatTracksCount(ForRows, sizingOperation);
|
| -
|
| populateExplicitGridAndOrderIterator();
|
|
|
| // We clear the dirty bit here as the grid sizes have been updated.
|
|
|