| Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| index 203b3d8f7912ad55f078dfc1f5f1cc565d46b310..506828c59f82c893a572614f75b17467a296a5a2 100644
|
| --- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| +++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| @@ -295,6 +295,13 @@ template<CSSValueID... names> PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeI
|
| return cssValuePool().createIdentifierValue(range.consumeIncludingWhitespace().id());
|
| }
|
|
|
| +static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeIdentRange(CSSParserTokenRange& range, CSSValueID lower, CSSValueID upper)
|
| +{
|
| + if (range.peek().id() < lower || range.peek().id() > upper)
|
| + return nullptr;
|
| + return consumeIdent(range);
|
| +}
|
| +
|
| static PassRefPtrWillBeRawPtr<CSSCustomIdentValue> consumeCustomIdent(CSSParserTokenRange& range)
|
| {
|
| if (range.peek().type() != IdentToken)
|
| @@ -1107,7 +1114,7 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeFamilyName(CSSParserTokenRange& r
|
|
|
| static PassRefPtrWillBeRawPtr<CSSValue> consumeGenericFamily(CSSParserTokenRange& range)
|
| {
|
| - return consumeIdent<CSSValueSerif, CSSValueSansSerif, CSSValueCursive, CSSValueFantasy, CSSValueMonospace, CSSValueWebkitBody>(range);
|
| + return consumeIdentRange(range, CSSValueSerif, CSSValueWebkitBody);
|
| }
|
|
|
| static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFamily(CSSParserTokenRange& range)
|
| @@ -2191,7 +2198,7 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumePositionLonghand(CSSParserTokenRa
|
| range.consumeIncludingWhitespace();
|
| return cssValuePool().createValue(percent, CSSPrimitiveValue::UnitType::Percentage);
|
| }
|
| - return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Forbid);
|
| + return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll);
|
| }
|
|
|
| static PassRefPtrWillBeRawPtr<CSSValue> consumePositionX(CSSParserTokenRange& range, CSSParserMode cssParserMode)
|
| @@ -2316,7 +2323,7 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBaselineShift(CSSParserT
|
| CSSValueID id = range.peek().id();
|
| if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper)
|
| return consumeIdent(range);
|
| - return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll, UnitlessQuirk::Forbid);
|
| + return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll);
|
| }
|
|
|
| static PassRefPtrWillBeRawPtr<CSSValue> consumeImageSet(CSSParserTokenRange& range, const CSSParserContext& context)
|
| @@ -2934,6 +2941,14 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeBorderRadiusCorner(CSSParserToken
|
| return CSSValuePair::create(parsedValue1.release(), parsedValue2.release(), CSSValuePair::DropIdenticalValues);
|
| }
|
|
|
| +static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeVerticalAlign(CSSParserTokenRange& range, CSSParserMode cssParserMode)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSPrimitiveValue> parsedValue = consumeIdentRange(range, CSSValueBaseline, CSSValueWebkitBaselineMiddle);
|
| + if (!parsedValue)
|
| + parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow);
|
| + return parsedValue.release();
|
| +}
|
| +
|
| PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID unresolvedProperty)
|
| {
|
| CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
|
| @@ -3154,6 +3169,8 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty
|
| case CSSPropertyFillOpacity:
|
| case CSSPropertyStopOpacity:
|
| case CSSPropertyFloodOpacity:
|
| + case CSSPropertyOpacity:
|
| + case CSSPropertyWebkitBoxFlex:
|
| return consumeNumber(m_range, ValueRangeAll);
|
| case CSSPropertyBaselineShift:
|
| return consumeBaselineShift(m_range);
|
| @@ -3191,6 +3208,16 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty
|
| case CSSPropertyBorderBottomLeftRadius:
|
| case CSSPropertyBorderBottomRightRadius:
|
| return consumeBorderRadiusCorner(m_range, m_context.mode());
|
| + case CSSPropertyWebkitBoxFlexGroup:
|
| + return consumeInteger(m_range, 0);
|
| + case CSSPropertyOrder:
|
| + return consumeInteger(m_range);
|
| + case CSSPropertyTextUnderlinePosition:
|
| + // auto | [ under || [ left | right ] ], but we only support auto | under for now
|
| + ASSERT(RuntimeEnabledFeatures::css3TextDecorationsEnabled());
|
| + return consumeIdent<CSSValueAuto, CSSValueUnder>(m_range);
|
| + case CSSPropertyVerticalAlign:
|
| + return consumeVerticalAlign(m_range, m_context.mode());
|
| default:
|
| return nullptr;
|
| }
|
|
|