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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp

Issue 1553363002: Move miscellaneous properties into CSSPropertyParser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 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 | « no previous file | third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/css/parser/CSSPropertyParser.h" 5 #include "core/css/parser/CSSPropertyParser.h"
6 6
7 #include "core/StylePropertyShorthand.h" 7 #include "core/StylePropertyShorthand.h"
8 #include "core/css/CSSCalculationValue.h" 8 #include "core/css/CSSCalculationValue.h"
9 #include "core/css/CSSCounterValue.h" 9 #include "core/css/CSSCounterValue.h"
10 #include "core/css/CSSCrossfadeValue.h" 10 #include "core/css/CSSCrossfadeValue.h"
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 return id == head || identMatches<tail...>(id); 288 return id == head || identMatches<tail...>(id);
289 } 289 }
290 290
291 template<CSSValueID... names> PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeI dent(CSSParserTokenRange& range) 291 template<CSSValueID... names> PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeI dent(CSSParserTokenRange& range)
292 { 292 {
293 if (range.peek().type() != IdentToken || !identMatches<names...>(range.peek( ).id())) 293 if (range.peek().type() != IdentToken || !identMatches<names...>(range.peek( ).id()))
294 return nullptr; 294 return nullptr;
295 return cssValuePool().createIdentifierValue(range.consumeIncludingWhitespace ().id()); 295 return cssValuePool().createIdentifierValue(range.consumeIncludingWhitespace ().id());
296 } 296 }
297 297
298 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeIdentRange(CSSParserToke nRange& range, CSSValueID lower, CSSValueID upper)
299 {
300 if (range.peek().id() < lower || range.peek().id() > upper)
301 return nullptr;
302 return consumeIdent(range);
303 }
304
298 static PassRefPtrWillBeRawPtr<CSSCustomIdentValue> consumeCustomIdent(CSSParserT okenRange& range) 305 static PassRefPtrWillBeRawPtr<CSSCustomIdentValue> consumeCustomIdent(CSSParserT okenRange& range)
299 { 306 {
300 if (range.peek().type() != IdentToken) 307 if (range.peek().type() != IdentToken)
301 return nullptr; 308 return nullptr;
302 return CSSCustomIdentValue::create(range.consumeIncludingWhitespace().value( )); 309 return CSSCustomIdentValue::create(range.consumeIncludingWhitespace().value( ));
303 } 310 }
304 311
305 static PassRefPtrWillBeRawPtr<CSSStringValue> consumeString(CSSParserTokenRange& range) 312 static PassRefPtrWillBeRawPtr<CSSStringValue> consumeString(CSSParserTokenRange& range)
306 { 313 {
307 if (range.peek().type() != StringToken) 314 if (range.peek().type() != StringToken)
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 if (range.peek().type() != IdentToken) 1107 if (range.peek().type() != IdentToken)
1101 return nullptr; 1108 return nullptr;
1102 String familyName = concatenateFamilyName(range); 1109 String familyName = concatenateFamilyName(range);
1103 if (familyName.isNull()) 1110 if (familyName.isNull())
1104 return nullptr; 1111 return nullptr;
1105 return cssValuePool().createFontFamilyValue(familyName); 1112 return cssValuePool().createFontFamilyValue(familyName);
1106 } 1113 }
1107 1114
1108 static PassRefPtrWillBeRawPtr<CSSValue> consumeGenericFamily(CSSParserTokenRange & range) 1115 static PassRefPtrWillBeRawPtr<CSSValue> consumeGenericFamily(CSSParserTokenRange & range)
1109 { 1116 {
1110 return consumeIdent<CSSValueSerif, CSSValueSansSerif, CSSValueCursive, CSSVa lueFantasy, CSSValueMonospace, CSSValueWebkitBody>(range); 1117 return consumeIdentRange(range, CSSValueSerif, CSSValueWebkitBody);
1111 } 1118 }
1112 1119
1113 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFamily(CSSParserTokenRang e& range) 1120 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFamily(CSSParserTokenRang e& range)
1114 { 1121 {
1115 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated() ; 1122 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated() ;
1116 do { 1123 do {
1117 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr; 1124 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
1118 if ((parsedValue = consumeGenericFamily(range))) { 1125 if ((parsedValue = consumeGenericFamily(range))) {
1119 list->append(parsedValue); 1126 list->append(parsedValue);
1120 } else if ((parsedValue = consumeFamilyName(range))) { 1127 } else if ((parsedValue = consumeFamilyName(range))) {
(...skipping 1063 matching lines...) Expand 10 before | Expand all | Expand 10 after
2184 percent = 0; 2191 percent = 0;
2185 else if (id == CSSValueCenter) 2192 else if (id == CSSValueCenter)
2186 percent = 50; 2193 percent = 50;
2187 else if (id == end) 2194 else if (id == end)
2188 percent = 100; 2195 percent = 100;
2189 else 2196 else
2190 return nullptr; 2197 return nullptr;
2191 range.consumeIncludingWhitespace(); 2198 range.consumeIncludingWhitespace();
2192 return cssValuePool().createValue(percent, CSSPrimitiveValue::UnitType:: Percentage); 2199 return cssValuePool().createValue(percent, CSSPrimitiveValue::UnitType:: Percentage);
2193 } 2200 }
2194 return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll, UnitlessQ uirk::Forbid); 2201 return consumeLengthOrPercent(range, cssParserMode, ValueRangeAll);
2195 } 2202 }
2196 2203
2197 static PassRefPtrWillBeRawPtr<CSSValue> consumePositionX(CSSParserTokenRange& ra nge, CSSParserMode cssParserMode) 2204 static PassRefPtrWillBeRawPtr<CSSValue> consumePositionX(CSSParserTokenRange& ra nge, CSSParserMode cssParserMode)
2198 { 2205 {
2199 return consumePositionLonghand<CSSValueLeft, CSSValueRight>(range, cssParser Mode); 2206 return consumePositionLonghand<CSSValueLeft, CSSValueRight>(range, cssParser Mode);
2200 } 2207 }
2201 2208
2202 static PassRefPtrWillBeRawPtr<CSSValue> consumePositionY(CSSParserTokenRange& ra nge, CSSParserMode cssParserMode) 2209 static PassRefPtrWillBeRawPtr<CSSValue> consumePositionY(CSSParserTokenRange& ra nge, CSSParserMode cssParserMode)
2203 { 2210 {
2204 return consumePositionLonghand<CSSValueTop, CSSValueBottom>(range, cssParser Mode); 2211 return consumePositionLonghand<CSSValueTop, CSSValueBottom>(range, cssParser Mode);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 dashes->append(dash.release()); 2316 dashes->append(dash.release());
2310 } while (!range.atEnd()); 2317 } while (!range.atEnd());
2311 return dashes.release(); 2318 return dashes.release();
2312 } 2319 }
2313 2320
2314 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBaselineShift(CSSParserT okenRange& range) 2321 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBaselineShift(CSSParserT okenRange& range)
2315 { 2322 {
2316 CSSValueID id = range.peek().id(); 2323 CSSValueID id = range.peek().id();
2317 if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper) 2324 if (id == CSSValueBaseline || id == CSSValueSub || id == CSSValueSuper)
2318 return consumeIdent(range); 2325 return consumeIdent(range);
2319 return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll, Unitle ssQuirk::Forbid); 2326 return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll);
2320 } 2327 }
2321 2328
2322 static PassRefPtrWillBeRawPtr<CSSValue> consumeImageSet(CSSParserTokenRange& ran ge, const CSSParserContext& context) 2329 static PassRefPtrWillBeRawPtr<CSSValue> consumeImageSet(CSSParserTokenRange& ran ge, const CSSParserContext& context)
2323 { 2330 {
2324 CSSParserTokenRange rangeCopy = range; 2331 CSSParserTokenRange rangeCopy = range;
2325 CSSParserTokenRange args = consumeFunction(rangeCopy); 2332 CSSParserTokenRange args = consumeFunction(rangeCopy);
2326 RefPtrWillBeRawPtr<CSSImageSetValue> imageSet = CSSImageSetValue::create(); 2333 RefPtrWillBeRawPtr<CSSImageSetValue> imageSet = CSSImageSetValue::create();
2327 do { 2334 do {
2328 AtomicString urlValue(consumeUrl(args)); 2335 AtomicString urlValue(consumeUrl(args));
2329 if (urlValue.isNull()) 2336 if (urlValue.isNull())
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after
2927 { 2934 {
2928 RefPtrWillBeRawPtr<CSSValue> parsedValue1 = consumeLengthOrPercent(range, cs sParserMode, ValueRangeNonNegative); 2935 RefPtrWillBeRawPtr<CSSValue> parsedValue1 = consumeLengthOrPercent(range, cs sParserMode, ValueRangeNonNegative);
2929 if (!parsedValue1) 2936 if (!parsedValue1)
2930 return nullptr; 2937 return nullptr;
2931 RefPtrWillBeRawPtr<CSSValue> parsedValue2 = consumeLengthOrPercent(range, cs sParserMode, ValueRangeNonNegative); 2938 RefPtrWillBeRawPtr<CSSValue> parsedValue2 = consumeLengthOrPercent(range, cs sParserMode, ValueRangeNonNegative);
2932 if (!parsedValue2) 2939 if (!parsedValue2)
2933 parsedValue2 = parsedValue1; 2940 parsedValue2 = parsedValue1;
2934 return CSSValuePair::create(parsedValue1.release(), parsedValue2.release(), CSSValuePair::DropIdenticalValues); 2941 return CSSValuePair::create(parsedValue1.release(), parsedValue2.release(), CSSValuePair::DropIdenticalValues);
2935 } 2942 }
2936 2943
2944 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeVerticalAlign(CSSParserT okenRange& range, CSSParserMode cssParserMode)
2945 {
2946 RefPtrWillBeRawPtr<CSSPrimitiveValue> parsedValue = consumeIdentRange(range, CSSValueBaseline, CSSValueWebkitBaselineMiddle);
2947 if (!parsedValue)
2948 parsedValue = consumeLengthOrPercent(range, cssParserMode, ValueRangeAll , UnitlessQuirk::Allow);
2949 return parsedValue.release();
2950 }
2951
2937 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty ID unresolvedProperty) 2952 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty ID unresolvedProperty)
2938 { 2953 {
2939 CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty); 2954 CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
2940 switch (property) { 2955 switch (property) {
2941 case CSSPropertyWillChange: 2956 case CSSPropertyWillChange:
2942 return consumeWillChange(m_range); 2957 return consumeWillChange(m_range);
2943 case CSSPropertyPage: 2958 case CSSPropertyPage:
2944 return consumePage(m_range); 2959 return consumePage(m_range);
2945 case CSSPropertyQuotes: 2960 case CSSPropertyQuotes:
2946 return consumeQuotes(m_range); 2961 return consumeQuotes(m_range);
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
3147 case CSSPropertyFlexShrink: 3162 case CSSPropertyFlexShrink:
3148 return consumeNumber(m_range, ValueRangeNonNegative); 3163 return consumeNumber(m_range, ValueRangeNonNegative);
3149 case CSSPropertyStrokeDasharray: 3164 case CSSPropertyStrokeDasharray:
3150 return consumeStrokeDasharray(m_range); 3165 return consumeStrokeDasharray(m_range);
3151 case CSSPropertyWebkitColumnRuleWidth: 3166 case CSSPropertyWebkitColumnRuleWidth:
3152 return consumeColumnRuleWidth(m_range, m_context.mode()); 3167 return consumeColumnRuleWidth(m_range, m_context.mode());
3153 case CSSPropertyStrokeOpacity: 3168 case CSSPropertyStrokeOpacity:
3154 case CSSPropertyFillOpacity: 3169 case CSSPropertyFillOpacity:
3155 case CSSPropertyStopOpacity: 3170 case CSSPropertyStopOpacity:
3156 case CSSPropertyFloodOpacity: 3171 case CSSPropertyFloodOpacity:
3172 case CSSPropertyOpacity:
3173 case CSSPropertyWebkitBoxFlex:
3157 return consumeNumber(m_range, ValueRangeAll); 3174 return consumeNumber(m_range, ValueRangeAll);
3158 case CSSPropertyBaselineShift: 3175 case CSSPropertyBaselineShift:
3159 return consumeBaselineShift(m_range); 3176 return consumeBaselineShift(m_range);
3160 case CSSPropertyStrokeMiterlimit: 3177 case CSSPropertyStrokeMiterlimit:
3161 return consumeNumber(m_range, ValueRangeNonNegative); 3178 return consumeNumber(m_range, ValueRangeNonNegative);
3162 case CSSPropertyStrokeWidth: 3179 case CSSPropertyStrokeWidth:
3163 case CSSPropertyStrokeDashoffset: 3180 case CSSPropertyStrokeDashoffset:
3164 case CSSPropertyCx: 3181 case CSSPropertyCx:
3165 case CSSPropertyCy: 3182 case CSSPropertyCy:
3166 case CSSPropertyX: 3183 case CSSPropertyX:
(...skipping 17 matching lines...) Expand all
3184 case CSSPropertyScrollSnapCoordinate: 3201 case CSSPropertyScrollSnapCoordinate:
3185 return consumeScrollSnapCoordinate(m_range, m_context.mode()); 3202 return consumeScrollSnapCoordinate(m_range, m_context.mode());
3186 case CSSPropertyScrollSnapPointsX: 3203 case CSSPropertyScrollSnapPointsX:
3187 case CSSPropertyScrollSnapPointsY: 3204 case CSSPropertyScrollSnapPointsY:
3188 return consumeScrollSnapPoints(m_range, m_context.mode()); 3205 return consumeScrollSnapPoints(m_range, m_context.mode());
3189 case CSSPropertyBorderTopRightRadius: 3206 case CSSPropertyBorderTopRightRadius:
3190 case CSSPropertyBorderTopLeftRadius: 3207 case CSSPropertyBorderTopLeftRadius:
3191 case CSSPropertyBorderBottomLeftRadius: 3208 case CSSPropertyBorderBottomLeftRadius:
3192 case CSSPropertyBorderBottomRightRadius: 3209 case CSSPropertyBorderBottomRightRadius:
3193 return consumeBorderRadiusCorner(m_range, m_context.mode()); 3210 return consumeBorderRadiusCorner(m_range, m_context.mode());
3211 case CSSPropertyWebkitBoxFlexGroup:
3212 return consumeInteger(m_range, 0);
3213 case CSSPropertyOrder:
3214 return consumeInteger(m_range);
3215 case CSSPropertyTextUnderlinePosition:
3216 // auto | [ under || [ left | right ] ], but we only support auto | unde r for now
3217 ASSERT(RuntimeEnabledFeatures::css3TextDecorationsEnabled());
3218 return consumeIdent<CSSValueAuto, CSSValueUnder>(m_range);
3219 case CSSPropertyVerticalAlign:
3220 return consumeVerticalAlign(m_range, m_context.mode());
3194 default: 3221 default:
3195 return nullptr; 3222 return nullptr;
3196 } 3223 }
3197 } 3224 }
3198 3225
3199 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse rTokenRange& range) 3226 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse rTokenRange& range)
3200 { 3227 {
3201 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated (); 3228 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated ();
3202 3229
3203 do { 3230 do {
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
3840 addProperty(CSSPropertyBorderBottomLeftRadius, CSSValuePair::create(hori zontalRadii[3].release(), verticalRadii[3].release(), CSSValuePair::DropIdentica lValues), important); 3867 addProperty(CSSPropertyBorderBottomLeftRadius, CSSValuePair::create(hori zontalRadii[3].release(), verticalRadii[3].release(), CSSValuePair::DropIdentica lValues), important);
3841 return true; 3868 return true;
3842 } 3869 }
3843 default: 3870 default:
3844 m_currentShorthand = oldShorthand; 3871 m_currentShorthand = oldShorthand;
3845 return false; 3872 return false;
3846 } 3873 }
3847 } 3874 }
3848 3875
3849 } // namespace blink 3876 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698