| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/css/parser/CSSPropertyParserHelpers.h" | 5 #include "core/css/parser/CSSPropertyParserHelpers.h" |
| 6 | 6 |
| 7 #include "core/css/CSSCalculationValue.h" | 7 #include "core/css/CSSCalculationValue.h" |
| 8 #include "core/css/CSSColorValue.h" | 8 #include "core/css/CSSColorValue.h" |
| 9 #include "core/css/CSSStringValue.h" | 9 #include "core/css/CSSStringValue.h" |
| 10 #include "core/css/CSSValuePair.h" | 10 #include "core/css/CSSValuePair.h" |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 return CSSPrimitiveValue::create(range.consumeIncludingWhitespace().nume
ricValue(), CSSPrimitiveValue::UnitType::Percentage); | 207 return CSSPrimitiveValue::create(range.consumeIncludingWhitespace().nume
ricValue(), CSSPrimitiveValue::UnitType::Percentage); |
| 208 } | 208 } |
| 209 CalcParser calcParser(range, valueRange); | 209 CalcParser calcParser(range, valueRange); |
| 210 if (const CSSCalcValue* calculation = calcParser.value()) { | 210 if (const CSSCalcValue* calculation = calcParser.value()) { |
| 211 if (calculation->category() == CalcPercent) | 211 if (calculation->category() == CalcPercent) |
| 212 return calcParser.consumeValue(); | 212 return calcParser.consumeValue(); |
| 213 } | 213 } |
| 214 return nullptr; | 214 return nullptr; |
| 215 } | 215 } |
| 216 | 216 |
| 217 bool canConsumeCalcValue(CalculationCategory category, CSSParserMode cssParserMo
de) |
| 218 { |
| 219 if (category == CalcLength || category == CalcPercent || category == CalcPer
centLength) |
| 220 return true; |
| 221 |
| 222 if (cssParserMode != SVGAttributeMode) |
| 223 return false; |
| 224 |
| 225 if (category == CalcNumber || category == CalcPercentNumber || category == C
alcLengthNumber || category == CalcPercentLengthNumber) |
| 226 return true; |
| 227 |
| 228 return false; |
| 229 } |
| 230 |
| 217 CSSPrimitiveValue* consumeLengthOrPercent(CSSParserTokenRange& range, CSSParserM
ode cssParserMode, ValueRange valueRange, UnitlessQuirk unitless) | 231 CSSPrimitiveValue* consumeLengthOrPercent(CSSParserTokenRange& range, CSSParserM
ode cssParserMode, ValueRange valueRange, UnitlessQuirk unitless) |
| 218 { | 232 { |
| 219 const CSSParserToken& token = range.peek(); | 233 const CSSParserToken& token = range.peek(); |
| 220 if (token.type() == DimensionToken || token.type() == NumberToken) | 234 if (token.type() == DimensionToken || token.type() == NumberToken) |
| 221 return consumeLength(range, cssParserMode, valueRange, unitless); | 235 return consumeLength(range, cssParserMode, valueRange, unitless); |
| 222 if (token.type() == PercentageToken) | 236 if (token.type() == PercentageToken) |
| 223 return consumePercent(range, valueRange); | 237 return consumePercent(range, valueRange); |
| 224 CalcParser calcParser(range, valueRange); | 238 CalcParser calcParser(range, valueRange); |
| 225 if (const CSSCalcValue* calculation = calcParser.value()) { | 239 if (const CSSCalcValue* calculation = calcParser.value()) { |
| 226 if (calculation->category() == CalcLength || calculation->category() ==
CalcPercent || calculation->category() == CalcPercentLength) | 240 if (canConsumeCalcValue(calculation->category(), cssParserMode)) |
| 227 return calcParser.consumeValue(); | 241 return calcParser.consumeValue(); |
| 228 } | 242 } |
| 229 return nullptr; | 243 return nullptr; |
| 230 } | 244 } |
| 231 | 245 |
| 232 CSSPrimitiveValue* consumeAngle(CSSParserTokenRange& range) | 246 CSSPrimitiveValue* consumeAngle(CSSParserTokenRange& range) |
| 233 { | 247 { |
| 234 const CSSParserToken& token = range.peek(); | 248 const CSSParserToken& token = range.peek(); |
| 235 if (token.type() == DimensionToken) { | 249 if (token.type() == DimensionToken) { |
| 236 switch (token.unitType()) { | 250 switch (token.unitType()) { |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 if (!value2) { | 609 if (!value2) { |
| 596 positionFromOneValue(value1, resultX, resultY); | 610 positionFromOneValue(value1, resultX, resultY); |
| 597 return true; | 611 return true; |
| 598 } | 612 } |
| 599 return positionFromTwoValues(value1, value2, resultX, resultY); | 613 return positionFromTwoValues(value1, value2, resultX, resultY); |
| 600 } | 614 } |
| 601 | 615 |
| 602 } // namespace CSSPropertyParserHelpers | 616 } // namespace CSSPropertyParserHelpers |
| 603 | 617 |
| 604 } // namespace blink | 618 } // namespace blink |
| OLD | NEW |