| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/CSSPropertyParser.h" | 5 #include "core/css/parser/CSSPropertyParser.h" |
| 6 | 6 |
| 7 #include "core/StylePropertyShorthand.h" | 7 #include "core/StylePropertyShorthand.h" |
| 8 #include "core/css/CSSBasicShapeValues.h" | 8 #include "core/css/CSSBasicShapeValues.h" |
| 9 #include "core/css/CSSBorderImage.h" | 9 #include "core/css/CSSBorderImage.h" |
| 10 #include "core/css/CSSContentDistributionValue.h" | 10 #include "core/css/CSSContentDistributionValue.h" |
| (...skipping 3263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3274 return false; | 3274 return false; |
| 3275 | 3275 |
| 3276 gridArea.rows = GridSpan::translatedDefiniteGridSpan(gridArea.rows.s
tartLine(), gridArea.rows.endLine() + 1); | 3276 gridArea.rows = GridSpan::translatedDefiniteGridSpan(gridArea.rows.s
tartLine(), gridArea.rows.endLine() + 1); |
| 3277 } | 3277 } |
| 3278 currentColumn = lookAheadColumn - 1; | 3278 currentColumn = lookAheadColumn - 1; |
| 3279 } | 3279 } |
| 3280 | 3280 |
| 3281 return true; | 3281 return true; |
| 3282 } | 3282 } |
| 3283 | 3283 |
| 3284 enum TrackSizeRestriction { FixedSizeOnly, AllowAll }; | 3284 enum TrackSizeRestriction { FixedSizeOnly, InflexibleSizeOnly, AllowAll }; |
| 3285 | 3285 |
| 3286 static CSSPrimitiveValue* consumeGridBreadth(CSSParserTokenRange& range, CSSPars
erMode cssParserMode, TrackSizeRestriction restriction = AllowAll) | 3286 static CSSPrimitiveValue* consumeGridBreadth(CSSParserTokenRange& range, CSSPars
erMode cssParserMode, TrackSizeRestriction restriction = AllowAll) |
| 3287 { | 3287 { |
| 3288 if (restriction == AllowAll) { | 3288 if (restriction != FixedSizeOnly) { |
| 3289 const CSSParserToken& token = range.peek(); | 3289 const CSSParserToken& token = range.peek(); |
| 3290 if (identMatches<CSSValueMinContent, CSSValueMaxContent, CSSValueAuto>(t
oken.id())) | 3290 if (identMatches<CSSValueMinContent, CSSValueMaxContent, CSSValueAuto>(t
oken.id())) |
| 3291 return consumeIdent(range); | 3291 return consumeIdent(range); |
| 3292 if (token.type() == DimensionToken && token.unitType() == CSSPrimitiveVa
lue::UnitType::Fraction) { | 3292 if (token.type() == DimensionToken && token.unitType() == CSSPrimitiveVa
lue::UnitType::Fraction) { |
| 3293 if (range.peek().numericValue() < 0) | 3293 if (restriction == InflexibleSizeOnly || range.peek().numericValue()
< 0) |
| 3294 return nullptr; | 3294 return nullptr; |
| 3295 return cssValuePool().createValue(range.consumeIncludingWhitespace()
.numericValue(), CSSPrimitiveValue::UnitType::Fraction); | 3295 return cssValuePool().createValue(range.consumeIncludingWhitespace()
.numericValue(), CSSPrimitiveValue::UnitType::Fraction); |
| 3296 } | 3296 } |
| 3297 } | 3297 } |
| 3298 return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, U
nitlessQuirk::Allow); | 3298 return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative, U
nitlessQuirk::Allow); |
| 3299 } | 3299 } |
| 3300 | 3300 |
| 3301 // TODO(rob.buis): This needs a bool parameter so we can disallow <auto-track-li
st> for the grid shorthand. | 3301 // TODO(rob.buis): This needs a bool parameter so we can disallow <auto-track-li
st> for the grid shorthand. |
| 3302 static CSSValue* consumeGridTrackSize(CSSParserTokenRange& range, CSSParserMode
cssParserMode, TrackSizeRestriction restriction = AllowAll) | 3302 static CSSValue* consumeGridTrackSize(CSSParserTokenRange& range, CSSParserMode
cssParserMode, TrackSizeRestriction restriction = AllowAll) |
| 3303 { | 3303 { |
| 3304 const CSSParserToken& token = range.peek(); | 3304 const CSSParserToken& token = range.peek(); |
| 3305 if (restriction == AllowAll && identMatches<CSSValueAuto>(token.id())) | 3305 if (restriction == AllowAll && identMatches<CSSValueAuto>(token.id())) |
| 3306 return consumeIdent(range); | 3306 return consumeIdent(range); |
| 3307 | 3307 |
| 3308 if (token.functionId() == CSSValueMinmax) { | 3308 if (token.functionId() == CSSValueMinmax) { |
| 3309 CSSParserTokenRange rangeCopy = range; | 3309 CSSParserTokenRange rangeCopy = range; |
| 3310 CSSParserTokenRange args = consumeFunction(rangeCopy); | 3310 CSSParserTokenRange args = consumeFunction(rangeCopy); |
| 3311 CSSPrimitiveValue* minTrackBreadth = consumeGridBreadth(args, cssParserM
ode, restriction); | 3311 TrackSizeRestriction minTrackBreadthRestriction = restriction == AllowAl
l ? InflexibleSizeOnly : restriction; |
| 3312 CSSPrimitiveValue* minTrackBreadth = consumeGridBreadth(args, cssParserM
ode, minTrackBreadthRestriction); |
| 3312 if (!minTrackBreadth || !consumeCommaIncludingWhitespace(args)) | 3313 if (!minTrackBreadth || !consumeCommaIncludingWhitespace(args)) |
| 3313 return nullptr; | 3314 return nullptr; |
| 3314 CSSPrimitiveValue* maxTrackBreadth = consumeGridBreadth(args, cssParserM
ode); | 3315 CSSPrimitiveValue* maxTrackBreadth = consumeGridBreadth(args, cssParserM
ode); |
| 3315 if (!maxTrackBreadth || !args.atEnd()) | 3316 if (!maxTrackBreadth || !args.atEnd()) |
| 3316 return nullptr; | 3317 return nullptr; |
| 3317 range = rangeCopy; | 3318 range = rangeCopy; |
| 3318 CSSFunctionValue* result = CSSFunctionValue::create(CSSValueMinmax); | 3319 CSSFunctionValue* result = CSSFunctionValue::create(CSSValueMinmax); |
| 3319 result->append(minTrackBreadth); | 3320 result->append(minTrackBreadth); |
| 3320 result->append(maxTrackBreadth); | 3321 result->append(maxTrackBreadth); |
| 3321 return result; | 3322 return result; |
| (...skipping 1709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5031 case CSSPropertyGridTemplate: | 5032 case CSSPropertyGridTemplate: |
| 5032 return consumeGridTemplateShorthand(CSSPropertyGridTemplate, important); | 5033 return consumeGridTemplateShorthand(CSSPropertyGridTemplate, important); |
| 5033 case CSSPropertyGrid: | 5034 case CSSPropertyGrid: |
| 5034 return consumeGridShorthand(important); | 5035 return consumeGridShorthand(important); |
| 5035 default: | 5036 default: |
| 5036 return false; | 5037 return false; |
| 5037 } | 5038 } |
| 5038 } | 5039 } |
| 5039 | 5040 |
| 5040 } // namespace blink | 5041 } // namespace blink |
| OLD | NEW |