diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index db88aa00eff34..5cca593571db6 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations @@ -1593,6 +1593,10 @@ crbug.com/657968 storage/indexeddb/idbdatabase-deleteObjectStore-exception-order crbug.com/659610 fast/css-grid-layout/grid-baseline.html [ Failure ] crbug.com/659610 fast/css-grid-layout/grid-baseline-margins.html [ Failure ] +# Due to a temporal revert these tests are failing: +crbug.com/666688 fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html [ Failure ] +crbug.com/666688 fast/css-grid-layout/mozilla/grid-repeat-auto-fill-fit-001.html [ Failure ] + # TODO(chrishall): this is a temporary mediation step as part of the P0 issue crbug.com/657646 # this is not meant to be here for more than a few days (from 2016-11-03 SYD) crbug.com/657646 [ Win ] fast/text/font-weight.html [ Failure Pass ] diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp index cb52b7acaa913..9c3e7d8f9da0f 100644 --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp @@ -510,8 +510,14 @@ void LayoutGrid::layoutBlock(bool relayoutChildren) { TextAutosizer::LayoutScope textAutosizerLayoutScope(this, &layoutScope); - updateAutoRepeatTracksAndSetDirtyIfNeeded(TrackSizing); - placeItemsOnGrid(); + // 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); GridSizingData sizingData(gridColumnCount(), gridRowCount()); @@ -687,9 +693,7 @@ LayoutUnit LayoutGrid::guttersSize(GridTrackSizingDirection direction, void LayoutGrid::computeIntrinsicLogicalWidths( LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const { - const_cast(this)->updateAutoRepeatTracksAndSetDirtyIfNeeded( - IntrinsicSizeComputation); - const_cast(this)->placeItemsOnGrid(); + const_cast(this)->placeItemsOnGrid(IntrinsicSizeComputation); GridSizingData sizingData(gridColumnCount(), gridRowCount()); computeTrackSizesForIndefiniteSize(ForColumns, sizingData, minLogicalWidth, @@ -1827,21 +1831,6 @@ 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 { @@ -1982,12 +1971,20 @@ LayoutGrid::computeEmptyTracksForAutoRepeat( return emptyTrackIndexes; } -void LayoutGrid::placeItemsOnGrid() { +void LayoutGrid::placeItemsOnGrid(SizingOperation sizingOperation) { if (!m_gridIsDirty) return; DCHECK(m_gridItemArea.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. diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.h b/third_party/WebKit/Source/core/layout/LayoutGrid.h index d563e877d53e8..a31d432e86f47 100644 --- a/third_party/WebKit/Source/core/layout/LayoutGrid.h +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.h @@ -142,7 +142,6 @@ class LayoutGrid final : public LayoutBlock { void ensureGridSize(size_t maximumRowSize, size_t maximumColumnSize); void insertItemIntoGrid(LayoutBox&, const GridArea&); - void updateAutoRepeatTracksAndSetDirtyIfNeeded(SizingOperation); size_t computeAutoRepeatTracksCount(GridTrackSizingDirection, SizingOperation) const; @@ -154,7 +153,7 @@ class LayoutGrid final : public LayoutBlock { bool isEmptyAutoRepeatTrack(GridTrackSizingDirection, size_t lineNumber) const; - void placeItemsOnGrid(); + void placeItemsOnGrid(SizingOperation); void populateExplicitGridAndOrderIterator(); std::unique_ptr createEmptyGridAreaAtSpecifiedPositionsOutsideGrid( const LayoutBox&,