Index: Source/core/css/resolver/StyleBuilderCustom.cpp |
diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp |
index dab8db7c24c2110f0036006daf0946622ffc668e..264bdd4d282bdebad5307b13774d698cd8408392 100644 |
--- a/Source/core/css/resolver/StyleBuilderCustom.cpp |
+++ b/Source/core/css/resolver/StyleBuilderCustom.cpp |
@@ -1400,4 +1400,60 @@ void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat |
} |
} |
+void StyleBuilderFunctions::applyValueCSSPropertyGridAutoFlow(StyleResolverState& state, CSSValue* value) |
+{ |
+ ASSERT(value->isValueList()); |
+ CSSValueList* list = toCSSValueList(value); |
+ |
+ CSSPrimitiveValue* first = list->length() >= 1 ? toCSSPrimitiveValue(list->item(0)) : nullptr; |
+ |
+ if (!first) { |
+ applyInitialCSSPropertyGridAutoFlow(state); |
+ return; |
+ } |
+ |
+ CSSPrimitiveValue* second = list->length() == 2 ? toCSSPrimitiveValue(list->item(1)) : nullptr; |
+ |
+ GridAutoFlow autoFlow = RenderStyle::initialGridAutoFlow(); |
+ switch (first->getValueID()) { |
+ case CSSValueRow: |
+ if (second) { |
+ if (second->getValueID() == CSSValueDense) |
+ autoFlow = AutoFlowRowDense; |
+ else |
+ autoFlow = AutoFlowStackRow; |
+ } else { |
+ autoFlow = AutoFlowRow; |
+ } |
+ break; |
+ case CSSValueColumn: |
+ if (second) { |
+ if (second->getValueID() == CSSValueDense) |
+ autoFlow = AutoFlowColumnDense; |
+ else |
+ autoFlow = AutoFlowStackColumn; |
+ } else { |
+ autoFlow = AutoFlowColumn; |
+ } |
+ break; |
+ case CSSValueDense: |
+ if (second && second->getValueID() == CSSValueColumn) |
+ autoFlow = AutoFlowColumnDense; |
+ else |
+ autoFlow = AutoFlowRowDense; |
+ break; |
+ case CSSValueStack: |
+ if (second && second->getValueID() == CSSValueColumn) |
+ autoFlow = AutoFlowStackColumn; |
+ else |
+ autoFlow = AutoFlowStackRow; |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ break; |
+ } |
+ |
+ state.style()->setGridAutoFlow(autoFlow); |
+} |
+ |
} // namespace WebCore |