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 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 return true; | 428 return true; |
429 | 429 |
430 bool validPrimitive = false; | 430 bool validPrimitive = false; |
431 Units unitless = FUnknown; | 431 Units unitless = FUnknown; |
432 | 432 |
433 switch (propId) { | 433 switch (propId) { |
434 case CSSPropertyContent: // [ <string> | <uri> | <counter> | at
tr(X) | open-quote | | 434 case CSSPropertyContent: // [ <string> | <uri> | <counter> | at
tr(X) | open-quote | |
435 // close-quote | no-open-quote | no-close-quote ]+ | inherit | 435 // close-quote | no-open-quote | no-close-quote ]+ | inherit |
436 parsedValue = parseContent(); | 436 parsedValue = parseContent(); |
437 break; | 437 break; |
438 case CSSPropertyClip: // <shape> | auto | inherit | |
439 if (id == CSSValueAuto) | |
440 validPrimitive = true; | |
441 else if (value->m_unit == CSSParserValue::Function) | |
442 parsedValue = parseClipShape(); | |
443 break; | |
444 | 438 |
445 /* Start of supported CSS properties with validation. This is needed for par
seShorthand to work | 439 /* Start of supported CSS properties with validation. This is needed for par
seShorthand to work |
446 * correctly and allows optimization in blink::applyRule(..) | 440 * correctly and allows optimization in blink::applyRule(..) |
447 */ | 441 */ |
448 | 442 |
449 case CSSPropertyTextAlign: | 443 case CSSPropertyTextAlign: |
450 // left | right | center | justify | -webkit-left | -webkit-right | -web
kit-center | -webkit-match-parent | 444 // left | right | center | justify | -webkit-left | -webkit-right | -web
kit-center | -webkit-match-parent |
451 // | start | end | <string> | inherit | -webkit-auto (converted to start
) | 445 // | start | end | <string> | inherit | -webkit-auto (converted to start
) |
452 // FIXME: <string> not supported right now | 446 // FIXME: <string> not supported right now |
453 if ((id >= CSSValueWebkitAuto && id <= CSSValueWebkitMatchParent) || id
== CSSValueStart || id == CSSValueEnd) { | 447 if ((id >= CSSValueWebkitAuto && id <= CSSValueWebkitMatchParent) || id
== CSSValueStart || id == CSSValueEnd) { |
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 case CSSPropertyLineHeight: | 1338 case CSSPropertyLineHeight: |
1345 case CSSPropertyRotate: | 1339 case CSSPropertyRotate: |
1346 case CSSPropertyFont: | 1340 case CSSPropertyFont: |
1347 case CSSPropertyWebkitBorderHorizontalSpacing: | 1341 case CSSPropertyWebkitBorderHorizontalSpacing: |
1348 case CSSPropertyWebkitBorderVerticalSpacing: | 1342 case CSSPropertyWebkitBorderVerticalSpacing: |
1349 case CSSPropertyBorderSpacing: | 1343 case CSSPropertyBorderSpacing: |
1350 case CSSPropertyCounterIncrement: | 1344 case CSSPropertyCounterIncrement: |
1351 case CSSPropertyCounterReset: | 1345 case CSSPropertyCounterReset: |
1352 case CSSPropertySize: | 1346 case CSSPropertySize: |
1353 case CSSPropertyTextIndent: | 1347 case CSSPropertyTextIndent: |
| 1348 case CSSPropertyClip: |
1354 validPrimitive = false; | 1349 validPrimitive = false; |
1355 break; | 1350 break; |
1356 | 1351 |
1357 case CSSPropertyScrollSnapPointsX: | 1352 case CSSPropertyScrollSnapPointsX: |
1358 case CSSPropertyScrollSnapPointsY: | 1353 case CSSPropertyScrollSnapPointsY: |
1359 parsedValue = parseScrollSnapPoints(); | 1354 parsedValue = parseScrollSnapPoints(); |
1360 break; | 1355 break; |
1361 case CSSPropertyScrollSnapCoordinate: | 1356 case CSSPropertyScrollSnapCoordinate: |
1362 parsedValue = parseScrollSnapCoordinate(); | 1357 parsedValue = parseScrollSnapCoordinate(); |
1363 break; | 1358 break; |
(...skipping 2354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3718 listStyleID = i->id; | 3713 listStyleID = i->id; |
3719 else | 3714 else |
3720 return nullptr; | 3715 return nullptr; |
3721 | 3716 |
3722 listStyle = cssValuePool().createIdentifierValue(listStyleID); | 3717 listStyle = cssValuePool().createIdentifierValue(listStyleID); |
3723 } | 3718 } |
3724 | 3719 |
3725 return CSSCounterValue::create(identifier.release(), listStyle.release(), se
parator.release()); | 3720 return CSSCounterValue::create(identifier.release(), listStyle.release(), se
parator.release()); |
3726 } | 3721 } |
3727 | 3722 |
3728 PassRefPtrWillBeRawPtr<CSSQuadValue> CSSPropertyParser::parseClipShape() | |
3729 { | |
3730 CSSParserValue* value = m_valueList->current(); | |
3731 CSSParserValueList* args = value->function->args.get(); | |
3732 | |
3733 if (value->function->id != CSSValueRect || !args) | |
3734 return nullptr; | |
3735 | |
3736 // rect(t, r, b, l) || rect(t r b l) | |
3737 if (args->size() != 4 && args->size() != 7) | |
3738 return nullptr; | |
3739 int i = 0; | |
3740 CSSParserValue* a = args->current(); | |
3741 | |
3742 RefPtrWillBeRawPtr<CSSPrimitiveValue> top = nullptr; | |
3743 RefPtrWillBeRawPtr<CSSPrimitiveValue> right = nullptr; | |
3744 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = nullptr; | |
3745 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = nullptr; | |
3746 while (a) { | |
3747 if (a->id != CSSValueAuto && !validUnit(a, FLength | FUnitlessQuirk)) | |
3748 return nullptr; | |
3749 RefPtrWillBeRawPtr<CSSPrimitiveValue> length = a->id == CSSValueAuto ? | |
3750 cssValuePool().createIdentifierValue(CSSValueAuto) : | |
3751 createPrimitiveNumericValue(a); | |
3752 if (i == 0) | |
3753 top = length; | |
3754 else if (i == 1) | |
3755 right = length; | |
3756 else if (i == 2) | |
3757 bottom = length; | |
3758 else | |
3759 left = length; | |
3760 a = args->next(); | |
3761 if (a && args->size() == 7) { | |
3762 if (!consumeComma(args)) | |
3763 return nullptr; | |
3764 a = args->current(); | |
3765 } | |
3766 i++; | |
3767 } | |
3768 m_valueList->next(); | |
3769 return CSSQuadValue::create(top.release(), right.release(), bottom.release()
, left.release(), CSSQuadValue::SerializeAsRect); | |
3770 } | |
3771 | |
3772 static void completeBorderRadii(RefPtrWillBeRawPtr<CSSPrimitiveValue> radii[4]) | 3723 static void completeBorderRadii(RefPtrWillBeRawPtr<CSSPrimitiveValue> radii[4]) |
3773 { | 3724 { |
3774 if (radii[3]) | 3725 if (radii[3]) |
3775 return; | 3726 return; |
3776 if (!radii[2]) { | 3727 if (!radii[2]) { |
3777 if (!radii[1]) | 3728 if (!radii[1]) |
3778 radii[1] = radii[0]; | 3729 radii[1] = radii[0]; |
3779 radii[2] = radii[0]; | 3730 radii[2] = radii[0]; |
3780 } | 3731 } |
3781 radii[3] = radii[1]; | 3732 radii[3] = radii[1]; |
(...skipping 3167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6949 } | 6900 } |
6950 } | 6901 } |
6951 | 6902 |
6952 if (!list->length()) | 6903 if (!list->length()) |
6953 return nullptr; | 6904 return nullptr; |
6954 | 6905 |
6955 return list.release(); | 6906 return list.release(); |
6956 } | 6907 } |
6957 | 6908 |
6958 } // namespace blink | 6909 } // namespace blink |
OLD | NEW |