Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1076)

Side by Side Diff: Source/core/css/CSSParser.cpp

Issue 15797004: Cleanup WebKit prefixed names for classes in css directory. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 24 matching lines...) Expand all
35 #include "core/css/CSSCanvasValue.h" 35 #include "core/css/CSSCanvasValue.h"
36 #include "core/css/CSSCrossfadeValue.h" 36 #include "core/css/CSSCrossfadeValue.h"
37 #include "core/css/CSSCursorImageValue.h" 37 #include "core/css/CSSCursorImageValue.h"
38 #include "core/css/CSSFontFaceSrcValue.h" 38 #include "core/css/CSSFontFaceSrcValue.h"
39 #include "core/css/CSSGradientValue.h" 39 #include "core/css/CSSGradientValue.h"
40 #include "core/css/CSSImageSetValue.h" 40 #include "core/css/CSSImageSetValue.h"
41 #include "core/css/CSSImageValue.h" 41 #include "core/css/CSSImageValue.h"
42 #include "core/css/CSSInheritedValue.h" 42 #include "core/css/CSSInheritedValue.h"
43 #include "core/css/CSSInitialValue.h" 43 #include "core/css/CSSInitialValue.h"
44 #include "core/css/CSSLineBoxContainValue.h" 44 #include "core/css/CSSLineBoxContainValue.h"
45 #include "core/css/CSSMixFunctionValue.h"
45 #include "core/css/CSSPrimitiveValue.h" 46 #include "core/css/CSSPrimitiveValue.h"
46 #include "core/css/CSSPropertySourceData.h" 47 #include "core/css/CSSPropertySourceData.h"
47 #include "core/css/CSSReflectValue.h" 48 #include "core/css/CSSReflectValue.h"
49 #include "core/css/CSSSVGDocumentValue.h"
48 #include "core/css/CSSSelector.h" 50 #include "core/css/CSSSelector.h"
51 #include "core/css/CSSShaderValue.h"
49 #include "core/css/CSSStyleSheet.h" 52 #include "core/css/CSSStyleSheet.h"
50 #include "core/css/CSSTimingFunctionValue.h" 53 #include "core/css/CSSTimingFunctionValue.h"
54 #include "core/css/CSSTransformValue.h"
51 #include "core/css/CSSUnicodeRangeValue.h" 55 #include "core/css/CSSUnicodeRangeValue.h"
52 #include "core/css/CSSValueList.h" 56 #include "core/css/CSSValueList.h"
53 #include "core/css/CSSValuePool.h" 57 #include "core/css/CSSValuePool.h"
54 #include "core/css/CSSVariableValue.h" 58 #include "core/css/CSSVariableValue.h"
55 #include "core/css/Counter.h" 59 #include "core/css/Counter.h"
56 #include "core/css/FontFeatureValue.h" 60 #include "core/css/FontFeatureValue.h"
57 #include "core/css/MediaList.h" 61 #include "core/css/MediaList.h"
58 #include "core/css/MediaQueryExp.h" 62 #include "core/css/MediaQueryExp.h"
59 #include "core/css/Pair.h" 63 #include "core/css/Pair.h"
60 #include "core/css/Rect.h" 64 #include "core/css/Rect.h"
61 #include "core/css/ShadowValue.h" 65 #include "core/css/ShadowValue.h"
62 #include "core/css/StylePropertySet.h" 66 #include "core/css/StylePropertySet.h"
63 #include "core/css/StylePropertyShorthand.h" 67 #include "core/css/StylePropertyShorthand.h"
64 #include "core/css/StyleRule.h" 68 #include "core/css/StyleRule.h"
65 #include "core/css/StyleRuleImport.h" 69 #include "core/css/StyleRuleImport.h"
66 #include "core/css/StyleSheetContents.h" 70 #include "core/css/StyleSheetContents.h"
67 #include "core/css/WebKitCSSArrayFunctionValue.h" 71 #include "core/css/WebKitCSSArrayFunctionValue.h"
68 #include "core/css/WebKitCSSFilterValue.h" 72 #include "core/css/WebKitCSSFilterValue.h"
69 #include "core/css/WebKitCSSKeyframeRule.h" 73 #include "core/css/WebKitCSSKeyframeRule.h"
70 #include "core/css/WebKitCSSKeyframesRule.h" 74 #include "core/css/WebKitCSSKeyframesRule.h"
71 #include "core/css/WebKitCSSMixFunctionValue.h"
72 #include "core/css/WebKitCSSSVGDocumentValue.h"
73 #include "core/css/WebKitCSSShaderValue.h"
74 #include "core/css/WebKitCSSTransformValue.h"
75 #include "core/dom/Document.h" 75 #include "core/dom/Document.h"
76 #include "core/html/parser/HTMLParserIdioms.h" 76 #include "core/html/parser/HTMLParserIdioms.h"
77 #include "core/inspector/InspectorInstrumentation.h" 77 #include "core/inspector/InspectorInstrumentation.h"
78 #include "core/page/Page.h" 78 #include "core/page/Page.h"
79 #include "core/page/PageConsole.h" 79 #include "core/page/PageConsole.h"
80 #include "core/page/Settings.h" 80 #include "core/page/Settings.h"
81 #include "core/platform/FloatConversion.h" 81 #include "core/platform/FloatConversion.h"
82 #include "core/platform/HashTools.h" 82 #include "core/platform/HashTools.h"
83 #include "core/platform/HistogramSupport.h" 83 #include "core/platform/HistogramSupport.h"
84 #include "core/rendering/RenderTheme.h" 84 #include "core/rendering/RenderTheme.h"
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 else if (isValidKeywordPropertyAndValue(propertyId, valueID, parserContext)) 1084 else if (isValidKeywordPropertyAndValue(propertyId, valueID, parserContext))
1085 value = cssValuePool().createIdentifierValue(valueID); 1085 value = cssValuePool().createIdentifierValue(valueID);
1086 else 1086 else
1087 return false; 1087 return false;
1088 1088
1089 declaration->addParsedProperty(CSSProperty(propertyId, value.release(), impo rtant)); 1089 declaration->addParsedProperty(CSSProperty(propertyId, value.release(), impo rtant));
1090 return true; 1090 return true;
1091 } 1091 }
1092 1092
1093 template <typename CharacterType> 1093 template <typename CharacterType>
1094 static bool parseTransformArguments(WebKitCSSTransformValue* transformValue, Cha racterType* characters, unsigned length, unsigned start, unsigned expectedCount) 1094 static bool parseTransformArguments(CSSTransformValue* transformValue, Character Type* characters, unsigned length, unsigned start, unsigned expectedCount)
1095 { 1095 {
1096 while (expectedCount) { 1096 while (expectedCount) {
1097 size_t end = WTF::find(characters, length, expectedCount == 1 ? ')' : ', ', start); 1097 size_t end = WTF::find(characters, length, expectedCount == 1 ? ')' : ', ', start);
1098 if (end == notFound || (expectedCount == 1 && end != length - 1)) 1098 if (end == notFound || (expectedCount == 1 && end != length - 1))
1099 return false; 1099 return false;
1100 unsigned argumentLength = end - start; 1100 unsigned argumentLength = end - start;
1101 CSSPrimitiveValue::UnitTypes unit = CSSPrimitiveValue::CSS_NUMBER; 1101 CSSPrimitiveValue::UnitTypes unit = CSSPrimitiveValue::CSS_NUMBER;
1102 double number; 1102 double number;
1103 if (!parseSimpleLength(characters + start, argumentLength, unit, number) ) 1103 if (!parseSimpleLength(characters + start, argumentLength, unit, number) )
1104 return false; 1104 return false;
(...skipping 12 matching lines...) Expand all
1117 return false; 1117 return false;
1118 static const unsigned shortestValidTransformStringLength = 12; 1118 static const unsigned shortestValidTransformStringLength = 12;
1119 static const unsigned likelyMultipartTransformStringLengthCutoff = 32; 1119 static const unsigned likelyMultipartTransformStringLengthCutoff = 32;
1120 if (string.length() < shortestValidTransformStringLength || string.length() > likelyMultipartTransformStringLengthCutoff) 1120 if (string.length() < shortestValidTransformStringLength || string.length() > likelyMultipartTransformStringLengthCutoff)
1121 return false; 1121 return false;
1122 if (!string.startsWith("translate", false)) 1122 if (!string.startsWith("translate", false))
1123 return false; 1123 return false;
1124 UChar c9 = toASCIILower(string[9]); 1124 UChar c9 = toASCIILower(string[9]);
1125 UChar c10 = toASCIILower(string[10]); 1125 UChar c10 = toASCIILower(string[10]);
1126 1126
1127 WebKitCSSTransformValue::TransformOperationType transformType; 1127 CSSTransformValue::TransformOperationType transformType;
1128 unsigned expectedArgumentCount = 1; 1128 unsigned expectedArgumentCount = 1;
1129 unsigned argumentStart = 11; 1129 unsigned argumentStart = 11;
1130 if (c9 == 'x' && c10 == '(') 1130 if (c9 == 'x' && c10 == '(')
1131 transformType = WebKitCSSTransformValue::TranslateXTransformOperation; 1131 transformType = CSSTransformValue::TranslateXTransformOperation;
1132 else if (c9 == 'y' && c10 == '(') 1132 else if (c9 == 'y' && c10 == '(')
1133 transformType = WebKitCSSTransformValue::TranslateYTransformOperation; 1133 transformType = CSSTransformValue::TranslateYTransformOperation;
1134 else if (c9 == 'z' && c10 == '(') 1134 else if (c9 == 'z' && c10 == '(')
1135 transformType = WebKitCSSTransformValue::TranslateZTransformOperation; 1135 transformType = CSSTransformValue::TranslateZTransformOperation;
1136 else if (c9 == '(') { 1136 else if (c9 == '(') {
1137 transformType = WebKitCSSTransformValue::TranslateTransformOperation; 1137 transformType = CSSTransformValue::TranslateTransformOperation;
1138 expectedArgumentCount = 2; 1138 expectedArgumentCount = 2;
1139 argumentStart = 10; 1139 argumentStart = 10;
1140 } else if (c9 == '3' && c10 == 'd' && string[11] == '(') { 1140 } else if (c9 == '3' && c10 == 'd' && string[11] == '(') {
1141 transformType = WebKitCSSTransformValue::Translate3DTransformOperation; 1141 transformType = CSSTransformValue::Translate3DTransformOperation;
1142 expectedArgumentCount = 3; 1142 expectedArgumentCount = 3;
1143 argumentStart = 12; 1143 argumentStart = 12;
1144 } else 1144 } else
1145 return false; 1145 return false;
1146 1146
1147 RefPtr<WebKitCSSTransformValue> transformValue = WebKitCSSTransformValue::cr eate(transformType); 1147 RefPtr<CSSTransformValue> transformValue = CSSTransformValue::create(transfo rmType);
1148 bool success; 1148 bool success;
1149 if (string.is8Bit()) 1149 if (string.is8Bit())
1150 success = parseTransformArguments(transformValue.get(), string.character s8(), string.length(), argumentStart, expectedArgumentCount); 1150 success = parseTransformArguments(transformValue.get(), string.character s8(), string.length(), argumentStart, expectedArgumentCount);
1151 else 1151 else
1152 success = parseTransformArguments(transformValue.get(), string.character s16(), string.length(), argumentStart, expectedArgumentCount); 1152 success = parseTransformArguments(transformValue.get(), string.character s16(), string.length(), argumentStart, expectedArgumentCount);
1153 if (!success) 1153 if (!success)
1154 return false; 1154 return false;
1155 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated(); 1155 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated();
1156 result->append(transformValue.release()); 1156 result->append(transformValue.release());
1157 properties->addParsedProperty(CSSProperty(CSSPropertyWebkitTransform, result .release(), important)); 1157 properties->addParsedProperty(CSSProperty(CSSPropertyWebkitTransform, result .release(), important));
(...skipping 6506 matching lines...) Expand 10 before | Expand all | Expand 10 after
7664 // Skip the comma and move on to the next argument. 7664 // Skip the comma and move on to the next argument.
7665 arg = functionArgs->next(); 7665 arg = functionArgs->next();
7666 } 7666 }
7667 7667
7668 return imageSet.release(); 7668 return imageSet.release();
7669 } 7669 }
7670 7670
7671 class TransformOperationInfo { 7671 class TransformOperationInfo {
7672 public: 7672 public:
7673 TransformOperationInfo(const CSSParserString& name) 7673 TransformOperationInfo(const CSSParserString& name)
7674 : m_type(WebKitCSSTransformValue::UnknownTransformOperation) 7674 : m_type(CSSTransformValue::UnknownTransformOperation)
7675 , m_argCount(1) 7675 , m_argCount(1)
7676 , m_allowSingleArgument(false) 7676 , m_allowSingleArgument(false)
7677 , m_unit(CSSParser::FUnknown) 7677 , m_unit(CSSParser::FUnknown)
7678 { 7678 {
7679 const UChar* characters; 7679 const UChar* characters;
7680 unsigned nameLength = name.length(); 7680 unsigned nameLength = name.length();
7681 7681
7682 const unsigned longestNameLength = 12; 7682 const unsigned longestNameLength = 12;
7683 UChar characterBuffer[longestNameLength]; 7683 UChar characterBuffer[longestNameLength];
7684 if (name.is8Bit()) { 7684 if (name.is8Bit()) {
7685 unsigned length = std::min(longestNameLength, nameLength); 7685 unsigned length = std::min(longestNameLength, nameLength);
7686 const LChar* characters8 = name.characters8(); 7686 const LChar* characters8 = name.characters8();
7687 for (unsigned i = 0; i < length; ++i) 7687 for (unsigned i = 0; i < length; ++i)
7688 characterBuffer[i] = characters8[i]; 7688 characterBuffer[i] = characters8[i];
7689 characters = characterBuffer; 7689 characters = characterBuffer;
7690 } else 7690 } else
7691 characters = name.characters16(); 7691 characters = name.characters16();
7692 7692
7693 switch (nameLength) { 7693 switch (nameLength) {
7694 case 5: 7694 case 5:
7695 // Valid name: skew(. 7695 // Valid name: skew(.
7696 if (((characters[0] == 's') || (characters[0] == 'S')) 7696 if (((characters[0] == 's') || (characters[0] == 'S'))
7697 & ((characters[1] == 'k') || (characters[1] == 'K')) 7697 & ((characters[1] == 'k') || (characters[1] == 'K'))
7698 & ((characters[2] == 'e') || (characters[2] == 'E')) 7698 & ((characters[2] == 'e') || (characters[2] == 'E'))
7699 & ((characters[3] == 'w') || (characters[3] == 'W')) 7699 & ((characters[3] == 'w') || (characters[3] == 'W'))
7700 & (characters[4] == '(')) { 7700 & (characters[4] == '(')) {
7701 m_unit = CSSParser::FAngle; 7701 m_unit = CSSParser::FAngle;
7702 m_type = WebKitCSSTransformValue::SkewTransformOperation; 7702 m_type = CSSTransformValue::SkewTransformOperation;
7703 m_allowSingleArgument = true; 7703 m_allowSingleArgument = true;
7704 m_argCount = 3; 7704 m_argCount = 3;
7705 } 7705 }
7706 break; 7706 break;
7707 case 6: 7707 case 6:
7708 // Valid names: skewx(, skewy(, scale(. 7708 // Valid names: skewx(, skewy(, scale(.
7709 if ((characters[1] == 'c') || (characters[1] == 'C')) { 7709 if ((characters[1] == 'c') || (characters[1] == 'C')) {
7710 if (((characters[0] == 's') || (characters[0] == 'S')) 7710 if (((characters[0] == 's') || (characters[0] == 'S'))
7711 & ((characters[2] == 'a') || (characters[2] == 'A')) 7711 & ((characters[2] == 'a') || (characters[2] == 'A'))
7712 & ((characters[3] == 'l') || (characters[3] == 'L')) 7712 & ((characters[3] == 'l') || (characters[3] == 'L'))
7713 & ((characters[4] == 'e') || (characters[4] == 'E')) 7713 & ((characters[4] == 'e') || (characters[4] == 'E'))
7714 & (characters[5] == '(')) { 7714 & (characters[5] == '(')) {
7715 m_unit = CSSParser::FNumber; 7715 m_unit = CSSParser::FNumber;
7716 m_type = WebKitCSSTransformValue::ScaleTransformOperation; 7716 m_type = CSSTransformValue::ScaleTransformOperation;
7717 m_allowSingleArgument = true; 7717 m_allowSingleArgument = true;
7718 m_argCount = 3; 7718 m_argCount = 3;
7719 } 7719 }
7720 } else if (((characters[0] == 's') || (characters[0] == 'S')) 7720 } else if (((characters[0] == 's') || (characters[0] == 'S'))
7721 & ((characters[1] == 'k') || (characters[1] == 'K')) 7721 & ((characters[1] == 'k') || (characters[1] == 'K'))
7722 & ((characters[2] == 'e') || (characters[2] == 'E')) 7722 & ((characters[2] == 'e') || (characters[2] == 'E'))
7723 & ((characters[3] == 'w') || (characters[3] == 'W')) 7723 & ((characters[3] == 'w') || (characters[3] == 'W'))
7724 & (characters[5] == '(')) { 7724 & (characters[5] == '(')) {
7725 if ((characters[4] == 'x') || (characters[4] == 'X')) { 7725 if ((characters[4] == 'x') || (characters[4] == 'X')) {
7726 m_unit = CSSParser::FAngle; 7726 m_unit = CSSParser::FAngle;
7727 m_type = WebKitCSSTransformValue::SkewXTransformOperation; 7727 m_type = CSSTransformValue::SkewXTransformOperation;
7728 } else if ((characters[4] == 'y') || (characters[4] == 'Y')) { 7728 } else if ((characters[4] == 'y') || (characters[4] == 'Y')) {
7729 m_unit = CSSParser::FAngle; 7729 m_unit = CSSParser::FAngle;
7730 m_type = WebKitCSSTransformValue::SkewYTransformOperation; 7730 m_type = CSSTransformValue::SkewYTransformOperation;
7731 } 7731 }
7732 } 7732 }
7733 break; 7733 break;
7734 case 7: 7734 case 7:
7735 // Valid names: matrix(, rotate(, scalex(, scaley(, scalez(. 7735 // Valid names: matrix(, rotate(, scalex(, scaley(, scalez(.
7736 if ((characters[0] == 'm') || (characters[0] == 'M')) { 7736 if ((characters[0] == 'm') || (characters[0] == 'M')) {
7737 if (((characters[1] == 'a') || (characters[1] == 'A')) 7737 if (((characters[1] == 'a') || (characters[1] == 'A'))
7738 & ((characters[2] == 't') || (characters[2] == 'T')) 7738 & ((characters[2] == 't') || (characters[2] == 'T'))
7739 & ((characters[3] == 'r') || (characters[3] == 'R')) 7739 & ((characters[3] == 'r') || (characters[3] == 'R'))
7740 & ((characters[4] == 'i') || (characters[4] == 'I')) 7740 & ((characters[4] == 'i') || (characters[4] == 'I'))
7741 & ((characters[5] == 'x') || (characters[5] == 'X')) 7741 & ((characters[5] == 'x') || (characters[5] == 'X'))
7742 & (characters[6] == '(')) { 7742 & (characters[6] == '(')) {
7743 m_unit = CSSParser::FNumber; 7743 m_unit = CSSParser::FNumber;
7744 m_type = WebKitCSSTransformValue::MatrixTransformOperation; 7744 m_type = CSSTransformValue::MatrixTransformOperation;
7745 m_argCount = 11; 7745 m_argCount = 11;
7746 } 7746 }
7747 } else if ((characters[0] == 'r') || (characters[0] == 'R')) { 7747 } else if ((characters[0] == 'r') || (characters[0] == 'R')) {
7748 if (((characters[1] == 'o') || (characters[1] == 'O')) 7748 if (((characters[1] == 'o') || (characters[1] == 'O'))
7749 & ((characters[2] == 't') || (characters[2] == 'T')) 7749 & ((characters[2] == 't') || (characters[2] == 'T'))
7750 & ((characters[3] == 'a') || (characters[3] == 'A')) 7750 & ((characters[3] == 'a') || (characters[3] == 'A'))
7751 & ((characters[4] == 't') || (characters[4] == 'T')) 7751 & ((characters[4] == 't') || (characters[4] == 'T'))
7752 & ((characters[5] == 'e') || (characters[5] == 'E')) 7752 & ((characters[5] == 'e') || (characters[5] == 'E'))
7753 & (characters[6] == '(')) { 7753 & (characters[6] == '(')) {
7754 m_unit = CSSParser::FAngle; 7754 m_unit = CSSParser::FAngle;
7755 m_type = WebKitCSSTransformValue::RotateTransformOperation; 7755 m_type = CSSTransformValue::RotateTransformOperation;
7756 } 7756 }
7757 } else if (((characters[0] == 's') || (characters[0] == 'S')) 7757 } else if (((characters[0] == 's') || (characters[0] == 'S'))
7758 & ((characters[1] == 'c') || (characters[1] == 'C')) 7758 & ((characters[1] == 'c') || (characters[1] == 'C'))
7759 & ((characters[2] == 'a') || (characters[2] == 'A')) 7759 & ((characters[2] == 'a') || (characters[2] == 'A'))
7760 & ((characters[3] == 'l') || (characters[3] == 'L')) 7760 & ((characters[3] == 'l') || (characters[3] == 'L'))
7761 & ((characters[4] == 'e') || (characters[4] == 'E')) 7761 & ((characters[4] == 'e') || (characters[4] == 'E'))
7762 & (characters[6] == '(')) { 7762 & (characters[6] == '(')) {
7763 if ((characters[5] == 'x') || (characters[5] == 'X')) { 7763 if ((characters[5] == 'x') || (characters[5] == 'X')) {
7764 m_unit = CSSParser::FNumber; 7764 m_unit = CSSParser::FNumber;
7765 m_type = WebKitCSSTransformValue::ScaleXTransformOperation; 7765 m_type = CSSTransformValue::ScaleXTransformOperation;
7766 } else if ((characters[5] == 'y') || (characters[5] == 'Y')) { 7766 } else if ((characters[5] == 'y') || (characters[5] == 'Y')) {
7767 m_unit = CSSParser::FNumber; 7767 m_unit = CSSParser::FNumber;
7768 m_type = WebKitCSSTransformValue::ScaleYTransformOperation; 7768 m_type = CSSTransformValue::ScaleYTransformOperation;
7769 } else if ((characters[5] == 'z') || (characters[5] == 'Z')) { 7769 } else if ((characters[5] == 'z') || (characters[5] == 'Z')) {
7770 m_unit = CSSParser::FNumber; 7770 m_unit = CSSParser::FNumber;
7771 m_type = WebKitCSSTransformValue::ScaleZTransformOperation; 7771 m_type = CSSTransformValue::ScaleZTransformOperation;
7772 } 7772 }
7773 } 7773 }
7774 break; 7774 break;
7775 case 8: 7775 case 8:
7776 // Valid names: rotatex(, rotatey(, rotatez(, scale3d(. 7776 // Valid names: rotatex(, rotatey(, rotatez(, scale3d(.
7777 if ((characters[0] == 's') || (characters[0] == 'S')) { 7777 if ((characters[0] == 's') || (characters[0] == 'S')) {
7778 if (((characters[1] == 'c') || (characters[1] == 'C')) 7778 if (((characters[1] == 'c') || (characters[1] == 'C'))
7779 & ((characters[2] == 'a') || (characters[2] == 'A')) 7779 & ((characters[2] == 'a') || (characters[2] == 'A'))
7780 & ((characters[3] == 'l') || (characters[3] == 'L')) 7780 & ((characters[3] == 'l') || (characters[3] == 'L'))
7781 & ((characters[4] == 'e') || (characters[4] == 'E')) 7781 & ((characters[4] == 'e') || (characters[4] == 'E'))
7782 & (characters[5] == '3') 7782 & (characters[5] == '3')
7783 & ((characters[6] == 'd') || (characters[6] == 'D')) 7783 & ((characters[6] == 'd') || (characters[6] == 'D'))
7784 & (characters[7] == '(')) { 7784 & (characters[7] == '(')) {
7785 m_unit = CSSParser::FNumber; 7785 m_unit = CSSParser::FNumber;
7786 m_type = WebKitCSSTransformValue::Scale3DTransformOperation; 7786 m_type = CSSTransformValue::Scale3DTransformOperation;
7787 m_argCount = 5; 7787 m_argCount = 5;
7788 } 7788 }
7789 } else if (((characters[0] == 'r') || (characters[0] == 'R')) 7789 } else if (((characters[0] == 'r') || (characters[0] == 'R'))
7790 & ((characters[1] == 'o') || (characters[1] == 'O')) 7790 & ((characters[1] == 'o') || (characters[1] == 'O'))
7791 & ((characters[2] == 't') || (characters[2] == 'T')) 7791 & ((characters[2] == 't') || (characters[2] == 'T'))
7792 & ((characters[3] == 'a') || (characters[3] == 'A')) 7792 & ((characters[3] == 'a') || (characters[3] == 'A'))
7793 & ((characters[4] == 't') || (characters[4] == 'T')) 7793 & ((characters[4] == 't') || (characters[4] == 'T'))
7794 & ((characters[5] == 'e') || (characters[5] == 'E')) 7794 & ((characters[5] == 'e') || (characters[5] == 'E'))
7795 & (characters[7] == '(')) { 7795 & (characters[7] == '(')) {
7796 if ((characters[6] == 'x') || (characters[6] == 'X')) { 7796 if ((characters[6] == 'x') || (characters[6] == 'X')) {
7797 m_unit = CSSParser::FAngle; 7797 m_unit = CSSParser::FAngle;
7798 m_type = WebKitCSSTransformValue::RotateXTransformOperation; 7798 m_type = CSSTransformValue::RotateXTransformOperation;
7799 } else if ((characters[6] == 'y') || (characters[6] == 'Y')) { 7799 } else if ((characters[6] == 'y') || (characters[6] == 'Y')) {
7800 m_unit = CSSParser::FAngle; 7800 m_unit = CSSParser::FAngle;
7801 m_type = WebKitCSSTransformValue::RotateYTransformOperation; 7801 m_type = CSSTransformValue::RotateYTransformOperation;
7802 } else if ((characters[6] == 'z') || (characters[6] == 'Z')) { 7802 } else if ((characters[6] == 'z') || (characters[6] == 'Z')) {
7803 m_unit = CSSParser::FAngle; 7803 m_unit = CSSParser::FAngle;
7804 m_type = WebKitCSSTransformValue::RotateZTransformOperation; 7804 m_type = CSSTransformValue::RotateZTransformOperation;
7805 } 7805 }
7806 } 7806 }
7807 break; 7807 break;
7808 case 9: 7808 case 9:
7809 // Valid names: matrix3d(, rotate3d(. 7809 // Valid names: matrix3d(, rotate3d(.
7810 if ((characters[0] == 'm') || (characters[0] == 'M')) { 7810 if ((characters[0] == 'm') || (characters[0] == 'M')) {
7811 if (((characters[1] == 'a') || (characters[1] == 'A')) 7811 if (((characters[1] == 'a') || (characters[1] == 'A'))
7812 & ((characters[2] == 't') || (characters[2] == 'T')) 7812 & ((characters[2] == 't') || (characters[2] == 'T'))
7813 & ((characters[3] == 'r') || (characters[3] == 'R')) 7813 & ((characters[3] == 'r') || (characters[3] == 'R'))
7814 & ((characters[4] == 'i') || (characters[4] == 'I')) 7814 & ((characters[4] == 'i') || (characters[4] == 'I'))
7815 & ((characters[5] == 'x') || (characters[5] == 'X')) 7815 & ((characters[5] == 'x') || (characters[5] == 'X'))
7816 & (characters[6] == '3') 7816 & (characters[6] == '3')
7817 & ((characters[7] == 'd') || (characters[7] == 'D')) 7817 & ((characters[7] == 'd') || (characters[7] == 'D'))
7818 & (characters[8] == '(')) { 7818 & (characters[8] == '(')) {
7819 m_unit = CSSParser::FNumber; 7819 m_unit = CSSParser::FNumber;
7820 m_type = WebKitCSSTransformValue::Matrix3DTransformOperation ; 7820 m_type = CSSTransformValue::Matrix3DTransformOperation;
7821 m_argCount = 31; 7821 m_argCount = 31;
7822 } 7822 }
7823 } else if (((characters[0] == 'r') || (characters[0] == 'R')) 7823 } else if (((characters[0] == 'r') || (characters[0] == 'R'))
7824 & ((characters[1] == 'o') || (characters[1] == 'O')) 7824 & ((characters[1] == 'o') || (characters[1] == 'O'))
7825 & ((characters[2] == 't') || (characters[2] == 'T')) 7825 & ((characters[2] == 't') || (characters[2] == 'T'))
7826 & ((characters[3] == 'a') || (characters[3] == 'A')) 7826 & ((characters[3] == 'a') || (characters[3] == 'A'))
7827 & ((characters[4] == 't') || (characters[4] == 'T')) 7827 & ((characters[4] == 't') || (characters[4] == 'T'))
7828 & ((characters[5] == 'e') || (characters[5] == 'E')) 7828 & ((characters[5] == 'e') || (characters[5] == 'E'))
7829 & (characters[6] == '3') 7829 & (characters[6] == '3')
7830 & ((characters[7] == 'd') || (characters[7] == 'D')) 7830 & ((characters[7] == 'd') || (characters[7] == 'D'))
7831 & (characters[8] == '(')) { 7831 & (characters[8] == '(')) {
7832 m_unit = CSSParser::FNumber; 7832 m_unit = CSSParser::FNumber;
7833 m_type = WebKitCSSTransformValue::Rotate3DTransformOperation; 7833 m_type = CSSTransformValue::Rotate3DTransformOperation;
7834 m_argCount = 7; 7834 m_argCount = 7;
7835 } 7835 }
7836 break; 7836 break;
7837 case 10: 7837 case 10:
7838 // Valid name: translate(. 7838 // Valid name: translate(.
7839 if (((characters[0] == 't') || (characters[0] == 'T')) 7839 if (((characters[0] == 't') || (characters[0] == 'T'))
7840 & ((characters[1] == 'r') || (characters[1] == 'R')) 7840 & ((characters[1] == 'r') || (characters[1] == 'R'))
7841 & ((characters[2] == 'a') || (characters[2] == 'A')) 7841 & ((characters[2] == 'a') || (characters[2] == 'A'))
7842 & ((characters[3] == 'n') || (characters[3] == 'N')) 7842 & ((characters[3] == 'n') || (characters[3] == 'N'))
7843 & ((characters[4] == 's') || (characters[4] == 'S')) 7843 & ((characters[4] == 's') || (characters[4] == 'S'))
7844 & ((characters[5] == 'l') || (characters[5] == 'L')) 7844 & ((characters[5] == 'l') || (characters[5] == 'L'))
7845 & ((characters[6] == 'a') || (characters[6] == 'A')) 7845 & ((characters[6] == 'a') || (characters[6] == 'A'))
7846 & ((characters[7] == 't') || (characters[7] == 'T')) 7846 & ((characters[7] == 't') || (characters[7] == 'T'))
7847 & ((characters[8] == 'e') || (characters[8] == 'E')) 7847 & ((characters[8] == 'e') || (characters[8] == 'E'))
7848 & (characters[9] == '(')) { 7848 & (characters[9] == '(')) {
7849 m_unit = CSSParser::FLength | CSSParser::FPercent; 7849 m_unit = CSSParser::FLength | CSSParser::FPercent;
7850 m_type = WebKitCSSTransformValue::TranslateTransformOperation; 7850 m_type = CSSTransformValue::TranslateTransformOperation;
7851 m_allowSingleArgument = true; 7851 m_allowSingleArgument = true;
7852 m_argCount = 3; 7852 m_argCount = 3;
7853 } 7853 }
7854 break; 7854 break;
7855 case 11: 7855 case 11:
7856 // Valid names: translatex(, translatey(, translatez(. 7856 // Valid names: translatex(, translatey(, translatez(.
7857 if (((characters[0] == 't') || (characters[0] == 'T')) 7857 if (((characters[0] == 't') || (characters[0] == 'T'))
7858 & ((characters[1] == 'r') || (characters[1] == 'R')) 7858 & ((characters[1] == 'r') || (characters[1] == 'R'))
7859 & ((characters[2] == 'a') || (characters[2] == 'A')) 7859 & ((characters[2] == 'a') || (characters[2] == 'A'))
7860 & ((characters[3] == 'n') || (characters[3] == 'N')) 7860 & ((characters[3] == 'n') || (characters[3] == 'N'))
7861 & ((characters[4] == 's') || (characters[4] == 'S')) 7861 & ((characters[4] == 's') || (characters[4] == 'S'))
7862 & ((characters[5] == 'l') || (characters[5] == 'L')) 7862 & ((characters[5] == 'l') || (characters[5] == 'L'))
7863 & ((characters[6] == 'a') || (characters[6] == 'A')) 7863 & ((characters[6] == 'a') || (characters[6] == 'A'))
7864 & ((characters[7] == 't') || (characters[7] == 'T')) 7864 & ((characters[7] == 't') || (characters[7] == 'T'))
7865 & ((characters[8] == 'e') || (characters[8] == 'E')) 7865 & ((characters[8] == 'e') || (characters[8] == 'E'))
7866 & (characters[10] == '(')) { 7866 & (characters[10] == '(')) {
7867 if ((characters[9] == 'x') || (characters[9] == 'X')) { 7867 if ((characters[9] == 'x') || (characters[9] == 'X')) {
7868 m_unit = CSSParser::FLength | CSSParser::FPercent; 7868 m_unit = CSSParser::FLength | CSSParser::FPercent;
7869 m_type = WebKitCSSTransformValue::TranslateXTransformOperati on; 7869 m_type = CSSTransformValue::TranslateXTransformOperation;
7870 } else if ((characters[9] == 'y') || (characters[9] == 'Y')) { 7870 } else if ((characters[9] == 'y') || (characters[9] == 'Y')) {
7871 m_unit = CSSParser::FLength | CSSParser::FPercent; 7871 m_unit = CSSParser::FLength | CSSParser::FPercent;
7872 m_type = WebKitCSSTransformValue::TranslateYTransformOperati on; 7872 m_type = CSSTransformValue::TranslateYTransformOperation;
7873 } else if ((characters[9] == 'z') || (characters[9] == 'Z')) { 7873 } else if ((characters[9] == 'z') || (characters[9] == 'Z')) {
7874 m_unit = CSSParser::FLength | CSSParser::FPercent; 7874 m_unit = CSSParser::FLength | CSSParser::FPercent;
7875 m_type = WebKitCSSTransformValue::TranslateZTransformOperati on; 7875 m_type = CSSTransformValue::TranslateZTransformOperation;
7876 } 7876 }
7877 } 7877 }
7878 break; 7878 break;
7879 case 12: 7879 case 12:
7880 // Valid names: perspective(, translate3d(. 7880 // Valid names: perspective(, translate3d(.
7881 if ((characters[0] == 'p') || (characters[0] == 'P')) { 7881 if ((characters[0] == 'p') || (characters[0] == 'P')) {
7882 if (((characters[1] == 'e') || (characters[1] == 'E')) 7882 if (((characters[1] == 'e') || (characters[1] == 'E'))
7883 & ((characters[2] == 'r') || (characters[2] == 'R')) 7883 & ((characters[2] == 'r') || (characters[2] == 'R'))
7884 & ((characters[3] == 's') || (characters[3] == 'S')) 7884 & ((characters[3] == 's') || (characters[3] == 'S'))
7885 & ((characters[4] == 'p') || (characters[4] == 'P')) 7885 & ((characters[4] == 'p') || (characters[4] == 'P'))
7886 & ((characters[5] == 'e') || (characters[5] == 'E')) 7886 & ((characters[5] == 'e') || (characters[5] == 'E'))
7887 & ((characters[6] == 'c') || (characters[6] == 'C')) 7887 & ((characters[6] == 'c') || (characters[6] == 'C'))
7888 & ((characters[7] == 't') || (characters[7] == 'T')) 7888 & ((characters[7] == 't') || (characters[7] == 'T'))
7889 & ((characters[8] == 'i') || (characters[8] == 'I')) 7889 & ((characters[8] == 'i') || (characters[8] == 'I'))
7890 & ((characters[9] == 'v') || (characters[9] == 'V')) 7890 & ((characters[9] == 'v') || (characters[9] == 'V'))
7891 & ((characters[10] == 'e') || (characters[10] == 'E')) 7891 & ((characters[10] == 'e') || (characters[10] == 'E'))
7892 & (characters[11] == '(')) { 7892 & (characters[11] == '(')) {
7893 m_unit = CSSParser::FNumber; 7893 m_unit = CSSParser::FNumber;
7894 m_type = WebKitCSSTransformValue::PerspectiveTransformOperat ion; 7894 m_type = CSSTransformValue::PerspectiveTransformOperation;
7895 } 7895 }
7896 } else if (((characters[0] == 't') || (characters[0] == 'T')) 7896 } else if (((characters[0] == 't') || (characters[0] == 'T'))
7897 & ((characters[1] == 'r') || (characters[1] == 'R')) 7897 & ((characters[1] == 'r') || (characters[1] == 'R'))
7898 & ((characters[2] == 'a') || (characters[2] == 'A')) 7898 & ((characters[2] == 'a') || (characters[2] == 'A'))
7899 & ((characters[3] == 'n') || (characters[3] == 'N')) 7899 & ((characters[3] == 'n') || (characters[3] == 'N'))
7900 & ((characters[4] == 's') || (characters[4] == 'S')) 7900 & ((characters[4] == 's') || (characters[4] == 'S'))
7901 & ((characters[5] == 'l') || (characters[5] == 'L')) 7901 & ((characters[5] == 'l') || (characters[5] == 'L'))
7902 & ((characters[6] == 'a') || (characters[6] == 'A')) 7902 & ((characters[6] == 'a') || (characters[6] == 'A'))
7903 & ((characters[7] == 't') || (characters[7] == 'T')) 7903 & ((characters[7] == 't') || (characters[7] == 'T'))
7904 & ((characters[8] == 'e') || (characters[8] == 'E')) 7904 & ((characters[8] == 'e') || (characters[8] == 'E'))
7905 & (characters[9] == '3') 7905 & (characters[9] == '3')
7906 & ((characters[10] == 'd') || (characters[10] == 'D')) 7906 & ((characters[10] == 'd') || (characters[10] == 'D'))
7907 & (characters[11] == '(')) { 7907 & (characters[11] == '(')) {
7908 m_unit = CSSParser::FLength | CSSParser::FPercent; 7908 m_unit = CSSParser::FLength | CSSParser::FPercent;
7909 m_type = WebKitCSSTransformValue::Translate3DTransformOperation; 7909 m_type = CSSTransformValue::Translate3DTransformOperation;
7910 m_argCount = 5; 7910 m_argCount = 5;
7911 } 7911 }
7912 break; 7912 break;
7913 } // end switch () 7913 } // end switch ()
7914 } 7914 }
7915 7915
7916 WebKitCSSTransformValue::TransformOperationType type() const { return m_type ; } 7916 CSSTransformValue::TransformOperationType type() const { return m_type; }
7917 unsigned argCount() const { return m_argCount; } 7917 unsigned argCount() const { return m_argCount; }
7918 CSSParser::Units unit() const { return m_unit; } 7918 CSSParser::Units unit() const { return m_unit; }
7919 7919
7920 bool unknown() const { return m_type == WebKitCSSTransformValue::UnknownTran sformOperation; } 7920 bool unknown() const { return m_type == CSSTransformValue::UnknownTransformO peration; }
7921 bool hasCorrectArgCount(unsigned argCount) { return m_argCount == argCount | | (m_allowSingleArgument && argCount == 1); } 7921 bool hasCorrectArgCount(unsigned argCount) { return m_argCount == argCount | | (m_allowSingleArgument && argCount == 1); }
7922 7922
7923 private: 7923 private:
7924 WebKitCSSTransformValue::TransformOperationType m_type; 7924 CSSTransformValue::TransformOperationType m_type;
7925 unsigned m_argCount; 7925 unsigned m_argCount;
7926 bool m_allowSingleArgument; 7926 bool m_allowSingleArgument;
7927 CSSParser::Units m_unit; 7927 CSSParser::Units m_unit;
7928 }; 7928 };
7929 7929
7930 PassRefPtr<CSSValueList> CSSParser::parseTransform() 7930 PassRefPtr<CSSValueList> CSSParser::parseTransform()
7931 { 7931 {
7932 if (!m_valueList) 7932 if (!m_valueList)
7933 return 0; 7933 return 0;
7934 7934
(...skipping 21 matching lines...) Expand all
7956 7956
7957 // See if the specified primitive is one we understand. 7957 // See if the specified primitive is one we understand.
7958 TransformOperationInfo info(value->function->name); 7958 TransformOperationInfo info(value->function->name);
7959 if (info.unknown()) 7959 if (info.unknown())
7960 return 0; 7960 return 0;
7961 7961
7962 if (!info.hasCorrectArgCount(args->size())) 7962 if (!info.hasCorrectArgCount(args->size()))
7963 return 0; 7963 return 0;
7964 7964
7965 // The transform is a list of functional primitives that specify transform o perations. 7965 // The transform is a list of functional primitives that specify transform o perations.
7966 // We collect a list of WebKitCSSTransformValues, where each value specifies a single operation. 7966 // We collect a list of CSSTransformValues, where each value specifies a sin gle operation.
7967 7967
7968 // Create the new WebKitCSSTransformValue for this operation and add it to o ur list. 7968 // Create the new CSSTransformValue for this operation and add it to our lis t.
7969 RefPtr<WebKitCSSTransformValue> transformValue = WebKitCSSTransformValue::cr eate(info.type()); 7969 RefPtr<CSSTransformValue> transformValue = CSSTransformValue::create(info.ty pe());
7970 7970
7971 // Snag our values. 7971 // Snag our values.
7972 CSSParserValue* a = args->current(); 7972 CSSParserValue* a = args->current();
7973 unsigned argNumber = 0; 7973 unsigned argNumber = 0;
7974 while (a) { 7974 while (a) {
7975 CSSParser::Units unit = info.unit(); 7975 CSSParser::Units unit = info.unit();
7976 7976
7977 if (info.type() == WebKitCSSTransformValue::Rotate3DTransformOperation & & argNumber == 3) { 7977 if (info.type() == CSSTransformValue::Rotate3DTransformOperation && argN umber == 3) {
7978 // 4th param of rotate3d() is an angle rather than a bare number, va lidate it as such 7978 // 4th param of rotate3d() is an angle rather than a bare number, va lidate it as such
7979 if (!validUnit(a, FAngle, CSSStrictMode)) 7979 if (!validUnit(a, FAngle, CSSStrictMode))
7980 return 0; 7980 return 0;
7981 } else if (info.type() == WebKitCSSTransformValue::Translate3DTransformO peration && argNumber == 2) { 7981 } else if (info.type() == CSSTransformValue::Translate3DTransformOperati on && argNumber == 2) {
7982 // 3rd param of translate3d() cannot be a percentage 7982 // 3rd param of translate3d() cannot be a percentage
7983 if (!validUnit(a, FLength, CSSStrictMode)) 7983 if (!validUnit(a, FLength, CSSStrictMode))
7984 return 0; 7984 return 0;
7985 } else if (info.type() == WebKitCSSTransformValue::TranslateZTransformOp eration && !argNumber) { 7985 } else if (info.type() == CSSTransformValue::TranslateZTransformOperatio n && !argNumber) {
7986 // 1st param of translateZ() cannot be a percentage 7986 // 1st param of translateZ() cannot be a percentage
7987 if (!validUnit(a, FLength, CSSStrictMode)) 7987 if (!validUnit(a, FLength, CSSStrictMode))
7988 return 0; 7988 return 0;
7989 } else if (info.type() == WebKitCSSTransformValue::PerspectiveTransformO peration && !argNumber) { 7989 } else if (info.type() == CSSTransformValue::PerspectiveTransformOperati on && !argNumber) {
7990 // 1st param of perspective() must be a non-negative number (depreca ted) or length. 7990 // 1st param of perspective() must be a non-negative number (depreca ted) or length.
7991 if (!validUnit(a, FNumber | FLength | FNonNeg, CSSStrictMode)) 7991 if (!validUnit(a, FNumber | FLength | FNonNeg, CSSStrictMode))
7992 return 0; 7992 return 0;
7993 } else if (!validUnit(a, unit, CSSStrictMode)) 7993 } else if (!validUnit(a, unit, CSSStrictMode))
7994 return 0; 7994 return 0;
7995 7995
7996 // Add the value to the current transform operation. 7996 // Add the value to the current transform operation.
7997 transformValue->append(createPrimitiveNumericValue(a)); 7997 transformValue->append(createPrimitiveNumericValue(a));
7998 7998
7999 a = args->next(); 7999 a = args->next();
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
8088 8088
8089 if (!isComma(nextParserValue)) 8089 if (!isComma(nextParserValue))
8090 return 0; 8090 return 0;
8091 8091
8092 arrayArgsParserValueList->next(); 8092 arrayArgsParserValueList->next();
8093 } 8093 }
8094 8094
8095 return arrayFunction; 8095 return arrayFunction;
8096 } 8096 }
8097 8097
8098 PassRefPtr<WebKitCSSMixFunctionValue> CSSParser::parseMixFunction(CSSParserValue * value) 8098 PassRefPtr<CSSMixFunctionValue> CSSParser::parseMixFunction(CSSParserValue* valu e)
8099 { 8099 {
8100 ASSERT(value->unit == CSSParserValue::Function && value->function); 8100 ASSERT(value->unit == CSSParserValue::Function && value->function);
8101 8101
8102 if (!equalIgnoringCase(value->function->name, "mix(")) 8102 if (!equalIgnoringCase(value->function->name, "mix("))
8103 return 0; 8103 return 0;
8104 8104
8105 CSSParserValueList* argsList = value->function->args.get(); 8105 CSSParserValueList* argsList = value->function->args.get();
8106 if (!argsList) 8106 if (!argsList)
8107 return 0; 8107 return 0;
8108 8108
8109 unsigned numArgs = argsList->size(); 8109 unsigned numArgs = argsList->size();
8110 if (numArgs < 1 || numArgs > 3) 8110 if (numArgs < 1 || numArgs > 3)
8111 return 0; 8111 return 0;
8112 8112
8113 RefPtr<WebKitCSSMixFunctionValue> mixFunction = WebKitCSSMixFunctionValue::c reate(); 8113 RefPtr<CSSMixFunctionValue> mixFunction = CSSMixFunctionValue::create();
8114 8114
8115 bool hasBlendMode = false; 8115 bool hasBlendMode = false;
8116 bool hasAlphaCompositing = false; 8116 bool hasAlphaCompositing = false;
8117 CSSParserValue* arg; 8117 CSSParserValue* arg;
8118 while ((arg = argsList->current())) { 8118 while ((arg = argsList->current())) {
8119 RefPtr<CSSValue> value; 8119 RefPtr<CSSValue> value;
8120 8120
8121 unsigned argNumber = argsList->currentIndex(); 8121 unsigned argNumber = argsList->currentIndex();
8122 if (!argNumber) { 8122 if (!argNumber) {
8123 if (arg->unit == CSSPrimitiveValue::CSS_URI) { 8123 if (arg->unit == CSSPrimitiveValue::CSS_URI) {
8124 KURL shaderURL = completeURL(arg->string); 8124 KURL shaderURL = completeURL(arg->string);
8125 value = WebKitCSSShaderValue::create(shaderURL.string()); 8125 value = CSSShaderValue::create(shaderURL.string());
8126 } 8126 }
8127 } else if (argNumber == 1 || argNumber == 2) { 8127 } else if (argNumber == 1 || argNumber == 2) {
8128 if (!hasBlendMode && isBlendMode(arg->id)) { 8128 if (!hasBlendMode && isBlendMode(arg->id)) {
8129 hasBlendMode = true; 8129 hasBlendMode = true;
8130 value = cssValuePool().createIdentifierValue(arg->id); 8130 value = cssValuePool().createIdentifierValue(arg->id);
8131 } else if (!hasAlphaCompositing && isCompositeOperator(arg->id)) { 8131 } else if (!hasAlphaCompositing && isCompositeOperator(arg->id)) {
8132 hasAlphaCompositing = true; 8132 hasAlphaCompositing = true;
8133 value = cssValuePool().createIdentifierValue(arg->id); 8133 value = cssValuePool().createIdentifierValue(arg->id);
8134 } 8134 }
8135 } 8135 }
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
8293 // 1. Parse the shader URLs: <vertex-shader>[wsp<fragment-shader>] 8293 // 1. Parse the shader URLs: <vertex-shader>[wsp<fragment-shader>]
8294 RefPtr<CSSValueList> shadersList = CSSValueList::createSpaceSeparated(); 8294 RefPtr<CSSValueList> shadersList = CSSValueList::createSpaceSeparated();
8295 bool hadAtLeastOneCustomShader = false; 8295 bool hadAtLeastOneCustomShader = false;
8296 CSSParserValue* arg; 8296 CSSParserValue* arg;
8297 while ((arg = argsList->current())) { 8297 while ((arg = argsList->current())) {
8298 RefPtr<CSSValue> value; 8298 RefPtr<CSSValue> value;
8299 if (arg->id == CSSValueNone) 8299 if (arg->id == CSSValueNone)
8300 value = cssValuePool().createIdentifierValue(CSSValueNone); 8300 value = cssValuePool().createIdentifierValue(CSSValueNone);
8301 else if (arg->unit == CSSPrimitiveValue::CSS_URI) { 8301 else if (arg->unit == CSSPrimitiveValue::CSS_URI) {
8302 KURL shaderURL = completeURL(arg->string); 8302 KURL shaderURL = completeURL(arg->string);
8303 value = WebKitCSSShaderValue::create(shaderURL.string()); 8303 value = CSSShaderValue::create(shaderURL.string());
8304 hadAtLeastOneCustomShader = true; 8304 hadAtLeastOneCustomShader = true;
8305 } else if (argsList->currentIndex() == 1 && arg->unit == CSSParserValue: :Function) { 8305 } else if (argsList->currentIndex() == 1 && arg->unit == CSSParserValue: :Function) {
8306 if (!(value = parseMixFunction(arg))) 8306 if (!(value = parseMixFunction(arg)))
8307 return 0; 8307 return 0;
8308 hadAtLeastOneCustomShader = true; 8308 hadAtLeastOneCustomShader = true;
8309 } 8309 }
8310 8310
8311 if (!value) 8311 if (!value)
8312 break; 8312 break;
8313 shadersList->append(value.release()); 8313 shadersList->append(value.release());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
8398 RefPtr<CSSValue> parsedTransformValue = parseTransformValue(value); 8398 RefPtr<CSSValue> parsedTransformValue = parseTransformValue(value);
8399 if (!parsedTransformValue) 8399 if (!parsedTransformValue)
8400 return 0; 8400 return 0;
8401 8401
8402 list->append(parsedTransformValue.release()); 8402 list->append(parsedTransformValue.release());
8403 } 8403 }
8404 8404
8405 return list.release(); 8405 return list.release();
8406 } 8406 }
8407 8407
8408 PassRefPtr<WebKitCSSShaderValue> CSSParser::parseFilterRuleSrcUriAndFormat(CSSPa rserValueList* valueList) 8408 PassRefPtr<CSSShaderValue> CSSParser::parseFilterRuleSrcUriAndFormat(CSSParserVa lueList* valueList)
8409 { 8409 {
8410 CSSParserValue* value = valueList->current(); 8410 CSSParserValue* value = valueList->current();
8411 ASSERT(value && value->unit == CSSPrimitiveValue::CSS_URI); 8411 ASSERT(value && value->unit == CSSPrimitiveValue::CSS_URI);
8412 RefPtr<WebKitCSSShaderValue> shaderValue = WebKitCSSShaderValue::create(comp leteURL(value->string)); 8412 RefPtr<CSSShaderValue> shaderValue = CSSShaderValue::create(completeURL(valu e->string));
8413 8413
8414 value = valueList->next(); 8414 value = valueList->next();
8415 if (value && value->unit == CSSParserValue::Function && equalIgnoringCase(va lue->function->name, "format(")) { 8415 if (value && value->unit == CSSParserValue::Function && equalIgnoringCase(va lue->function->name, "format(")) {
8416 CSSParserValueList* args = value->function->args.get(); 8416 CSSParserValueList* args = value->function->args.get();
8417 if (!args || args->size() != 1) 8417 if (!args || args->size() != 1)
8418 return 0; 8418 return 0;
8419 8419
8420 CSSParserValue* arg = args->current(); 8420 CSSParserValue* arg = args->current();
8421 if (arg->unit != CSSPrimitiveValue::CSS_STRING) 8421 if (arg->unit != CSSPrimitiveValue::CSS_STRING)
8422 return 0; 8422 return 0;
8423 8423
8424 shaderValue->setFormat(arg->string); 8424 shaderValue->setFormat(arg->string);
8425 valueList->next(); 8425 valueList->next();
8426 } 8426 }
8427 8427
8428 return shaderValue.release(); 8428 return shaderValue.release();
8429 } 8429 }
8430 8430
8431 bool CSSParser::parseFilterRuleSrc() 8431 bool CSSParser::parseFilterRuleSrc()
8432 { 8432 {
8433 RefPtr<CSSValueList> srcList = CSSValueList::createCommaSeparated(); 8433 RefPtr<CSSValueList> srcList = CSSValueList::createCommaSeparated();
8434 8434
8435 CSSParserValue* value = m_valueList->current(); 8435 CSSParserValue* value = m_valueList->current();
8436 while (value) { 8436 while (value) {
8437 if (value->unit != CSSPrimitiveValue::CSS_URI) 8437 if (value->unit != CSSPrimitiveValue::CSS_URI)
8438 return false; 8438 return false;
8439 8439
8440 RefPtr<WebKitCSSShaderValue> shaderValue = parseFilterRuleSrcUriAndForma t(m_valueList.get()); 8440 RefPtr<CSSShaderValue> shaderValue = parseFilterRuleSrcUriAndFormat(m_va lueList.get());
8441 if (!shaderValue) 8441 if (!shaderValue)
8442 return false; 8442 return false;
8443 srcList->append(shaderValue.release()); 8443 srcList->append(shaderValue.release());
8444 8444
8445 if (!acceptCommaOperator(m_valueList.get())) 8445 if (!acceptCommaOperator(m_valueList.get()))
8446 return false; 8446 return false;
8447 8447
8448 value = m_valueList->current(); 8448 value = m_valueList->current();
8449 } 8449 }
8450 8450
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
8569 for (CSSParserValue* value = m_valueList->current(); value; value = m_valueL ist->next()) { 8569 for (CSSParserValue* value = m_valueList->current(); value; value = m_valueL ist->next()) {
8570 if (value->unit != CSSPrimitiveValue::CSS_URI && (value->unit != CSSPars erValue::Function || !value->function)) 8570 if (value->unit != CSSPrimitiveValue::CSS_URI && (value->unit != CSSPars erValue::Function || !value->function))
8571 return 0; 8571 return 0;
8572 8572
8573 WebKitCSSFilterValue::FilterOperationType filterType = WebKitCSSFilterVa lue::UnknownFilterOperation; 8573 WebKitCSSFilterValue::FilterOperationType filterType = WebKitCSSFilterVa lue::UnknownFilterOperation;
8574 8574
8575 // See if the specified primitive is one we understand. 8575 // See if the specified primitive is one we understand.
8576 if (value->unit == CSSPrimitiveValue::CSS_URI) { 8576 if (value->unit == CSSPrimitiveValue::CSS_URI) {
8577 RefPtr<WebKitCSSFilterValue> referenceFilterValue = WebKitCSSFilterV alue::create(WebKitCSSFilterValue::ReferenceFilterOperation); 8577 RefPtr<WebKitCSSFilterValue> referenceFilterValue = WebKitCSSFilterV alue::create(WebKitCSSFilterValue::ReferenceFilterOperation);
8578 list->append(referenceFilterValue); 8578 list->append(referenceFilterValue);
8579 referenceFilterValue->append(WebKitCSSSVGDocumentValue::create(value ->string)); 8579 referenceFilterValue->append(CSSSVGDocumentValue::create(value->stri ng));
8580 } else { 8580 } else {
8581 const CSSParserString name = value->function->name; 8581 const CSSParserString name = value->function->name;
8582 unsigned maximumArgumentCount = 1; 8582 unsigned maximumArgumentCount = 1;
8583 8583
8584 filterInfoForName(name, filterType, maximumArgumentCount); 8584 filterInfoForName(name, filterType, maximumArgumentCount);
8585 8585
8586 if (filterType == WebKitCSSFilterValue::UnknownFilterOperation) 8586 if (filterType == WebKitCSSFilterValue::UnknownFilterOperation)
8587 return 0; 8587 return 0;
8588 8588
8589 if (filterType == WebKitCSSFilterValue::CustomFilterOperation) { 8589 if (filterType == WebKitCSSFilterValue::CustomFilterOperation) {
(...skipping 3147 matching lines...) Expand 10 before | Expand all | Expand 10 after
11737 { 11737 {
11738 // The tokenizer checks for the construct of an+b. 11738 // The tokenizer checks for the construct of an+b.
11739 // However, since the {ident} rule precedes the {nth} rule, some of those 11739 // However, since the {ident} rule precedes the {nth} rule, some of those
11740 // tokens are identified as string literal. Furthermore we need to accept 11740 // tokens are identified as string literal. Furthermore we need to accept
11741 // "odd" and "even" which does not match to an+b. 11741 // "odd" and "even" which does not match to an+b.
11742 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 11742 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
11743 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 11743 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
11744 } 11744 }
11745 11745
11746 } 11746 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698