| 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 |