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 1179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1190 return true; | 1190 return true; |
1191 } | 1191 } |
1192 return false; | 1192 return false; |
1193 } | 1193 } |
1194 | 1194 |
1195 case CSSPropertyJustifySelf: | 1195 case CSSPropertyJustifySelf: |
1196 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) | 1196 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
1197 return false; | 1197 return false; |
1198 | 1198 |
1199 return parseItemPositionOverflowPosition(propId, important); | 1199 return parseItemPositionOverflowPosition(propId, important); |
| 1200 case CSSPropertyGridAutoFlow: |
| 1201 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
| 1202 return false; |
| 1203 parsedValue = parseGridAutoFlow(*m_valueList); |
| 1204 break; |
1200 case CSSPropertyGridAutoColumns: | 1205 case CSSPropertyGridAutoColumns: |
1201 case CSSPropertyGridAutoRows: | 1206 case CSSPropertyGridAutoRows: |
1202 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) | 1207 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
1203 return false; | 1208 return false; |
1204 parsedValue = parseGridTrackSize(*m_valueList); | 1209 parsedValue = parseGridTrackSize(*m_valueList); |
1205 break; | 1210 break; |
1206 | 1211 |
1207 case CSSPropertyGridTemplateColumns: | 1212 case CSSPropertyGridTemplateColumns: |
1208 case CSSPropertyGridTemplateRows: | 1213 case CSSPropertyGridTemplateRows: |
1209 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) | 1214 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 case CSSPropertyWebkitColumnBreakBefore: | 1568 case CSSPropertyWebkitColumnBreakBefore: |
1564 case CSSPropertyWebkitColumnBreakInside: | 1569 case CSSPropertyWebkitColumnBreakInside: |
1565 case CSSPropertyColumnFill: | 1570 case CSSPropertyColumnFill: |
1566 case CSSPropertyWebkitColumnRuleStyle: | 1571 case CSSPropertyWebkitColumnRuleStyle: |
1567 case CSSPropertyAlignContent: | 1572 case CSSPropertyAlignContent: |
1568 case CSSPropertyFlexDirection: | 1573 case CSSPropertyFlexDirection: |
1569 case CSSPropertyFlexWrap: | 1574 case CSSPropertyFlexWrap: |
1570 case CSSPropertyJustifyContent: | 1575 case CSSPropertyJustifyContent: |
1571 case CSSPropertyFontKerning: | 1576 case CSSPropertyFontKerning: |
1572 case CSSPropertyWebkitFontSmoothing: | 1577 case CSSPropertyWebkitFontSmoothing: |
1573 case CSSPropertyGridAutoFlow: | |
1574 case CSSPropertyWebkitLineBreak: | 1578 case CSSPropertyWebkitLineBreak: |
1575 case CSSPropertyWebkitMarginAfterCollapse: | 1579 case CSSPropertyWebkitMarginAfterCollapse: |
1576 case CSSPropertyWebkitMarginBeforeCollapse: | 1580 case CSSPropertyWebkitMarginBeforeCollapse: |
1577 case CSSPropertyWebkitMarginBottomCollapse: | 1581 case CSSPropertyWebkitMarginBottomCollapse: |
1578 case CSSPropertyWebkitMarginTopCollapse: | 1582 case CSSPropertyWebkitMarginTopCollapse: |
1579 case CSSPropertyInternalMarqueeDirection: | 1583 case CSSPropertyInternalMarqueeDirection: |
1580 case CSSPropertyInternalMarqueeStyle: | 1584 case CSSPropertyInternalMarqueeStyle: |
1581 case CSSPropertyWebkitPrintColorAdjust: | 1585 case CSSPropertyWebkitPrintColorAdjust: |
1582 case CSSPropertyWebkitRtlOrdering: | 1586 case CSSPropertyWebkitRtlOrdering: |
1583 case CSSPropertyWebkitRubyPosition: | 1587 case CSSPropertyWebkitRubyPosition: |
(...skipping 1962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3546 addProperty(CSSPropertyGridAutoFlow, cssValuePool().createImplicitInitia
lValue(), important); | 3550 addProperty(CSSPropertyGridAutoFlow, cssValuePool().createImplicitInitia
lValue(), important); |
3547 addProperty(CSSPropertyGridAutoColumns, cssValuePool().createImplicitIni
tialValue(), important); | 3551 addProperty(CSSPropertyGridAutoColumns, cssValuePool().createImplicitIni
tialValue(), important); |
3548 addProperty(CSSPropertyGridAutoRows, cssValuePool().createImplicitInitia
lValue(), important); | 3552 addProperty(CSSPropertyGridAutoRows, cssValuePool().createImplicitInitia
lValue(), important); |
3549 return true; | 3553 return true; |
3550 } | 3554 } |
3551 | 3555 |
3552 // Need to rewind parsing to explore the alternative syntax of this shorthan
d. | 3556 // Need to rewind parsing to explore the alternative syntax of this shorthan
d. |
3553 m_valueList->setCurrentIndex(0); | 3557 m_valueList->setCurrentIndex(0); |
3554 | 3558 |
3555 // 2- <grid-auto-flow> [ <grid-auto-columns> [ / <grid-auto-rows> ]? ] | 3559 // 2- <grid-auto-flow> [ <grid-auto-columns> [ / <grid-auto-rows> ]? ] |
3556 CSSValueID id = m_valueList->current()->id; | 3560 if (!parseValue(CSSPropertyGridAutoFlow, important)) |
3557 if (id != CSSValueRow && id != CSSValueColumn && id != CSSValueNone) | |
3558 return false; | 3561 return false; |
3559 | 3562 |
3560 RefPtrWillBeRawPtr<CSSValue> autoFlowValue = cssValuePool().createIdentifier
Value(id); | |
3561 RefPtrWillBeRawPtr<CSSValue> autoColumnsValue = nullptr; | 3563 RefPtrWillBeRawPtr<CSSValue> autoColumnsValue = nullptr; |
3562 RefPtrWillBeRawPtr<CSSValue> autoRowsValue = nullptr; | 3564 RefPtrWillBeRawPtr<CSSValue> autoRowsValue = nullptr; |
3563 | 3565 |
3564 if (m_valueList->next()) { | 3566 if (m_valueList->current()) { |
3565 autoColumnsValue = parseGridTrackSize(*m_valueList); | 3567 autoColumnsValue = parseGridTrackSize(*m_valueList); |
3566 if (!autoColumnsValue) | 3568 if (!autoColumnsValue) |
3567 return false; | 3569 return false; |
3568 if (m_valueList->current()) { | 3570 if (m_valueList->current()) { |
3569 if (!isForwardSlashOperator(m_valueList->current()) || !m_valueList-
>next()) | 3571 if (!isForwardSlashOperator(m_valueList->current()) || !m_valueList-
>next()) |
3570 return false; | 3572 return false; |
3571 autoRowsValue = parseGridTrackSize(*m_valueList); | 3573 autoRowsValue = parseGridTrackSize(*m_valueList); |
3572 if (!autoRowsValue) | 3574 if (!autoRowsValue) |
3573 return false; | 3575 return false; |
3574 } | 3576 } |
3575 if (m_valueList->current()) | 3577 if (m_valueList->current()) |
3576 return false; | 3578 return false; |
3577 } else { | 3579 } else { |
3578 // Other omitted values are set to their initial values. | 3580 // Other omitted values are set to their initial values. |
3579 autoColumnsValue = cssValuePool().createImplicitInitialValue(); | 3581 autoColumnsValue = cssValuePool().createImplicitInitialValue(); |
3580 autoRowsValue = cssValuePool().createImplicitInitialValue(); | 3582 autoRowsValue = cssValuePool().createImplicitInitialValue(); |
3581 } | 3583 } |
3582 | 3584 |
3583 // if <grid-auto-rows> value is omitted, it is set to the value specified fo
r grid-auto-columns. | 3585 // if <grid-auto-rows> value is omitted, it is set to the value specified fo
r grid-auto-columns. |
3584 if (!autoRowsValue) | 3586 if (!autoRowsValue) |
3585 autoRowsValue = autoColumnsValue; | 3587 autoRowsValue = autoColumnsValue; |
3586 | 3588 |
3587 addProperty(CSSPropertyGridAutoFlow, autoFlowValue, important); | |
3588 addProperty(CSSPropertyGridAutoColumns, autoColumnsValue, important); | 3589 addProperty(CSSPropertyGridAutoColumns, autoColumnsValue, important); |
3589 addProperty(CSSPropertyGridAutoRows, autoRowsValue, important); | 3590 addProperty(CSSPropertyGridAutoRows, autoRowsValue, important); |
3590 | 3591 |
3591 // It can only be specified the explicit or the implicit grid properties in
a single grid declaration. | 3592 // It can only be specified the explicit or the implicit grid properties in
a single grid declaration. |
3592 // The sub-properties not specified are set to their initial value, as norma
l for shorthands. | 3593 // The sub-properties not specified are set to their initial value, as norma
l for shorthands. |
3593 addProperty(CSSPropertyGridTemplateColumns, cssValuePool().createImplicitIni
tialValue(), important); | 3594 addProperty(CSSPropertyGridTemplateColumns, cssValuePool().createImplicitIni
tialValue(), important); |
3594 addProperty(CSSPropertyGridTemplateRows, cssValuePool().createImplicitInitia
lValue(), important); | 3595 addProperty(CSSPropertyGridTemplateRows, cssValuePool().createImplicitInitia
lValue(), important); |
3595 addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createImplicitIniti
alValue(), important); | 3596 addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createImplicitIniti
alValue(), important); |
3596 | 3597 |
3597 return true; | 3598 return true; |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3897 return nullptr; | 3898 return nullptr; |
3898 ++rowCount; | 3899 ++rowCount; |
3899 } | 3900 } |
3900 | 3901 |
3901 if (!rowCount || !columnCount) | 3902 if (!rowCount || !columnCount) |
3902 return nullptr; | 3903 return nullptr; |
3903 | 3904 |
3904 return CSSGridTemplateAreasValue::create(gridAreaMap, rowCount, columnCount)
; | 3905 return CSSGridTemplateAreasValue::create(gridAreaMap, rowCount, columnCount)
; |
3905 } | 3906 } |
3906 | 3907 |
| 3908 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseGridAutoFlow(CSSParserV
alueList& list) |
| 3909 { |
| 3910 // [ row | column ] && dense? | stack && [ row | column ]? |
| 3911 ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled()); |
| 3912 |
| 3913 CSSParserValue* value = list.current(); |
| 3914 if (!value) |
| 3915 return nullptr; |
| 3916 |
| 3917 RefPtrWillBeRawPtr<CSSValueList> parsedValues = CSSValueList::createSpaceSep
arated(); |
| 3918 |
| 3919 // First parameter. |
| 3920 CSSValueID firstId = value->id; |
| 3921 if (firstId != CSSValueRow && firstId != CSSValueColumn && firstId != CSSVal
ueDense && firstId != CSSValueStack) |
| 3922 return nullptr; |
| 3923 parsedValues->append(cssValuePool().createIdentifierValue(firstId)); |
| 3924 |
| 3925 // Second parameter, if any. |
| 3926 value = list.next(); |
| 3927 if (!value && firstId == CSSValueDense) |
| 3928 return nullptr; |
| 3929 |
| 3930 if (value) { |
| 3931 switch (firstId) { |
| 3932 case CSSValueRow: |
| 3933 case CSSValueColumn: |
| 3934 if (value->id != CSSValueDense && value->id != CSSValueStack) |
| 3935 return parsedValues; |
| 3936 break; |
| 3937 case CSSValueDense: |
| 3938 case CSSValueStack: |
| 3939 if (value->id != CSSValueRow && value->id != CSSValueColumn) |
| 3940 return parsedValues; |
| 3941 break; |
| 3942 default: |
| 3943 return parsedValues; |
| 3944 } |
| 3945 parsedValues->append(cssValuePool().createIdentifierValue(value->id)); |
| 3946 list.next(); |
| 3947 } |
| 3948 |
| 3949 return parsedValues; |
| 3950 } |
| 3951 |
3907 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseCounterContent(CSSParse
rValueList* args, bool counters) | 3952 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseCounterContent(CSSParse
rValueList* args, bool counters) |
3908 { | 3953 { |
3909 unsigned numArgs = args->size(); | 3954 unsigned numArgs = args->size(); |
3910 if (counters && numArgs != 3 && numArgs != 5) | 3955 if (counters && numArgs != 3 && numArgs != 5) |
3911 return nullptr; | 3956 return nullptr; |
3912 if (!counters && numArgs != 1 && numArgs != 3) | 3957 if (!counters && numArgs != 1 && numArgs != 3) |
3913 return nullptr; | 3958 return nullptr; |
3914 | 3959 |
3915 CSSParserValue* i = args->current(); | 3960 CSSParserValue* i = args->current(); |
3916 if (i->unit != CSSPrimitiveValue::CSS_IDENT) | 3961 if (i->unit != CSSPrimitiveValue::CSS_IDENT) |
(...skipping 4514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8431 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill)); | 8476 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill)); |
8432 if (!seenStroke) | 8477 if (!seenStroke) |
8433 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke)
); | 8478 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke)
); |
8434 if (!seenMarkers) | 8479 if (!seenMarkers) |
8435 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers
)); | 8480 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers
)); |
8436 | 8481 |
8437 return parsedValues.release(); | 8482 return parsedValues.release(); |
8438 } | 8483 } |
8439 | 8484 |
8440 } // namespace WebCore | 8485 } // namespace WebCore |
OLD | NEW |