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..fa441fc7c21b88314546d491088a936a48a3b5d5 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 autoRepeatTracks) |
jfernandez
2016/07/19 14:43:18
I'd add some quantification sufix/prefix, like num
svillar
2016/07/20 07:22:30
Acknowledged.
|
: 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(autoRepeatTracks) |
+ , 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); |
jfernandez
2016/07/19 14:43:18
Wouldn't be better to check whether it's > 0 ?
svillar
2016/07/20 07:22:30
That's exactly what we do here, m_autoRepeatTotalT
|
+ |
+ 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) |
@@ -838,7 +843,7 @@ static CSSValue* valueForGridTrackList(GridTrackSizingDirection direction, const |
return CSSPrimitiveValue::createIdentifier(CSSValueNone); |
size_t repetitions = isLayoutGrid ? toLayoutGrid(layoutObject)->autoRepeatCountForDirection(direction) : 0; |
- OrderedNamedLinesCollector collector(style, isRowAxis, repetitions); |
+ OrderedNamedLinesCollector collector(style, isRowAxis, repetitions * autoRepeatTrackSizes.size()); |
CSSValueList* list = CSSValueList::createSpaceSeparated(); |
size_t insertionIndex; |
if (isLayoutGrid) { |