OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> |
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. | 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. |
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. | 9 * Copyright (C) 2012 Intel Corporation. All rights reserved. |
10 * | 10 * |
(...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) | 1270 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
1271 return false; | 1271 return false; |
1272 parsedValue = parseGridTemplateAreas(); | 1272 parsedValue = parseGridTemplateAreas(); |
1273 break; | 1273 break; |
1274 | 1274 |
1275 case CSSPropertyGridTemplate: | 1275 case CSSPropertyGridTemplate: |
1276 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) | 1276 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
1277 return false; | 1277 return false; |
1278 return parseGridTemplateShorthand(important); | 1278 return parseGridTemplateShorthand(important); |
1279 | 1279 |
| 1280 case CSSPropertyGrid: |
| 1281 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
| 1282 return false; |
| 1283 return parseGridShorthand(important); |
| 1284 |
1280 case CSSPropertyWebkitMarginCollapse: { | 1285 case CSSPropertyWebkitMarginCollapse: { |
1281 if (num == 1) { | 1286 if (num == 1) { |
1282 ShorthandScope scope(this, CSSPropertyWebkitMarginCollapse); | 1287 ShorthandScope scope(this, CSSPropertyWebkitMarginCollapse); |
1283 if (!parseValue(webkitMarginCollapseShorthand().properties()[0], imp
ortant)) | 1288 if (!parseValue(webkitMarginCollapseShorthand().properties()[0], imp
ortant)) |
1284 return false; | 1289 return false; |
1285 CSSValue* value = m_parsedProperties.last().value(); | 1290 CSSValue* value = m_parsedProperties.last().value(); |
1286 addProperty(webkitMarginCollapseShorthand().properties()[1], value,
important); | 1291 addProperty(webkitMarginCollapseShorthand().properties()[1], value,
important); |
1287 return true; | 1292 return true; |
1288 } | 1293 } |
1289 else if (num == 2) { | 1294 else if (num == 2) { |
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3591 | 3596 |
3592 // 3- [<track-list> /]? [<line-names>? <string> [<track-size> <line-names>]?
]+ syntax. | 3597 // 3- [<track-list> /]? [<line-names>? <string> [<track-size> <line-names>]?
]+ syntax. |
3593 // The template-columns <track-list> can't be 'none'. | 3598 // The template-columns <track-list> can't be 'none'. |
3594 if (firstValueIsNone) | 3599 if (firstValueIsNone) |
3595 return false; | 3600 return false; |
3596 // It requires to rewind parsing due to previous syntax failures. | 3601 // It requires to rewind parsing due to previous syntax failures. |
3597 m_valueList->setCurrentIndex(index); | 3602 m_valueList->setCurrentIndex(index); |
3598 return parseGridTemplateRowsAndAreas(columnsValue, important); | 3603 return parseGridTemplateRowsAndAreas(columnsValue, important); |
3599 } | 3604 } |
3600 | 3605 |
| 3606 bool CSSPropertyParser::parseGridShorthand(bool important) |
| 3607 { |
| 3608 ShorthandScope scope(this, CSSPropertyGrid); |
| 3609 ASSERT(shorthandForProperty(CSSPropertyGrid).length() == 4); |
| 3610 |
| 3611 // 1- <grid-template> |
| 3612 if (parseGridTemplateShorthand(important)) { |
| 3613 // It can only be specified the explicit or the implicit grid properties
in a single grid declaration. |
| 3614 // The sub-properties not specified are set to their initial value, as n
ormal for shorthands. |
| 3615 addProperty(CSSPropertyGridAutoFlow, cssValuePool().createImplicitInitia
lValue(), important); |
| 3616 addProperty(CSSPropertyGridAutoColumns, cssValuePool().createImplicitIni
tialValue(), important); |
| 3617 addProperty(CSSPropertyGridAutoRows, cssValuePool().createImplicitInitia
lValue(), important); |
| 3618 return true; |
| 3619 } |
| 3620 |
| 3621 // Need to rewind parsing to explore the alternative syntax of this shorthan
d. |
| 3622 m_valueList->setCurrentIndex(0); |
| 3623 |
| 3624 // 2- <grid-auto-flow> [ <grid-auto-columns> [ / <grid-auto-rows> ]? ] |
| 3625 CSSValueID id = m_valueList->current()->id; |
| 3626 if (id != CSSValueRow && id != CSSValueColumn && id != CSSValueNone) |
| 3627 return false; |
| 3628 |
| 3629 RefPtrWillBeRawPtr<CSSValue> autoFlowValue = cssValuePool().createIdentifier
Value(id); |
| 3630 RefPtrWillBeRawPtr<CSSValue> autoColumnsValue = nullptr; |
| 3631 RefPtrWillBeRawPtr<CSSValue> autoRowsValue = nullptr; |
| 3632 |
| 3633 if (m_valueList->next()) { |
| 3634 autoColumnsValue = parseGridTrackSize(*m_valueList); |
| 3635 if (!autoColumnsValue) |
| 3636 return false; |
| 3637 if (m_valueList->current()) { |
| 3638 if (!isForwardSlashOperator(m_valueList->current()) || !m_valueList-
>next()) |
| 3639 return false; |
| 3640 autoRowsValue = parseGridTrackSize(*m_valueList); |
| 3641 if (!autoRowsValue) |
| 3642 return false; |
| 3643 } |
| 3644 if (m_valueList->current()) |
| 3645 return false; |
| 3646 } else { |
| 3647 // Other omitted values are set to their initial values. |
| 3648 autoColumnsValue = cssValuePool().createImplicitInitialValue(); |
| 3649 autoRowsValue = cssValuePool().createImplicitInitialValue(); |
| 3650 } |
| 3651 |
| 3652 // if <grid-auto-rows> value is omitted, it is set to the value specified fo
r grid-auto-columns. |
| 3653 if (!autoRowsValue) |
| 3654 autoRowsValue = autoColumnsValue; |
| 3655 |
| 3656 addProperty(CSSPropertyGridAutoFlow, autoFlowValue, important); |
| 3657 addProperty(CSSPropertyGridAutoColumns, autoColumnsValue, important); |
| 3658 addProperty(CSSPropertyGridAutoRows, autoRowsValue, important); |
| 3659 |
| 3660 // It can only be specified the explicit or the implicit grid properties in
a single grid declaration. |
| 3661 // The sub-properties not specified are set to their initial value, as norma
l for shorthands. |
| 3662 addProperty(CSSPropertyGridTemplateColumns, cssValuePool().createImplicitIni
tialValue(), important); |
| 3663 addProperty(CSSPropertyGridTemplateRows, cssValuePool().createImplicitInitia
lValue(), important); |
| 3664 addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createImplicitIniti
alValue(), important); |
| 3665 |
| 3666 return true; |
| 3667 } |
| 3668 |
3601 bool CSSPropertyParser::parseGridAreaShorthand(bool important) | 3669 bool CSSPropertyParser::parseGridAreaShorthand(bool important) |
3602 { | 3670 { |
3603 ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled()); | 3671 ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled()); |
3604 | 3672 |
3605 ShorthandScope scope(this, CSSPropertyGridArea); | 3673 ShorthandScope scope(this, CSSPropertyGridArea); |
3606 const StylePropertyShorthand& shorthand = gridAreaShorthand(); | 3674 const StylePropertyShorthand& shorthand = gridAreaShorthand(); |
3607 ASSERT_UNUSED(shorthand, shorthand.length() == 4); | 3675 ASSERT_UNUSED(shorthand, shorthand.length() == 4); |
3608 | 3676 |
3609 RefPtrWillBeRawPtr<CSSValue> rowStartValue = parseGridPosition(); | 3677 RefPtrWillBeRawPtr<CSSValue> rowStartValue = parseGridPosition(); |
3610 if (!rowStartValue) | 3678 if (!rowStartValue) |
(...skipping 4844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8455 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill)); | 8523 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill)); |
8456 if (!seenStroke) | 8524 if (!seenStroke) |
8457 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke)
); | 8525 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke)
); |
8458 if (!seenMarkers) | 8526 if (!seenMarkers) |
8459 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers
)); | 8527 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers
)); |
8460 | 8528 |
8461 return parsedValues.release(); | 8529 return parsedValues.release(); |
8462 } | 8530 } |
8463 | 8531 |
8464 } // namespace WebCore | 8532 } // namespace WebCore |
OLD | NEW |