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

Unified Diff: third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp

Issue 2161003003: [css-grid] repeat() syntax should take a <track-list> argument (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch for landing Created 4 years, 5 months 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/css/ComputedStyleCSSValueMapping.cpp
diff --git a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
index ae4ba1fd6cbb8a3239efef6b9faa7b805dbb654d..d6d2f3e914479d1c2ee365c8d3849450dd5a699e 100644
--- a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
+++ b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
@@ -744,11 +744,12 @@ class OrderedNamedLinesCollector {
STACK_ALLOCATED();
WTF_MAKE_NONCOPYABLE(OrderedNamedLinesCollector);
public:
- OrderedNamedLinesCollector(const ComputedStyle& style, bool isRowAxis, size_t repetitions)
+ OrderedNamedLinesCollector(const ComputedStyle& style, bool isRowAxis, size_t autoRepeatTracksCount)
: m_orderedNamedGridLines(isRowAxis ? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines())
, m_orderedNamedAutoRepeatGridLines(isRowAxis ? style.autoRepeatOrderedNamedGridColumnLines() : style.autoRepeatOrderedNamedGridRowLines())
, m_insertionPoint(isRowAxis ? style.gridAutoRepeatColumnsInsertionPoint() : style.gridAutoRepeatRowsInsertionPoint())
- , m_repetitions(repetitions)
+ , m_autoRepeatTotalTracks(autoRepeatTracksCount)
+ , m_autoRepeatTrackListLength(isRowAxis ? style.gridAutoRepeatColumns().size() : style.gridAutoRepeatRows().size())
{
}
@@ -763,7 +764,8 @@ private:
const OrderedNamedGridLines& m_orderedNamedGridLines;
const OrderedNamedGridLines& m_orderedNamedAutoRepeatGridLines;
size_t m_insertionPoint;
- size_t m_repetitions;
+ size_t m_autoRepeatTotalTracks;
+ size_t m_autoRepeatTrackListLength;
};
void OrderedNamedLinesCollector::appendLines(CSSGridLineNamesValue& lineNamesValue, size_t index, NamedLinesType type) const
@@ -785,9 +787,10 @@ void OrderedNamedLinesCollector::collectLineNamesForIndex(CSSGridLineNamesValue&
return;
}
- DCHECK(m_repetitions);
- if (i > m_insertionPoint + m_repetitions) {
- appendLines(lineNamesValue, i - (m_repetitions - 1), NamedLines);
+ DCHECK(m_autoRepeatTotalTracks);
+
+ if (i > m_insertionPoint + m_autoRepeatTotalTracks) {
+ appendLines(lineNamesValue, i - (m_autoRepeatTotalTracks - 1), NamedLines);
return;
}
@@ -797,14 +800,16 @@ void OrderedNamedLinesCollector::collectLineNamesForIndex(CSSGridLineNamesValue&
return;
}
- if (i == m_insertionPoint + m_repetitions) {
- appendLines(lineNamesValue, 1, AutoRepeatNamedLines);
+ if (i == m_insertionPoint + m_autoRepeatTotalTracks) {
+ appendLines(lineNamesValue, m_autoRepeatTrackListLength, AutoRepeatNamedLines);
appendLines(lineNamesValue, m_insertionPoint + 1, NamedLines);
return;
}
- appendLines(lineNamesValue, 1, AutoRepeatNamedLines);
- appendLines(lineNamesValue, 0, AutoRepeatNamedLines);
+ size_t autoRepeatIndexInFirstRepetition = (i - m_insertionPoint) % m_autoRepeatTrackListLength;
+ if (!autoRepeatIndexInFirstRepetition && i > m_insertionPoint)
+ appendLines(lineNamesValue, m_autoRepeatTrackListLength, AutoRepeatNamedLines);
+ appendLines(lineNamesValue, autoRepeatIndexInFirstRepetition, AutoRepeatNamedLines);
}
static void addValuesForNamedGridLinesAtIndex(OrderedNamedLinesCollector& collector, size_t i, CSSValueList& list)
@@ -837,8 +842,8 @@ static CSSValue* valueForGridTrackList(GridTrackSizingDirection direction, const
if (trackListIsEmpty)
return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- size_t repetitions = isLayoutGrid ? toLayoutGrid(layoutObject)->autoRepeatCountForDirection(direction) : 0;
- OrderedNamedLinesCollector collector(style, isRowAxis, repetitions);
+ size_t autoRepeatTotalTracks = isLayoutGrid ? toLayoutGrid(layoutObject)->autoRepeatCountForDirection(direction) : 0;
+ OrderedNamedLinesCollector collector(style, isRowAxis, autoRepeatTotalTracks);
CSSValueList* list = CSSValueList::createSpaceSeparated();
size_t insertionIndex;
if (isLayoutGrid) {

Powered by Google App Engine
This is Rietveld 408576698