Index: Source/core/css/resolver/StyleBuilderCustom.cpp |
diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp |
index c9e9af60fb0ef27727a9db1c944eb2c7f89edc94..10522cdafd584c1d144585176ba5b416c6d43422 100644 |
--- a/Source/core/css/resolver/StyleBuilderCustom.cpp |
+++ b/Source/core/css/resolver/StyleBuilderCustom.cpp |
@@ -1391,4 +1391,69 @@ void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat |
} |
} |
+void StyleBuilderFunctions::applyInitialCSSPropertyGridAutoFlow(StyleResolverState& state) |
+{ |
+ state.style()->setGridAutoFlow(RenderStyle::initialGridAutoFlow()); |
+} |
+ |
+void StyleBuilderFunctions::applyInheritCSSPropertyGridAutoFlow(StyleResolverState& state) |
+{ |
+} |
+ |
+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 |