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) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 3 * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
4 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
5 * Copyright (C) 2009 - 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserve
d. | 5 * Copyright (C) 2009 - 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserve
d. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
11 * | 11 * |
12 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Library General Public License for more details. | 15 * Library General Public License for more details. |
16 * | 16 * |
17 * You should have received a copy of the GNU Library General Public License | 17 * You should have received a copy of the GNU Library General Public License |
18 * along with this library; see the file COPYING.LIB. If not, write to | 18 * along with this library; see the file COPYING.LIB. If not, write to |
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 * Boston, MA 02110-1301, USA. | 20 * Boston, MA 02110-1301, USA. |
21 */ | 21 */ |
22 | 22 |
23 #ifndef CSSPropertyParser_h | 23 #ifndef CSSPropertyParser_h |
24 #define CSSPropertyParser_h | 24 #define CSSPropertyParser_h |
25 | 25 |
26 #include "core/css/CSSGradientValue.h" | 26 #include "core/css/CSSGradientValue.h" |
27 #include "core/css/CSSGridTemplateAreasValue.h" | 27 #include "core/css/CSSGridTemplateAreasValue.h" |
28 #include "core/css/CSSPropertySourceData.h" | 28 #include "core/css/CSSPropertySourceData.h" |
| 29 #include "core/css/CSSValuePool.h" |
29 #include "core/css/parser/CSSParserTokenRange.h" | 30 #include "core/css/parser/CSSParserTokenRange.h" |
30 #include "platform/Length.h" | 31 #include "platform/Length.h" |
| 32 #include "wtf/text/StringBuilder.h" |
31 | 33 |
32 namespace blink { | 34 namespace blink { |
33 | 35 |
34 class BorderImageParseContext; | 36 class BorderImageParseContext; |
35 class CSSBorderImageSliceValue; | 37 class CSSBorderImageSliceValue; |
36 class CSSBasicShape; | 38 class CSSBasicShape; |
37 class CSSBasicShapeInset; | 39 class CSSBasicShapeInset; |
38 class CSSFunctionValue; | 40 class CSSFunctionValue; |
39 class CSSGradientValue; | 41 class CSSGradientValue; |
40 class CSSGridLineNamesValue; | 42 class CSSGridLineNamesValue; |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseShapeRadius(CSSParserValue*); | 182 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseShapeRadius(CSSParserValue*); |
181 | 183 |
182 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeCircle(CSSParserValueLi
st* args); | 184 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeCircle(CSSParserValueLi
st* args); |
183 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeEllipse(CSSParserValueL
ist* args); | 185 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeEllipse(CSSParserValueL
ist* args); |
184 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapePolygon(CSSParserValueL
ist* args); | 186 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapePolygon(CSSParserValueL
ist* args); |
185 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeInset(CSSParserValueLis
t* args); | 187 PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeInset(CSSParserValueLis
t* args); |
186 | 188 |
187 bool parseFont(bool important); | 189 bool parseFont(bool important); |
188 bool parseSystemFont(bool important); | 190 bool parseSystemFont(bool important); |
189 PassRefPtrWillBeRawPtr<CSSValueList> parseFontFamily(); | 191 PassRefPtrWillBeRawPtr<CSSValueList> parseFontFamily(); |
| 192 PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFamily(); |
190 | 193 |
191 PassRefPtrWillBeRawPtr<CSSValue> parseCounter(int defaultValue); | 194 PassRefPtrWillBeRawPtr<CSSValue> parseCounter(int defaultValue); |
192 PassRefPtrWillBeRawPtr<CSSValue> parseCounterContent(CSSParserValueList* arg
s, bool counters); | 195 PassRefPtrWillBeRawPtr<CSSValue> parseCounterContent(CSSParserValueList* arg
s, bool counters); |
193 | 196 |
194 bool parseColorParameters(const CSSParserValue*, int* colorValues, bool pars
eAlpha); | 197 bool parseColorParameters(const CSSParserValue*, int* colorValues, bool pars
eAlpha); |
195 bool parseHSLParameters(const CSSParserValue*, double* colorValues, bool par
seAlpha); | 198 bool parseHSLParameters(const CSSParserValue*, double* colorValues, bool par
seAlpha); |
196 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseColor(const CSSParserValue*,
bool acceptQuirkyColors = false); | 199 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseColor(const CSSParserValue*,
bool acceptQuirkyColors = false); |
197 bool parseColorFromValue(const CSSParserValue*, RGBA32&, bool acceptQuirkyCo
lors = false); | 200 bool parseColorFromValue(const CSSParserValue*, RGBA32&, bool acceptQuirkyCo
lors = false); |
198 | 201 |
199 bool acceptQuirkyColors(CSSPropertyID) const; | 202 bool acceptQuirkyColors(CSSPropertyID) const; |
200 | 203 |
201 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseLineHeight(); | 204 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseLineHeight(); |
202 bool parseFontSize(bool important); | 205 bool parseFontSize(bool important); |
203 bool parseFontVariant(bool important); | 206 PassRefPtrWillBeRawPtr<CSSValue> consumeFontVariant(); |
204 bool parseFontWeight(bool important); | 207 bool parseFontWeight(bool important); |
205 PassRefPtrWillBeRawPtr<CSSValueList> parseFontFaceSrc(); | 208 PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceSrc(); |
206 PassRefPtrWillBeRawPtr<CSSValueList> parseFontFaceUnicodeRange(); | |
207 | 209 |
208 bool parseSVGValue(CSSPropertyID propId, bool important); | 210 bool parseSVGValue(CSSPropertyID propId, bool important); |
209 PassRefPtrWillBeRawPtr<CSSValue> parseSVGStrokeDasharray(); | 211 PassRefPtrWillBeRawPtr<CSSValue> parseSVGStrokeDasharray(); |
210 | 212 |
211 PassRefPtrWillBeRawPtr<CSSValue> parsePaintOrder() const; | 213 PassRefPtrWillBeRawPtr<CSSValue> parsePaintOrder() const; |
212 | 214 |
213 // CSS3 Parsing Routines (for properties specific to CSS3) | 215 // CSS3 Parsing Routines (for properties specific to CSS3) |
214 PassRefPtrWillBeRawPtr<CSSValueList> parseShadow(CSSParserValueList*, CSSPro
pertyID); | 216 PassRefPtrWillBeRawPtr<CSSValueList> parseShadow(CSSParserValueList*, CSSPro
pertyID); |
215 PassRefPtrWillBeRawPtr<CSSShadowValue> parseSingleShadow(CSSParserValueList*
, bool allowInset, bool allowSpread); | 217 PassRefPtrWillBeRawPtr<CSSShadowValue> parseSingleShadow(CSSParserValueList*
, bool allowInset, bool allowSpread); |
216 bool parseBorderImageShorthand(CSSPropertyID, bool important); | 218 bool parseBorderImageShorthand(CSSPropertyID, bool important); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 PassRefPtrWillBeRawPtr<CSSValue> parseTextEmphasisStyle(); | 257 PassRefPtrWillBeRawPtr<CSSValue> parseTextEmphasisStyle(); |
256 | 258 |
257 PassRefPtrWillBeRawPtr<CSSValue> parseTouchAction(); | 259 PassRefPtrWillBeRawPtr<CSSValue> parseTouchAction(); |
258 | 260 |
259 PassRefPtrWillBeRawPtr<CSSValue> parseTextDecoration(); | 261 PassRefPtrWillBeRawPtr<CSSValue> parseTextDecoration(); |
260 | 262 |
261 PassRefPtrWillBeRawPtr<CSSValue> parseTextIndent(); | 263 PassRefPtrWillBeRawPtr<CSSValue> parseTextIndent(); |
262 | 264 |
263 bool parseCalculation(CSSParserValue*, ValueRange); | 265 bool parseCalculation(CSSParserValue*, ValueRange); |
264 | 266 |
265 bool parseFontFeatureTag(CSSValueList*); | |
266 PassRefPtrWillBeRawPtr<CSSValue> parseFontFeatureSettings(); | |
267 | |
268 bool parseFontVariantLigatures(bool important); | |
269 | |
270 bool parseGeneratedImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&)
; | 267 bool parseGeneratedImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&)
; |
271 | 268 |
272 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSPar
serValue*); | 269 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSPar
serValue*); |
273 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSPars
erValue*); | 270 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSPars
erValue*); |
274 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveCustomIdentValue(CS
SParserValue*); | 271 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveCustomIdentValue(CS
SParserValue*); |
275 | 272 |
276 PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const Strin
g& rawValue, const KURL&); | 273 PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const Strin
g& rawValue, const KURL&); |
277 | 274 |
278 PassRefPtrWillBeRawPtr<CSSBasicShape> parseInsetRoundedCorners(PassRefPtrWil
lBeRawPtr<CSSBasicShapeInset>, CSSParserValueList*); | 275 PassRefPtrWillBeRawPtr<CSSBasicShape> parseInsetRoundedCorners(PassRefPtrWil
lBeRawPtr<CSSBasicShapeInset>, CSSParserValueList*); |
279 | 276 |
280 enum SizeParameterType { | 277 enum SizeParameterType { |
281 None, | 278 None, |
282 Auto, | 279 Auto, |
283 Length, | 280 Length, |
284 PageSize, | 281 PageSize, |
285 Orientation, | 282 Orientation, |
286 }; | 283 }; |
287 | 284 |
288 PassRefPtrWillBeRawPtr<CSSValueList> parseSize(); | 285 PassRefPtrWillBeRawPtr<CSSValueList> parseSize(); |
289 SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserVa
lue*, SizeParameterType prevParamType); | 286 SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserVa
lue*, SizeParameterType prevParamType); |
290 | 287 |
291 bool parseFontFaceSrcURI(CSSValueList*); | 288 bool consumeFontFaceSrcURI(CSSValueList*); |
292 bool parseFontFaceSrcLocal(CSSValueList*); | 289 bool consumeFontFaceSrcLocal(CSSValueList*); |
293 | 290 |
294 class ImplicitScope { | 291 class ImplicitScope { |
295 STACK_ALLOCATED(); | 292 STACK_ALLOCATED(); |
296 WTF_MAKE_NONCOPYABLE(ImplicitScope); | 293 WTF_MAKE_NONCOPYABLE(ImplicitScope); |
297 public: | 294 public: |
298 ImplicitScope(CSSPropertyParser* parser) | 295 ImplicitScope(CSSPropertyParser* parser) |
299 : m_parser(parser) | 296 : m_parser(parser) |
300 { | 297 { |
301 m_parser->m_implicitShorthand = true; | 298 m_parser->m_implicitShorthand = true; |
302 } | 299 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 WillBeHeapVector<CSSProperty, 256>& m_parsedProperties; | 369 WillBeHeapVector<CSSProperty, 256>& m_parsedProperties; |
373 StyleRule::Type m_ruleType; | 370 StyleRule::Type m_ruleType; |
374 | 371 |
375 // Locals during parsing: | 372 // Locals during parsing: |
376 int m_inParseShorthand; | 373 int m_inParseShorthand; |
377 CSSPropertyID m_currentShorthand; | 374 CSSPropertyID m_currentShorthand; |
378 bool m_implicitShorthand; | 375 bool m_implicitShorthand; |
379 RefPtrWillBeMember<CSSCalcValue> m_parsedCalculation; | 376 RefPtrWillBeMember<CSSCalcValue> m_parsedCalculation; |
380 }; | 377 }; |
381 | 378 |
| 379 // FIXME(rwlbuis): move to CSSPropertyParser.cpp once |
| 380 // all font properties are converted. |
| 381 class FontFamilyValueBuilder { |
| 382 STACK_ALLOCATED(); |
| 383 public: |
| 384 FontFamilyValueBuilder(CSSValueList* list) |
| 385 : m_list(list) |
| 386 { |
| 387 } |
| 388 |
| 389 void add(const CSSParserString& string) |
| 390 { |
| 391 if (!m_builder.isEmpty()) |
| 392 m_builder.append(' '); |
| 393 |
| 394 if (string.is8Bit()) { |
| 395 m_builder.append(string.characters8(), string.length()); |
| 396 return; |
| 397 } |
| 398 |
| 399 m_builder.append(string.characters16(), string.length()); |
| 400 } |
| 401 |
| 402 void commit() |
| 403 { |
| 404 if (m_builder.isEmpty()) |
| 405 return; |
| 406 m_list->append(cssValuePool().createFontFamilyValue(m_builder.toString()
)); |
| 407 m_builder.clear(); |
| 408 } |
| 409 |
| 410 private: |
| 411 StringBuilder m_builder; |
| 412 RawPtrWillBeMember<CSSValueList> m_list; |
| 413 }; |
| 414 |
382 CSSPropertyID unresolvedCSSPropertyID(const CSSParserString&); | 415 CSSPropertyID unresolvedCSSPropertyID(const CSSParserString&); |
383 CSSValueID cssValueKeywordID(const CSSParserString&); | 416 CSSValueID cssValueKeywordID(const CSSParserString&); |
384 | 417 |
385 } // namespace blink | 418 } // namespace blink |
386 | 419 |
387 #endif // CSSPropertyParser_h | 420 #endif // CSSPropertyParser_h |
OLD | NEW |