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 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 return true; | 544 return true; |
545 break; | 545 break; |
546 case CSSPropertyVisibility: // visible | hidden | collapse | inherit | 546 case CSSPropertyVisibility: // visible | hidden | collapse | inherit |
547 if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID =
= CSSValueCollapse) | 547 if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID =
= CSSValueCollapse) |
548 return true; | 548 return true; |
549 break; | 549 break; |
550 case CSSPropertyWebkitAppearance: | 550 case CSSPropertyWebkitAppearance: |
551 if ((valueID >= CSSValueCheckbox && valueID <= CSSValueTextarea) || valu
eID == CSSValueNone) | 551 if ((valueID >= CSSValueCheckbox && valueID <= CSSValueTextarea) || valu
eID == CSSValueNone) |
552 return true; | 552 return true; |
553 break; | 553 break; |
| 554 case CSSPropertyBackfaceVisibility: |
554 case CSSPropertyWebkitBackfaceVisibility: | 555 case CSSPropertyWebkitBackfaceVisibility: |
555 if (valueID == CSSValueVisible || valueID == CSSValueHidden) | 556 if (valueID == CSSValueVisible || valueID == CSSValueHidden) |
556 return true; | 557 return true; |
557 break; | 558 break; |
558 case CSSPropertyMixBlendMode: | 559 case CSSPropertyMixBlendMode: |
559 if (RuntimeEnabledFeatures::cssCompositingEnabled() && (valueID == CSSVa
lueNormal || valueID == CSSValueMultiply || valueID == CSSValueScreen | 560 if (RuntimeEnabledFeatures::cssCompositingEnabled() && (valueID == CSSVa
lueNormal || valueID == CSSValueMultiply || valueID == CSSValueScreen |
560 || valueID == CSSValueOverlay || valueID == CSSValueDarken || valueI
D == CSSValueLighten || valueID == CSSValueColorDodge | 561 || valueID == CSSValueOverlay || valueID == CSSValueDarken || valueI
D == CSSValueLighten || valueID == CSSValueColorDodge |
561 || valueID == CSSValueColorBurn || valueID == CSSValueHardLight || v
alueID == CSSValueSoftLight || valueID == CSSValueDifference | 562 || valueID == CSSValueColorBurn || valueID == CSSValueHardLight || v
alueID == CSSValueSoftLight || valueID == CSSValueDifference |
562 || valueID == CSSValueExclusion || valueID == CSSValueHue || valueID
== CSSValueSaturation || valueID == CSSValueColor | 563 || valueID == CSSValueExclusion || valueID == CSSValueHue || valueID
== CSSValueSaturation || valueID == CSSValueColor |
563 || valueID == CSSValueLuminosity)) | 564 || valueID == CSSValueLuminosity)) |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 break; | 681 break; |
681 case CSSPropertyWebkitTextEmphasisPosition: | 682 case CSSPropertyWebkitTextEmphasisPosition: |
682 if (valueID == CSSValueOver || valueID == CSSValueUnder) | 683 if (valueID == CSSValueOver || valueID == CSSValueUnder) |
683 return true; | 684 return true; |
684 break; | 685 break; |
685 case CSSPropertyWebkitTextSecurity: | 686 case CSSPropertyWebkitTextSecurity: |
686 // disc | circle | square | none | inherit | 687 // disc | circle | square | none | inherit |
687 if (valueID == CSSValueDisc || valueID == CSSValueCircle || valueID == C
SSValueSquare || valueID == CSSValueNone) | 688 if (valueID == CSSValueDisc || valueID == CSSValueCircle || valueID == C
SSValueSquare || valueID == CSSValueNone) |
688 return true; | 689 return true; |
689 break; | 690 break; |
| 691 case CSSPropertyTransformStyle: |
690 case CSSPropertyWebkitTransformStyle: | 692 case CSSPropertyWebkitTransformStyle: |
691 if (valueID == CSSValueFlat || valueID == CSSValuePreserve3d) | 693 if (valueID == CSSValueFlat || valueID == CSSValuePreserve3d) |
692 return true; | 694 return true; |
693 break; | 695 break; |
694 case CSSPropertyWebkitUserDrag: // auto | none | element | 696 case CSSPropertyWebkitUserDrag: // auto | none | element |
695 if (valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSS
ValueElement) | 697 if (valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSS
ValueElement) |
696 return true; | 698 return true; |
697 break; | 699 break; |
698 case CSSPropertyWebkitUserModify: // read-only | read-write | 700 case CSSPropertyWebkitUserModify: // read-only | read-write |
699 if (valueID == CSSValueReadOnly || valueID == CSSValueReadWrite || value
ID == CSSValueReadWritePlaintextOnly) | 701 if (valueID == CSSValueReadOnly || valueID == CSSValueReadWrite || value
ID == CSSValueReadWritePlaintextOnly) |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 case CSSPropertyTextOverflow: | 778 case CSSPropertyTextOverflow: |
777 case CSSPropertyTextOverlineMode: | 779 case CSSPropertyTextOverlineMode: |
778 case CSSPropertyTextOverlineStyle: | 780 case CSSPropertyTextOverlineStyle: |
779 case CSSPropertyTextRendering: | 781 case CSSPropertyTextRendering: |
780 case CSSPropertyTextTransform: | 782 case CSSPropertyTextTransform: |
781 case CSSPropertyTextUnderlineMode: | 783 case CSSPropertyTextUnderlineMode: |
782 case CSSPropertyTextUnderlineStyle: | 784 case CSSPropertyTextUnderlineStyle: |
783 case CSSPropertyTouchActionDelay: | 785 case CSSPropertyTouchActionDelay: |
784 case CSSPropertyVisibility: | 786 case CSSPropertyVisibility: |
785 case CSSPropertyWebkitAppearance: | 787 case CSSPropertyWebkitAppearance: |
| 788 case CSSPropertyBackfaceVisibility: |
786 case CSSPropertyWebkitBackfaceVisibility: | 789 case CSSPropertyWebkitBackfaceVisibility: |
787 case CSSPropertyWebkitBorderAfterStyle: | 790 case CSSPropertyWebkitBorderAfterStyle: |
788 case CSSPropertyWebkitBorderBeforeStyle: | 791 case CSSPropertyWebkitBorderBeforeStyle: |
789 case CSSPropertyWebkitBorderEndStyle: | 792 case CSSPropertyWebkitBorderEndStyle: |
790 case CSSPropertyWebkitBorderFit: | 793 case CSSPropertyWebkitBorderFit: |
791 case CSSPropertyWebkitBorderStartStyle: | 794 case CSSPropertyWebkitBorderStartStyle: |
792 case CSSPropertyWebkitBoxAlign: | 795 case CSSPropertyWebkitBoxAlign: |
793 case CSSPropertyWebkitBoxDecorationBreak: | 796 case CSSPropertyWebkitBoxDecorationBreak: |
794 case CSSPropertyWebkitBoxDirection: | 797 case CSSPropertyWebkitBoxDirection: |
795 case CSSPropertyWebkitBoxLines: | 798 case CSSPropertyWebkitBoxLines: |
(...skipping 18 matching lines...) Expand all Loading... |
814 case CSSPropertyWebkitMarginBottomCollapse: | 817 case CSSPropertyWebkitMarginBottomCollapse: |
815 case CSSPropertyWebkitMarginTopCollapse: | 818 case CSSPropertyWebkitMarginTopCollapse: |
816 case CSSPropertyInternalMarqueeDirection: | 819 case CSSPropertyInternalMarqueeDirection: |
817 case CSSPropertyInternalMarqueeStyle: | 820 case CSSPropertyInternalMarqueeStyle: |
818 case CSSPropertyWebkitPrintColorAdjust: | 821 case CSSPropertyWebkitPrintColorAdjust: |
819 case CSSPropertyWebkitRtlOrdering: | 822 case CSSPropertyWebkitRtlOrdering: |
820 case CSSPropertyWebkitRubyPosition: | 823 case CSSPropertyWebkitRubyPosition: |
821 case CSSPropertyWebkitTextCombine: | 824 case CSSPropertyWebkitTextCombine: |
822 case CSSPropertyWebkitTextEmphasisPosition: | 825 case CSSPropertyWebkitTextEmphasisPosition: |
823 case CSSPropertyWebkitTextSecurity: | 826 case CSSPropertyWebkitTextSecurity: |
| 827 case CSSPropertyTransformStyle: |
824 case CSSPropertyWebkitTransformStyle: | 828 case CSSPropertyWebkitTransformStyle: |
825 case CSSPropertyWebkitUserDrag: | 829 case CSSPropertyWebkitUserDrag: |
826 case CSSPropertyWebkitUserModify: | 830 case CSSPropertyWebkitUserModify: |
827 case CSSPropertyWebkitUserSelect: | 831 case CSSPropertyWebkitUserSelect: |
828 case CSSPropertyWebkitWrapFlow: | 832 case CSSPropertyWebkitWrapFlow: |
829 case CSSPropertyWebkitWrapThrough: | 833 case CSSPropertyWebkitWrapThrough: |
830 case CSSPropertyWebkitWritingMode: | 834 case CSSPropertyWebkitWritingMode: |
831 case CSSPropertyWhiteSpace: | 835 case CSSPropertyWhiteSpace: |
832 case CSSPropertyWordBreak: | 836 case CSSPropertyWordBreak: |
833 case CSSPropertyWordWrap: | 837 case CSSPropertyWordWrap: |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 if (pos < end) { | 964 if (pos < end) { |
961 if (isCSSSpace(*pos)) | 965 if (isCSSSpace(*pos)) |
962 return nullptr; | 966 return nullptr; |
963 } | 967 } |
964 } | 968 } |
965 return transformList.release(); | 969 return transformList.release(); |
966 } | 970 } |
967 | 971 |
968 static bool parseTranslateTransform(MutableStylePropertySet* properties, CSSProp
ertyID propertyID, const String& string, bool important) | 972 static bool parseTranslateTransform(MutableStylePropertySet* properties, CSSProp
ertyID propertyID, const String& string, bool important) |
969 { | 973 { |
970 if (propertyID != CSSPropertyWebkitTransform) | 974 if (propertyID != CSSPropertyTransform && propertyID != CSSPropertyWebkitTra
nsform) |
971 return false; | 975 return false; |
972 if (string.isEmpty()) | 976 if (string.isEmpty()) |
973 return false; | 977 return false; |
974 RefPtrWillBeRawPtr<CSSValueList> transformList = nullptr; | 978 RefPtrWillBeRawPtr<CSSValueList> transformList = nullptr; |
975 if (string.is8Bit()) { | 979 if (string.is8Bit()) { |
976 const LChar* pos = string.characters8(); | 980 const LChar* pos = string.characters8(); |
977 const LChar* end = pos + string.length(); | 981 const LChar* end = pos + string.length(); |
978 transformList = parseTranslateTransformList(pos, end); | 982 transformList = parseTranslateTransformList(pos, end); |
979 if (!transformList) | 983 if (!transformList) |
980 return false; | 984 return false; |
981 } else { | 985 } else { |
982 const UChar* pos = string.characters16(); | 986 const UChar* pos = string.characters16(); |
983 const UChar* end = pos + string.length(); | 987 const UChar* end = pos + string.length(); |
984 transformList = parseTranslateTransformList(pos, end); | 988 transformList = parseTranslateTransformList(pos, end); |
985 if (!transformList) | 989 if (!transformList) |
986 return false; | 990 return false; |
987 } | 991 } |
988 properties->addParsedProperty(CSSProperty(CSSPropertyWebkitTransform, transf
ormList.release(), important)); | 992 properties->addParsedProperty(CSSProperty(propertyID, transformList.release(
), important)); |
989 return true; | 993 return true; |
990 } | 994 } |
991 | 995 |
992 PassRefPtrWillBeRawPtr<CSSValueList> BisonCSSParser::parseFontFaceValue(const At
omicString& string) | 996 PassRefPtrWillBeRawPtr<CSSValueList> BisonCSSParser::parseFontFaceValue(const At
omicString& string) |
993 { | 997 { |
994 if (string.isEmpty()) | 998 if (string.isEmpty()) |
995 return nullptr; | 999 return nullptr; |
996 RefPtrWillBeRawPtr<MutableStylePropertySet> dummyStyle = MutableStylePropert
ySet::create(); | 1000 RefPtrWillBeRawPtr<MutableStylePropertySet> dummyStyle = MutableStylePropert
ySet::create(); |
997 if (!parseValue(dummyStyle.get(), CSSPropertyFontFamily, string, false, HTML
QuirksMode, 0)) | 1001 if (!parseValue(dummyStyle.get(), CSSPropertyFontFamily, string, false, HTML
QuirksMode, 0)) |
998 return nullptr; | 1002 return nullptr; |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1394 bool unknown() const { return m_type == CSSTransformValue::UnknownTransformO
peration; } | 1398 bool unknown() const { return m_type == CSSTransformValue::UnknownTransformO
peration; } |
1395 bool hasCorrectArgCount(unsigned argCount) { return m_argCount == argCount |
| (m_allowSingleArgument && argCount == 1); } | 1399 bool hasCorrectArgCount(unsigned argCount) { return m_argCount == argCount |
| (m_allowSingleArgument && argCount == 1); } |
1396 | 1400 |
1397 private: | 1401 private: |
1398 CSSTransformValue::TransformOperationType m_type; | 1402 CSSTransformValue::TransformOperationType m_type; |
1399 unsigned m_argCount; | 1403 unsigned m_argCount; |
1400 bool m_allowSingleArgument; | 1404 bool m_allowSingleArgument; |
1401 CSSPropertyParser::Units m_unit; | 1405 CSSPropertyParser::Units m_unit; |
1402 }; | 1406 }; |
1403 | 1407 |
1404 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform() | 1408 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform(CSSProper
tyID propId) |
1405 { | 1409 { |
1406 if (!m_valueList) | 1410 if (!m_valueList) |
1407 return nullptr; | 1411 return nullptr; |
1408 | 1412 |
1409 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1413 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; |
1410 for (CSSParserValue* value = m_valueList->current(); value; value = m_valueL
ist->next()) { | 1414 for (CSSParserValue* value = m_valueList->current(); value; value = m_valueL
ist->next()) { |
1411 RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = parseTransformValue(
value); | 1415 RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = parseTransformValue(
propId, value); |
1412 if (!parsedTransformValue) | 1416 if (!parsedTransformValue) |
1413 return nullptr; | 1417 return nullptr; |
1414 | 1418 |
1415 list->append(parsedTransformValue.release()); | 1419 list->append(parsedTransformValue.release()); |
1416 } | 1420 } |
1417 | 1421 |
1418 return list.release(); | 1422 return list.release(); |
1419 } | 1423 } |
1420 | 1424 |
1421 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSParse
rValue *value) | 1425 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSPrope
rtyID propId, CSSParserValue *value) |
1422 { | 1426 { |
1423 if (value->unit != CSSParserValue::Function || !value->function) | 1427 if (value->unit != CSSParserValue::Function || !value->function) |
1424 return nullptr; | 1428 return nullptr; |
1425 | 1429 |
1426 // Every primitive requires at least one argument. | 1430 // Every primitive requires at least one argument. |
1427 CSSParserValueList* args = value->function->args.get(); | 1431 CSSParserValueList* args = value->function->args.get(); |
1428 if (!args) | 1432 if (!args) |
1429 return nullptr; | 1433 return nullptr; |
1430 | 1434 |
1431 // See if the specified primitive is one we understand. | 1435 // See if the specified primitive is one we understand. |
(...skipping 23 matching lines...) Expand all Loading... |
1455 } else if (info.type() == CSSTransformValue::Translate3DTransformOperati
on && argNumber == 2) { | 1459 } else if (info.type() == CSSTransformValue::Translate3DTransformOperati
on && argNumber == 2) { |
1456 // 3rd param of translate3d() cannot be a percentage | 1460 // 3rd param of translate3d() cannot be a percentage |
1457 if (!validUnit(a, FLength, HTMLStandardMode)) | 1461 if (!validUnit(a, FLength, HTMLStandardMode)) |
1458 return nullptr; | 1462 return nullptr; |
1459 } else if (info.type() == CSSTransformValue::TranslateZTransformOperatio
n && !argNumber) { | 1463 } else if (info.type() == CSSTransformValue::TranslateZTransformOperatio
n && !argNumber) { |
1460 // 1st param of translateZ() cannot be a percentage | 1464 // 1st param of translateZ() cannot be a percentage |
1461 if (!validUnit(a, FLength, HTMLStandardMode)) | 1465 if (!validUnit(a, FLength, HTMLStandardMode)) |
1462 return nullptr; | 1466 return nullptr; |
1463 } else if (info.type() == CSSTransformValue::PerspectiveTransformOperati
on && !argNumber) { | 1467 } else if (info.type() == CSSTransformValue::PerspectiveTransformOperati
on && !argNumber) { |
1464 // 1st param of perspective() must be a non-negative number (depreca
ted) or length. | 1468 // 1st param of perspective() must be a non-negative number (depreca
ted) or length. |
1465 if (!validUnit(a, FNumber | FLength | FNonNeg, HTMLStandardMode)) | 1469 if ((propId == CSSPropertyWebkitTransform && !validUnit(a, FNumber |
FLength | FNonNeg, HTMLStandardMode)) |
| 1470 || (propId == CSSPropertyTransform && !validUnit(a, FLength | FN
onNeg, HTMLStandardMode))) |
1466 return nullptr; | 1471 return nullptr; |
1467 } else if (!validUnit(a, unit, HTMLStandardMode)) { | 1472 } else if (!validUnit(a, unit, HTMLStandardMode)) { |
1468 return nullptr; | 1473 return nullptr; |
1469 } | 1474 } |
1470 | 1475 |
1471 // Add the value to the current transform operation. | 1476 // Add the value to the current transform operation. |
1472 transformValue->append(createPrimitiveNumericValue(a)); | 1477 transformValue->append(createPrimitiveNumericValue(a)); |
1473 | 1478 |
1474 a = args->next(); | 1479 a = args->next(); |
1475 if (!a) | 1480 if (!a) |
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2205 rule->setProperties(createStylePropertySet()); | 2210 rule->setProperties(createStylePropertySet()); |
2206 clearProperties(); | 2211 clearProperties(); |
2207 | 2212 |
2208 StyleRuleViewport* result = rule.get(); | 2213 StyleRuleViewport* result = rule.get(); |
2209 m_parsedRules.append(rule.release()); | 2214 m_parsedRules.append(rule.release()); |
2210 | 2215 |
2211 return result; | 2216 return result; |
2212 } | 2217 } |
2213 | 2218 |
2214 } | 2219 } |
OLD | NEW |