| Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
|
| index 1c6d661dfb8f3e2d334808f2947d5208dfefe3f5..6101dae0384f8e426e06360313b84707e5484830 100644
|
| --- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
|
| +++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
|
| @@ -230,6 +230,25 @@ PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeLengthOrPercent(CSSParserTokenR
|
| return nullptr;
|
| }
|
|
|
| +PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeNumberOrPercent(CSSParserTokenRange& range, ValueRange valueRange)
|
| +{
|
| + const CSSParserToken& token = range.peek();
|
| + if (token.type() == NumberToken)
|
| + return consumeNumber(range, valueRange);
|
| + if (token.type() == PercentageToken)
|
| + return consumePercent(range, valueRange);
|
| + CalcParser calcParser(range, valueRange);
|
| + if (const CSSCalcValue* calculation = calcParser.value()) {
|
| + // TODO(rwlbuis) Calcs should not be subject to parse time range checks.
|
| + // spec: https://drafts.csswg.org/css-values-3/#calc-range
|
| + if (calculation->category() == CalcNumber && !(valueRange == ValueRangeNonNegative && calculation->isNegative()))
|
| + return calcParser.consumeNumber();
|
| + if (calculation->category() == CalcPercent || calculation->category() == CalcPercentNumber)
|
| + return calcParser.consumeValue();
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeAngle(CSSParserTokenRange& range)
|
| {
|
| const CSSParserToken& token = range.peek();
|
|
|