Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
index 0d7831851de29b1a45bbdefb94e17597fb4fbfbc..df7a51ae3d8279ea8bfb83214445c15ee5813213 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
@@ -338,6 +338,52 @@ FontDescription::VariantLigatures StyleBuilderConverter::convertFontVariantLigat |
return FontDescription::VariantLigatures(); |
} |
+FontVariantNumeric StyleBuilderConverter::convertFontVariantNumeric(StyleResolverState&, const CSSValue& value) |
+{ |
+ if (value.isValueList()) { |
Timothy Loh
2016/05/10 05:26:26
I would put the 'none' check up first, i.e.
if (v
drott
2016/05/10 10:59:06
I assume you meant the "normal" check? Done.
|
+ FontVariantNumeric variantNumeric; |
+ const CSSValueList& valueList = toCSSValueList(value); |
+ for (size_t i = 0; i < valueList.length(); ++i) { |
Timothy Loh
2016/05/10 05:26:26
for (const CSSValue* feature : toCSSValueList(valu
drott
2016/05/10 10:59:06
Changed accordingly.
|
+ const CSSValue& item = *valueList.item(i); |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(item); |
+ switch (primitiveValue.getValueID()) { |
+ case CSSValueLiningNums: |
+ variantNumeric.setNumericFigure(FontVariantNumeric::LiningNums); |
+ break; |
+ case CSSValueOldstyleNums: |
+ variantNumeric.setNumericFigure(FontVariantNumeric::OldstyleNums); |
+ break; |
+ case CSSValueProportionalNums: |
+ variantNumeric.setNumericSpacing(FontVariantNumeric::ProportionalNums); |
+ break; |
+ case CSSValueTabularNums: |
+ variantNumeric.setNumericSpacing(FontVariantNumeric::TabularNums); |
+ break; |
+ case CSSValueDiagonalFractions: |
+ variantNumeric.setNumericFraction(FontVariantNumeric::DiagonalFractions); |
+ break; |
+ case CSSValueStackedFractions: |
+ variantNumeric.setNumericFraction(FontVariantNumeric::StackedFractions); |
+ break; |
+ case CSSValueOrdinal: |
+ variantNumeric.setOrdinal(FontVariantNumeric::OrdinalOn); |
+ break; |
+ case CSSValueSlashedZero: |
+ variantNumeric.setSlashedZero(FontVariantNumeric::SlashedZeroOn); |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ break; |
+ } |
+ } |
+ return variantNumeric; |
+ } |
+ |
+ ASSERT_WITH_SECURITY_IMPLICATION(value.isPrimitiveValue()); |
Timothy Loh
2016/05/10 05:26:26
btw this line is redundant because toCSSPrimitiveV
drott
2016/05/10 10:59:06
Not needed anymore due to the inversed order of ch
|
+ ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNormal); |
+ return FontVariantNumeric(); |
+} |
+ |
StyleSelfAlignmentData StyleBuilderConverter::convertSelfOrDefaultAlignmentData(StyleResolverState&, const CSSValue& value) |
{ |
StyleSelfAlignmentData alignmentData = ComputedStyle::initialSelfAlignment(); |