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

Side by Side Diff: Source/core/css/parser/CSSPropertyParser.h

Issue 764703002: Support unit-less lengths for white-list of properties only. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: min-width/height still accepts unitless lengths Created 5 years, 11 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
« no previous file with comments | « Source/core/css/parser/CSSParserMode.h ('k') | Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 class CSSBasicShapeInset; 49 class CSSBasicShapeInset;
50 class CSSGridLineNamesValue; 50 class CSSGridLineNamesValue;
51 class StylePropertyShorthand; 51 class StylePropertyShorthand;
52 52
53 // Inputs: PropertyID, isImportant bool, CSSParserValueList. 53 // Inputs: PropertyID, isImportant bool, CSSParserValueList.
54 // Outputs: Vector of CSSProperties 54 // Outputs: Vector of CSSProperties
55 55
56 class CSSPropertyParser { 56 class CSSPropertyParser {
57 STACK_ALLOCATED(); 57 STACK_ALLOCATED();
58 public: 58 public:
59
60 enum Units {
61 FUnknown = 0x0000,
62 FInteger = 0x0001,
63 FNumber = 0x0002, // Real Numbers
64 FPercent = 0x0004,
65 FLength = 0x0008,
66 FAngle = 0x0010,
67 FTime = 0x0020,
68 FFrequency = 0x0040,
69 FPositiveInteger = 0x0080,
70 FRelative = 0x0100,
71 FResolution = 0x0200,
72 FNonNeg = 0x0400,
73 FUnitlessQuirk = 0x0800
74 };
75
59 static bool parseValue(CSSPropertyID, bool important, 76 static bool parseValue(CSSPropertyID, bool important,
60 CSSParserValueList*, const CSSParserContext&, bool inViewport, 77 CSSParserValueList*, const CSSParserContext&, bool inViewport,
61 WillBeHeapVector<CSSProperty, 256>&, CSSRuleSourceData::Type); 78 WillBeHeapVector<CSSProperty, 256>&, CSSRuleSourceData::Type);
62 79
63 // FIXME: This should probably move to CSSParserFastPaths 80 // FIXME: This should probably move to CSSParserFastPaths
64 template<typename StringType> 81 template<typename StringType>
65 static bool fastParseColor(RGBA32&, const StringType&, bool strict); 82 static bool fastParseColor(RGBA32&, const StringType&, bool strict);
66 83
67 static bool isSystemColor(int id); 84 static bool isSystemColor(int id);
68 85
(...skipping 25 matching lines...) Expand all
94 PassRefPtrWillBeRawPtr<CSSValue> parseQuotes(); 111 PassRefPtrWillBeRawPtr<CSSValue> parseQuotes();
95 112
96 PassRefPtrWillBeRawPtr<CSSValue> parseAttr(CSSParserValueList* args); 113 PassRefPtrWillBeRawPtr<CSSValue> parseAttr(CSSParserValueList* args);
97 114
98 PassRefPtrWillBeRawPtr<CSSValue> parseBackgroundColor(); 115 PassRefPtrWillBeRawPtr<CSSValue> parseBackgroundColor();
99 116
100 bool parseFillImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 117 bool parseFillImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&);
101 118
102 enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 }; 119 enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 };
103 enum FillPositionParsingMode { ResolveValuesAsPercent = 0, ResolveValuesAsKe yword = 1 }; 120 enum FillPositionParsingMode { ResolveValuesAsPercent = 0, ResolveValuesAsKe yword = 1 };
104 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseFillPositionComponent(CSSPars erValueList*, unsigned& cumulativeFlags, FillPositionFlag& individualFlag, FillP ositionParsingMode = ResolveValuesAsPercent); 121 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseFillPositionComponent(CSSPars erValueList*, unsigned& cumulativeFlags, FillPositionFlag& individualFlag, FillP ositionParsingMode = ResolveValuesAsPercent, Units = FUnknown);
105 PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionX(CSSParserValueList*); 122 PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionX(CSSParserValueList*);
106 PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionY(CSSParserValueList*); 123 PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionY(CSSParserValueList*);
107 void parse2ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&); 124 void parse2ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&, Units = FUnknown);
108 bool isPotentialPositionValue(CSSParserValue*); 125 bool isPotentialPositionValue(CSSParserValue*);
109 void parseFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, R efPtrWillBeRawPtr<CSSValue>&); 126 void parseFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, R efPtrWillBeRawPtr<CSSValue>&, Units = FUnknown);
110 void parse3ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>); 127 void parse3ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>);
111 void parse4ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>); 128 void parse4ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSVal ue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>);
112 129
113 void parseFillRepeat(RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSVa lue>&); 130 void parseFillRepeat(RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSVa lue>&);
114 PassRefPtrWillBeRawPtr<CSSValue> parseFillSize(CSSPropertyID, bool &allowCom ma); 131 PassRefPtrWillBeRawPtr<CSSValue> parseFillSize(CSSPropertyID, bool &allowCom ma);
115 132
116 bool parseFillProperty(CSSPropertyID propId, CSSPropertyID& propId1, CSSProp ertyID& propId2, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); 133 bool parseFillProperty(CSSPropertyID propId, CSSPropertyID& propId1, CSSProp ertyID& propId2, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&);
117 bool parseFillShorthand(CSSPropertyID, const CSSPropertyID* properties, int numProperties, bool important); 134 bool parseFillShorthand(CSSPropertyID, const CSSPropertyID* properties, int numProperties, bool important);
118 135
119 void addFillValue(RefPtrWillBeRawPtr<CSSValue>& lval, PassRefPtrWillBeRawPtr <CSSValue> rval); 136 void addFillValue(RefPtrWillBeRawPtr<CSSValue>& lval, PassRefPtrWillBeRawPtr <CSSValue> rval);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 273
257 bool parseFontVariantLigatures(bool important); 274 bool parseFontVariantLigatures(bool important);
258 275
259 bool parseGeneratedImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&) ; 276 bool parseGeneratedImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&) ;
260 277
261 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSPar serValue*); 278 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSPar serValue*);
262 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSPars erValue*); 279 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSPars erValue*);
263 280
264 PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const Strin g& rawValue, const KURL&); 281 PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const Strin g& rawValue, const KURL&);
265 282
266 bool validWidthOrHeight(CSSParserValue*);
267
268 PassRefPtrWillBeRawPtr<CSSBasicShape> parseInsetRoundedCorners(PassRefPtrWil lBeRawPtr<CSSBasicShapeInset>, CSSParserValueList*); 283 PassRefPtrWillBeRawPtr<CSSBasicShape> parseInsetRoundedCorners(PassRefPtrWil lBeRawPtr<CSSBasicShapeInset>, CSSParserValueList*);
269 284
270 enum SizeParameterType { 285 enum SizeParameterType {
271 None, 286 None,
272 Auto, 287 Auto,
273 Length, 288 Length,
274 PageSize, 289 PageSize,
275 Orientation, 290 Orientation,
276 }; 291 };
277 292
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 332
318 private: 333 private:
319 CSSPropertyParser* m_parser; 334 CSSPropertyParser* m_parser;
320 }; 335 };
321 336
322 enum ReleaseParsedCalcValueCondition { 337 enum ReleaseParsedCalcValueCondition {
323 ReleaseParsedCalcValue, 338 ReleaseParsedCalcValue,
324 DoNotReleaseParsedCalcValue 339 DoNotReleaseParsedCalcValue
325 }; 340 };
326 341
327 enum Units {
328 FUnknown = 0x0000,
329 FInteger = 0x0001,
330 FNumber = 0x0002, // Real Numbers
331 FPercent = 0x0004,
332 FLength = 0x0008,
333 FAngle = 0x0010,
334 FTime = 0x0020,
335 FFrequency = 0x0040,
336 FPositiveInteger = 0x0080,
337 FRelative = 0x0100,
338 FResolution = 0x0200,
339 FNonNeg = 0x0400
340 };
341
342 friend inline Units operator|(Units a, Units b) 342 friend inline Units operator|(Units a, Units b)
343 { 343 {
344 return static_cast<Units>(static_cast<unsigned>(a) | static_cast<unsigne d>(b)); 344 return static_cast<Units>(static_cast<unsigned>(a) | static_cast<unsigne d>(b));
345 } 345 }
346 346
347 bool validWidthOrHeight(CSSParserValue*, Units);
348
347 bool validCalculationUnit(CSSParserValue*, Units, ReleaseParsedCalcValueCond ition releaseCalc = DoNotReleaseParsedCalcValue); 349 bool validCalculationUnit(CSSParserValue*, Units, ReleaseParsedCalcValueCond ition releaseCalc = DoNotReleaseParsedCalcValue);
348 350
349 bool shouldAcceptUnitLessValues(CSSParserValue*, Units, CSSParserMode); 351 bool shouldAcceptUnitLessValues(CSSParserValue*, Units, CSSParserMode);
350 352
351 inline bool validUnit(CSSParserValue* value, Units unitflags, ReleaseParsedC alcValueCondition releaseCalc = DoNotReleaseParsedCalcValue) { return validUnit( value, unitflags, m_context.mode(), releaseCalc); } 353 inline bool validUnit(CSSParserValue* value, Units unitflags, ReleaseParsedC alcValueCondition releaseCalc = DoNotReleaseParsedCalcValue) { return validUnit( value, unitflags, m_context.mode(), releaseCalc); }
352 bool validUnit(CSSParserValue*, Units, CSSParserMode, ReleaseParsedCalcValue Condition releaseCalc = DoNotReleaseParsedCalcValue); 354 bool validUnit(CSSParserValue*, Units, CSSParserMode, ReleaseParsedCalcValue Condition releaseCalc = DoNotReleaseParsedCalcValue);
353 355
354 bool parseBorderImageQuad(Units, RefPtrWillBeRawPtr<CSSPrimitiveValue>&); 356 bool parseBorderImageQuad(Units, RefPtrWillBeRawPtr<CSSPrimitiveValue>&);
355 int colorIntFromValue(CSSParserValue*); 357 int colorIntFromValue(CSSParserValue*);
356 bool isCalculation(CSSParserValue*); 358 bool isCalculation(CSSParserValue*);
(...skipping 25 matching lines...) Expand all
382 friend PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseGradientColorOrKeyword (CSSPropertyParser*, CSSParserValue*); 384 friend PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseGradientColorOrKeyword (CSSPropertyParser*, CSSParserValue*);
383 }; 385 };
384 386
385 CSSPropertyID cssPropertyID(const CSSParserString&); 387 CSSPropertyID cssPropertyID(const CSSParserString&);
386 CSSPropertyID cssPropertyID(const String&); 388 CSSPropertyID cssPropertyID(const String&);
387 CSSValueID cssValueKeywordID(const CSSParserString&); 389 CSSValueID cssValueKeywordID(const CSSParserString&);
388 390
389 } // namespace blink 391 } // namespace blink
390 392
391 #endif // CSSPropertyParser_h 393 #endif // CSSPropertyParser_h
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSParserMode.h ('k') | Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698