| 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 5dbf4e6d87aefe058dabc3ab9243da210c1822c9..6615856067c6916009039b2de0145d5b4c1f51bf 100644
|
| --- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| +++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
|
| @@ -339,6 +339,25 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeAngle(CSSParserTokenRang
|
| return nullptr;
|
| }
|
|
|
| +static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeTime(CSSParserTokenRange& range, ValueRange valueRange)
|
| +{
|
| + const CSSParserToken& token = range.peek();
|
| + if (token.type() == DimensionToken) {
|
| + if (valueRange == ValueRangeNonNegative && token.numericValue() < 0)
|
| + return nullptr;
|
| + CSSPrimitiveValue::UnitType unit = token.unitType();
|
| + if (unit == CSSPrimitiveValue::UnitType::Milliseconds || unit == CSSPrimitiveValue::UnitType::Seconds)
|
| + return cssValuePool().createValue(range.consumeIncludingWhitespace().numericValue(), token.unitType());
|
| + return nullptr;
|
| + }
|
| + CalcParser calcParser(range, valueRange);
|
| + if (const CSSCalcValue* calculation = calcParser.value()) {
|
| + if (calculation->category() == CalcTime)
|
| + return calcParser.consumeValue();
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| static inline bool isCSSWideKeyword(const CSSValueID& id)
|
| {
|
| return id == CSSValueInitial || id == CSSValueInherit || id == CSSValueUnset || id == CSSValueDefault;
|
| @@ -1060,6 +1079,12 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeAnimationTimingFunction(CSSParser
|
| static PassRefPtrWillBeRawPtr<CSSValue> consumeAnimationValue(CSSPropertyID property, CSSParserTokenRange& range)
|
| {
|
| switch (property) {
|
| + case CSSPropertyAnimationDelay:
|
| + case CSSPropertyTransitionDelay:
|
| + return consumeTime(range, ValueRangeAll);
|
| + case CSSPropertyAnimationDuration:
|
| + case CSSPropertyTransitionDuration:
|
| + return consumeTime(range, ValueRangeNonNegative);
|
| case CSSPropertyAnimationTimingFunction:
|
| case CSSPropertyTransitionTimingFunction:
|
| return consumeAnimationTimingFunction(range);
|
| @@ -1162,6 +1187,10 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty
|
| return consumeColumnSpan(m_range, m_context.mode());
|
| case CSSPropertyZoom:
|
| return consumeZoom(m_range, m_context);
|
| + case CSSPropertyAnimationDelay:
|
| + case CSSPropertyTransitionDelay:
|
| + case CSSPropertyAnimationDuration:
|
| + case CSSPropertyTransitionDuration:
|
| case CSSPropertyAnimationTimingFunction:
|
| case CSSPropertyTransitionTimingFunction:
|
| return consumeAnimationPropertyList(propId, m_range);
|
|
|