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

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

Issue 1216523006: Only allow the -webkit-text color keyword in quirks/UA-sheet mode (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | 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) 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 1330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 break; 1341 break;
1342 1342
1343 // End Apple-specific properties 1343 // End Apple-specific properties
1344 1344
1345 case CSSPropertyWebkitAppRegion: 1345 case CSSPropertyWebkitAppRegion:
1346 if (id >= CSSValueDrag && id <= CSSValueNoDrag) 1346 if (id >= CSSValueDrag && id <= CSSValueNoDrag)
1347 validPrimitive = true; 1347 validPrimitive = true;
1348 break; 1348 break;
1349 1349
1350 case CSSPropertyWebkitTapHighlightColor: 1350 case CSSPropertyWebkitTapHighlightColor:
1351 parsedValue = parseTapHighlightColor(m_valueList->current()); 1351 parsedValue = parseColor(m_valueList->current());
1352 if (parsedValue) 1352 if (parsedValue)
1353 m_valueList->next(); 1353 m_valueList->next();
1354 break; 1354 break;
1355 1355
1356 /* shorthand properties */ 1356 /* shorthand properties */
1357 case CSSPropertyBackground: { 1357 case CSSPropertyBackground: {
1358 // Position must come before color in this array because a plain old "0" is a legal color 1358 // Position must come before color in this array because a plain old "0" is a legal color
1359 // in quirks mode but it's usually the X coordinate of a position. 1359 // in quirks mode but it's usually the X coordinate of a position.
1360 const CSSPropertyID properties[] = { CSSPropertyBackgroundImage, CSSProp ertyBackgroundRepeat, 1360 const CSSPropertyID properties[] = { CSSPropertyBackgroundImage, CSSProp ertyBackgroundRepeat,
1361 CSSPropertyBackgroundAttachment, CSSPropertyB ackgroundPosition, CSSPropertyBackgroundOrigin, 1361 CSSPropertyBackgroundAttachment, CSSPropertyB ackgroundPosition, CSSPropertyBackgroundOrigin,
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after
2319 if (!isValueAllowedInMode(id, m_context.mode())) 2319 if (!isValueAllowedInMode(id, m_context.mode()))
2320 return nullptr; 2320 return nullptr;
2321 return cssValuePool().createIdentifierValue(id); 2321 return cssValuePool().createIdentifierValue(id);
2322 } 2322 }
2323 RGBA32 c = Color::transparent; 2323 RGBA32 c = Color::transparent;
2324 if (!parseColorFromValue(value, c, acceptQuirkyColors)) 2324 if (!parseColorFromValue(value, c, acceptQuirkyColors))
2325 return nullptr; 2325 return nullptr;
2326 return cssValuePool().createColorValue(c); 2326 return cssValuePool().createColorValue(c);
2327 } 2327 }
2328 2328
2329 // Used to parse background-color when part of a shorthand.
2330 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseBackgroundColo r(const CSSParserValue* value)
2331 {
2332 CSSValueID id = value->id;
2333 // Allow -webkit-text regardless of quirks.
2334 if (id == CSSValueWebkitText)
2335 return cssValuePool().createIdentifierValue(id);
2336 return parseColor(value);
2337 }
2338
2339 // Used to parse the '-webkit-tap-highlight-color' property.
2340 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseTapHighlightCo lor(const CSSParserValue* value)
2341 {
2342 CSSValueID id = value->id;
2343 // Disallow -webkit-text regardless of quirks.
2344 if (id == CSSValueWebkitText)
2345 return nullptr;
2346 return parseColor(value);
2347 }
2348
2349 // Used to parse <color> for CSS gradients.
2350 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseGradientStopCo lor(const CSSParserValue* value)
2351 {
2352 CSSValueID id = value->id;
2353 // Allow -webkit-text regardless of quirks.
2354 if (id == CSSValueWebkitText)
2355 return cssValuePool().createIdentifierValue(id);
2356 return parseColor(value);
2357 }
2358
2359 // Used to parse colors for -webkit-gradient(...).
2360 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseDeprecatedGrad ientStopColor(const CSSParserValue* value)
2361 {
2362 // Disallow currentcolor.
2363 if (value->id == CSSValueCurrentcolor)
2364 return nullptr;
2365 return parseGradientStopColor(value);
2366 }
2367
2368 bool CSSPropertyParser::parseFillImage(CSSParserValueList* valueList, RefPtrWill BeRawPtr<CSSValue>& value) 2329 bool CSSPropertyParser::parseFillImage(CSSParserValueList* valueList, RefPtrWill BeRawPtr<CSSValue>& value)
2369 { 2330 {
2370 if (valueList->current()->id == CSSValueNone) { 2331 if (valueList->current()->id == CSSValueNone) {
2371 value = cssValuePool().createIdentifierValue(CSSValueNone); 2332 value = cssValuePool().createIdentifierValue(CSSValueNone);
2372 return true; 2333 return true;
2373 } 2334 }
2374 if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) { 2335 if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) {
2375 value = createCSSImageValueWithReferrer(valueList->current()->string, co mpleteURL(valueList->current()->string)); 2336 value = createCSSImageValueWithReferrer(valueList->current()->string, co mpleteURL(valueList->current()->string));
2376 return true; 2337 return true;
2377 } 2338 }
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
2846 while (true) { 2807 while (true) {
2847 RefPtrWillBeRawPtr<CSSValue> currValue = nullptr; 2808 RefPtrWillBeRawPtr<CSSValue> currValue = nullptr;
2848 RefPtrWillBeRawPtr<CSSValue> currValue2 = nullptr; 2809 RefPtrWillBeRawPtr<CSSValue> currValue2 = nullptr;
2849 2810
2850 Units unitless = FUnknown; 2811 Units unitless = FUnknown;
2851 CSSParserValue* val = m_valueList->current(); 2812 CSSParserValue* val = m_valueList->current();
2852 ASSERT(val); 2813 ASSERT(val);
2853 2814
2854 switch (propId) { 2815 switch (propId) {
2855 case CSSPropertyBackgroundColor: 2816 case CSSPropertyBackgroundColor:
2856 currValue = parseBackgroundColor(val); 2817 currValue = parseColor(val);
2857 if (currValue) 2818 if (currValue)
2858 m_valueList->next(); 2819 m_valueList->next();
2859 break; 2820 break;
2860 case CSSPropertyBackgroundAttachment: 2821 case CSSPropertyBackgroundAttachment:
2861 if (val->id == CSSValueScroll || val->id == CSSValueFixed || val->id == CSSValueLocal) { 2822 if (val->id == CSSValueScroll || val->id == CSSValueFixed || val->id == CSSValueLocal) {
2862 currValue = cssValuePool().createIdentifierValue(val->id); 2823 currValue = cssValuePool().createIdentifierValue(val->id);
2863 m_valueList->next(); 2824 m_valueList->next();
2864 } 2825 }
2865 break; 2826 break;
2866 case CSSPropertyBackgroundImage: 2827 case CSSPropertyBackgroundImage:
(...skipping 3183 matching lines...) Expand 10 before | Expand all | Expand 10 after
6050 || (a->id == CSSValueBottom && !horizontal)) 6011 || (a->id == CSSValueBottom && !horizontal))
6051 result = cssValuePool().createValue(100., CSSPrimitiveValue::CSS_PER CENTAGE); 6012 result = cssValuePool().createValue(100., CSSPrimitiveValue::CSS_PER CENTAGE);
6052 else if (a->id == CSSValueCenter) 6013 else if (a->id == CSSValueCenter)
6053 result = cssValuePool().createValue(50., CSSPrimitiveValue::CSS_PERC ENTAGE); 6014 result = cssValuePool().createValue(50., CSSPrimitiveValue::CSS_PERC ENTAGE);
6054 } else if (a->unit == CSSPrimitiveValue::CSS_NUMBER || a->unit == CSSPrimiti veValue::CSS_PERCENTAGE) { 6015 } else if (a->unit == CSSPrimitiveValue::CSS_NUMBER || a->unit == CSSPrimiti veValue::CSS_PERCENTAGE) {
6055 result = cssValuePool().createValue(a->fValue, static_cast<CSSPrimitiveV alue::UnitType>(a->unit)); 6016 result = cssValuePool().createValue(a->fValue, static_cast<CSSPrimitiveV alue::UnitType>(a->unit));
6056 } 6017 }
6057 return result; 6018 return result;
6058 } 6019 }
6059 6020
6021 // Used to parse colors for -webkit-gradient(...).
6022 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseDeprecatedGrad ientStopColor(const CSSParserValue* value)
6023 {
6024 // Disallow currentcolor.
6025 if (value->id == CSSValueCurrentcolor)
6026 return nullptr;
6027 return parseColor(value);
6028 }
6029
6060 bool CSSPropertyParser::parseDeprecatedGradientColorStop(CSSParserValue* a, CSSG radientColorStop& stop) 6030 bool CSSPropertyParser::parseDeprecatedGradientColorStop(CSSParserValue* a, CSSG radientColorStop& stop)
6061 { 6031 {
6062 if (a->unit != CSSParserValue::Function) 6032 if (a->unit != CSSParserValue::Function)
6063 return false; 6033 return false;
6064 6034
6065 if (a->function->id != CSSValueFrom 6035 if (a->function->id != CSSValueFrom
6066 && a->function->id != CSSValueTo 6036 && a->function->id != CSSValueTo
6067 && a->function->id != CSSValueColorStop) 6037 && a->function->id != CSSValueColorStop)
6068 return false; 6038 return false;
6069 6039
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
6661 return false; 6631 return false;
6662 6632
6663 a = valueList->next(); 6633 a = valueList->next();
6664 if (!a) 6634 if (!a)
6665 return false; 6635 return false;
6666 } 6636 }
6667 6637
6668 // <color-stop> = <color> [ <percentage> | <length> ]? 6638 // <color-stop> = <color> [ <percentage> | <length> ]?
6669 // <color-hint> = <length> | <percentage> 6639 // <color-hint> = <length> | <percentage>
6670 CSSGradientColorStop stop; 6640 CSSGradientColorStop stop;
6671 stop.m_color = parseGradientStopColor(a); 6641 stop.m_color = parseColor(a);
6672 6642
6673 // Two hints in a row are not allowed. 6643 // Two hints in a row are not allowed.
6674 if (!stop.m_color && (!supportsColorHints || previousStopWasColorHint)) 6644 if (!stop.m_color && (!supportsColorHints || previousStopWasColorHint))
6675 return false; 6645 return false;
6676 previousStopWasColorHint = !stop.m_color; 6646 previousStopWasColorHint = !stop.m_color;
6677 6647
6678 if (stop.m_color) 6648 if (stop.m_color)
6679 a = valueList->next(); 6649 a = valueList->next();
6680 6650
6681 if (a) { 6651 if (a) {
(...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after
8262 } 8232 }
8263 } 8233 }
8264 8234
8265 if (!list->length()) 8235 if (!list->length())
8266 return nullptr; 8236 return nullptr;
8267 8237
8268 return list.release(); 8238 return list.release();
8269 } 8239 }
8270 8240
8271 } // namespace blink 8241 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698