Chromium Code Reviews| 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 53eae84f694221d69e58fba1b700446bd189bb7f..7674a1d83526a3a12a61459352eefee7f51eda7d 100644 |
| --- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp |
| +++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp |
| @@ -940,9 +940,19 @@ static CSSPrimitiveValue* ConsumeAngleOrPercent(CSSParserTokenRange& range, |
| CSSParserMode, |
| ValueRange value_range, |
| UnitlessQuirk) { |
| - return range.Peek().GetType() == kPercentageToken |
| - ? ConsumePercent(range, value_range) |
| - : ConsumeAngle(range); |
| + const CSSParserToken& token = range.Peek(); |
| + if (token.GetType() == kDimensionToken || token.GetType() == kNumberToken) |
| + return ConsumeAngle(range); |
| + if (token.GetType() == kPercentageToken) |
| + return ConsumePercent(range, value_range); |
| + CalcParser calc_parser(range, value_range); |
|
f(malita)
2017/04/10 14:07:03
Both ConsumePercent and ConsumeAngle perform type
fs
2017/04/10 14:09:08
Yes, but then we can end up parsing calc() twice (
f(malita)
2017/04/10 14:16:26
Ack, this approach is more efficient.
|
| + if (const CSSCalcValue* calculation = calc_parser.Value()) { |
| + CalculationCategory category = calculation->Category(); |
| + // TODO(fs): Add and support kCalcPercentAngle? |
|
fs
2017/04/10 14:09:08
+alancutter for thoughts on this
|
| + if (category == kCalcAngle || category == kCalcPercent) |
| + return calc_parser.ConsumeValue(); |
| + } |
| + return nullptr; |
| } |
| using PositionFunctor = CSSPrimitiveValue* (*)(CSSParserTokenRange&, |