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

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

Issue 603443002: Don't add '(' to FUNCTION token names (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@internalsetshadowunused
Patch Set: Created 6 years, 3 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
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 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 { 361 {
362 ASSERT(value); 362 ASSERT(value);
363 return value->unit == CSSParserValue::Operator && value->iValue == '/'; 363 return value->unit == CSSParserValue::Operator && value->iValue == '/';
364 } 364 }
365 365
366 static bool isGeneratedImageValue(CSSParserValue* val) 366 static bool isGeneratedImageValue(CSSParserValue* val)
367 { 367 {
368 if (val->unit != CSSParserValue::Function) 368 if (val->unit != CSSParserValue::Function)
369 return false; 369 return false;
370 370
371 return equalIgnoringCase(val->function->name, "-webkit-gradient(") 371 return equalIgnoringCase(val->function->name, "-webkit-gradient")
372 || equalIgnoringCase(val->function->name, "-webkit-linear-gradient(") 372 || equalIgnoringCase(val->function->name, "-webkit-linear-gradient")
373 || equalIgnoringCase(val->function->name, "linear-gradient(") 373 || equalIgnoringCase(val->function->name, "linear-gradient")
374 || equalIgnoringCase(val->function->name, "-webkit-repeating-linear-grad ient(") 374 || equalIgnoringCase(val->function->name, "-webkit-repeating-linear-grad ient")
375 || equalIgnoringCase(val->function->name, "repeating-linear-gradient(") 375 || equalIgnoringCase(val->function->name, "repeating-linear-gradient")
376 || equalIgnoringCase(val->function->name, "-webkit-radial-gradient(") 376 || equalIgnoringCase(val->function->name, "-webkit-radial-gradient")
377 || equalIgnoringCase(val->function->name, "radial-gradient(") 377 || equalIgnoringCase(val->function->name, "radial-gradient")
378 || equalIgnoringCase(val->function->name, "-webkit-repeating-radial-grad ient(") 378 || equalIgnoringCase(val->function->name, "-webkit-repeating-radial-grad ient")
379 || equalIgnoringCase(val->function->name, "repeating-radial-gradient(") 379 || equalIgnoringCase(val->function->name, "repeating-radial-gradient")
380 || equalIgnoringCase(val->function->name, "-webkit-canvas(") 380 || equalIgnoringCase(val->function->name, "-webkit-canvas")
381 || equalIgnoringCase(val->function->name, "-webkit-cross-fade("); 381 || equalIgnoringCase(val->function->name, "-webkit-cross-fade");
382 } 382 }
383 383
384 bool CSSPropertyParser::validWidthOrHeight(CSSParserValue* value) 384 bool CSSPropertyParser::validWidthOrHeight(CSSParserValue* value)
385 { 385 {
386 int id = value->id; 386 int id = value->id;
387 if (id == CSSValueIntrinsic || id == CSSValueMinIntrinsic || id == CSSValueW ebkitMinContent || id == CSSValueWebkitMaxContent || id == CSSValueWebkitFillAva ilable || id == CSSValueWebkitFitContent) 387 if (id == CSSValueIntrinsic || id == CSSValueMinIntrinsic || id == CSSValueW ebkitMinContent || id == CSSValueWebkitMaxContent || id == CSSValueWebkitFillAva ilable || id == CSSValueWebkitFitContent)
388 return true; 388 return true;
389 return !id && validUnit(value, FLength | FPercent | FNonNeg); 389 return !id && validUnit(value, FLength | FPercent | FNonNeg);
390 } 390 }
391 391
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 // ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | tex t | wait | help | 629 // ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | tex t | wait | help |
630 // vertical-text | cell | context-menu | alias | copy | no-drop | not-al lowed | all-scroll | 630 // vertical-text | cell | context-menu | alias | copy | no-drop | not-al lowed | all-scroll |
631 // zoom-in | zoom-out | -webkit-grab | -webkit-grabbing | -webkit-zoom-i n | -webkit-zoom-out ] ] | inherit 631 // zoom-in | zoom-out | -webkit-grab | -webkit-grabbing | -webkit-zoom-i n | -webkit-zoom-out ] ] | inherit
632 RefPtrWillBeRawPtr<CSSValueList> list = nullptr; 632 RefPtrWillBeRawPtr<CSSValueList> list = nullptr;
633 while (value) { 633 while (value) {
634 RefPtrWillBeRawPtr<CSSValue> image = nullptr; 634 RefPtrWillBeRawPtr<CSSValue> image = nullptr;
635 if (value->unit == CSSPrimitiveValue::CSS_URI) { 635 if (value->unit == CSSPrimitiveValue::CSS_URI) {
636 String uri = value->string; 636 String uri = value->string;
637 if (!uri.isNull()) 637 if (!uri.isNull())
638 image = createCSSImageValueWithReferrer(uri, completeURL(uri )); 638 image = createCSSImageValueWithReferrer(uri, completeURL(uri ));
639 } else if (value->unit == CSSParserValue::Function && equalIgnoringC ase(value->function->name, "-webkit-image-set(")) { 639 } else if (value->unit == CSSParserValue::Function && equalIgnoringC ase(value->function->name, "-webkit-image-set")) {
640 image = parseImageSet(m_valueList); 640 image = parseImageSet(m_valueList);
641 if (!image) 641 if (!image)
642 break; 642 break;
643 } else 643 } else
644 break; 644 break;
645 645
646 Vector<int> coords; 646 Vector<int> coords;
647 value = m_valueList->next(); 647 value = m_valueList->next();
648 while (value && validUnit(value, FNumber)) { 648 while (value && validUnit(value, FNumber)) {
649 coords.append(int(value->fValue)); 649 coords.append(int(value->fValue));
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 m_valueList->next(); 760 m_valueList->next();
761 } else if (value->unit == CSSPrimitiveValue::CSS_URI) { 761 } else if (value->unit == CSSPrimitiveValue::CSS_URI) {
762 parsedValue = createCSSImageValueWithReferrer(value->string, complet eURL(value->string)); 762 parsedValue = createCSSImageValueWithReferrer(value->string, complet eURL(value->string));
763 m_valueList->next(); 763 m_valueList->next();
764 } else if (isGeneratedImageValue(value)) { 764 } else if (isGeneratedImageValue(value)) {
765 if (parseGeneratedImage(m_valueList, parsedValue)) 765 if (parseGeneratedImage(m_valueList, parsedValue))
766 m_valueList->next(); 766 m_valueList->next();
767 else 767 else
768 return false; 768 return false;
769 } 769 }
770 else if (value->unit == CSSParserValue::Function && equalIgnoringCase(va lue->function->name, "-webkit-image-set(")) { 770 else if (value->unit == CSSParserValue::Function && equalIgnoringCase(va lue->function->name, "-webkit-image-set")) {
771 parsedValue = parseImageSet(m_valueList); 771 parsedValue = parseImageSet(m_valueList);
772 if (!parsedValue) 772 if (!parsedValue)
773 return false; 773 return false;
774 m_valueList->next(); 774 m_valueList->next();
775 } 775 }
776 break; 776 break;
777 777
778 case CSSPropertyWebkitTextStrokeWidth: 778 case CSSPropertyWebkitTextStrokeWidth:
779 case CSSPropertyOutlineWidth: // <border-width> | inherit 779 case CSSPropertyOutlineWidth: // <border-width> | inherit
780 case CSSPropertyBorderTopWidth: //// <border-width> | inherit 780 case CSSPropertyBorderTopWidth: //// <border-width> | inherit
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after
2150 while (CSSParserValue* val = m_valueList->current()) { 2150 while (CSSParserValue* val = m_valueList->current()) {
2151 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr; 2151 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
2152 if (val->unit == CSSPrimitiveValue::CSS_URI) { 2152 if (val->unit == CSSPrimitiveValue::CSS_URI) {
2153 // url 2153 // url
2154 parsedValue = createCSSImageValueWithReferrer(val->string, completeU RL(val->string)); 2154 parsedValue = createCSSImageValueWithReferrer(val->string, completeU RL(val->string));
2155 } else if (val->unit == CSSParserValue::Function) { 2155 } else if (val->unit == CSSParserValue::Function) {
2156 // attr(X) | counter(X [,Y]) | counters(X, Y, [,Z]) | -webkit-gradie nt(...) 2156 // attr(X) | counter(X [,Y]) | counters(X, Y, [,Z]) | -webkit-gradie nt(...)
2157 CSSParserValueList* args = val->function->args.get(); 2157 CSSParserValueList* args = val->function->args.get();
2158 if (!args) 2158 if (!args)
2159 return false; 2159 return false;
2160 if (equalIgnoringCase(val->function->name, "attr(")) { 2160 if (equalIgnoringCase(val->function->name, "attr")) {
2161 parsedValue = parseAttr(args); 2161 parsedValue = parseAttr(args);
2162 if (!parsedValue) 2162 if (!parsedValue)
2163 return false; 2163 return false;
2164 } else if (equalIgnoringCase(val->function->name, "counter(")) { 2164 } else if (equalIgnoringCase(val->function->name, "counter")) {
2165 parsedValue = parseCounterContent(args, false); 2165 parsedValue = parseCounterContent(args, false);
2166 if (!parsedValue) 2166 if (!parsedValue)
2167 return false; 2167 return false;
2168 } else if (equalIgnoringCase(val->function->name, "counters(")) { 2168 } else if (equalIgnoringCase(val->function->name, "counters")) {
2169 parsedValue = parseCounterContent(args, true); 2169 parsedValue = parseCounterContent(args, true);
2170 if (!parsedValue) 2170 if (!parsedValue)
2171 return false; 2171 return false;
2172 } else if (equalIgnoringCase(val->function->name, "-webkit-image-set (")) { 2172 } else if (equalIgnoringCase(val->function->name, "-webkit-image-set ")) {
2173 parsedValue = parseImageSet(m_valueList); 2173 parsedValue = parseImageSet(m_valueList);
2174 if (!parsedValue) 2174 if (!parsedValue)
2175 return false; 2175 return false;
2176 } else if (isGeneratedImageValue(val)) { 2176 } else if (isGeneratedImageValue(val)) {
2177 if (!parseGeneratedImage(m_valueList, parsedValue)) 2177 if (!parseGeneratedImage(m_valueList, parsedValue))
2178 return false; 2178 return false;
2179 } else 2179 } else
2180 return false; 2180 return false;
2181 } else if (val->unit == CSSPrimitiveValue::CSS_IDENT) { 2181 } else if (val->unit == CSSPrimitiveValue::CSS_IDENT) {
2182 switch (val->id) { 2182 switch (val->id) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2247 return true; 2247 return true;
2248 } 2248 }
2249 if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) { 2249 if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) {
2250 value = createCSSImageValueWithReferrer(valueList->current()->string, co mpleteURL(valueList->current()->string)); 2250 value = createCSSImageValueWithReferrer(valueList->current()->string, co mpleteURL(valueList->current()->string));
2251 return true; 2251 return true;
2252 } 2252 }
2253 2253
2254 if (isGeneratedImageValue(valueList->current())) 2254 if (isGeneratedImageValue(valueList->current()))
2255 return parseGeneratedImage(valueList, value); 2255 return parseGeneratedImage(valueList, value);
2256 2256
2257 if (valueList->current()->unit == CSSParserValue::Function && equalIgnoringC ase(valueList->current()->function->name, "-webkit-image-set(")) { 2257 if (valueList->current()->unit == CSSParserValue::Function && equalIgnoringC ase(valueList->current()->function->name, "-webkit-image-set")) {
2258 value = parseImageSet(m_valueList); 2258 value = parseImageSet(m_valueList);
2259 if (value) 2259 if (value)
2260 return true; 2260 return true;
2261 } 2261 }
2262 2262
2263 return false; 2263 return false;
2264 } 2264 }
2265 2265
2266 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseFillPositionX(CSSParser ValueList* valueList) 2266 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseFillPositionX(CSSParser ValueList* valueList)
2267 { 2267 {
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
3014 || value->id == CSSValueEaseInOut || value->id == CSSValueStepStart || v alue->id == CSSValueStepEnd 3014 || value->id == CSSValueEaseInOut || value->id == CSSValueStepStart || v alue->id == CSSValueStepEnd
3015 || value->id == CSSValueStepMiddle) 3015 || value->id == CSSValueStepMiddle)
3016 return cssValuePool().createIdentifierValue(value->id); 3016 return cssValuePool().createIdentifierValue(value->id);
3017 3017
3018 // We must be a function. 3018 // We must be a function.
3019 if (value->unit != CSSParserValue::Function) 3019 if (value->unit != CSSParserValue::Function)
3020 return nullptr; 3020 return nullptr;
3021 3021
3022 CSSParserValueList* args = value->function->args.get(); 3022 CSSParserValueList* args = value->function->args.get();
3023 3023
3024 if (equalIgnoringCase(value->function->name, "steps(")) { 3024 if (equalIgnoringCase(value->function->name, "steps")) {
3025 // For steps, 1 or 2 params must be specified (comma-separated) 3025 // For steps, 1 or 2 params must be specified (comma-separated)
3026 if (!args || (args->size() != 1 && args->size() != 3)) 3026 if (!args || (args->size() != 1 && args->size() != 3))
3027 return nullptr; 3027 return nullptr;
3028 3028
3029 // There are two values. 3029 // There are two values.
3030 int numSteps; 3030 int numSteps;
3031 StepsTimingFunction::StepAtPosition stepAtPosition = StepsTimingFunction ::End; 3031 StepsTimingFunction::StepAtPosition stepAtPosition = StepsTimingFunction ::End;
3032 3032
3033 CSSParserValue* v = args->current(); 3033 CSSParserValue* v = args->current();
3034 if (!validUnit(v, FInteger)) 3034 if (!validUnit(v, FInteger))
(...skipping 19 matching lines...) Expand all
3054 stepAtPosition = StepsTimingFunction::End; 3054 stepAtPosition = StepsTimingFunction::End;
3055 break; 3055 break;
3056 default: 3056 default:
3057 return nullptr; 3057 return nullptr;
3058 } 3058 }
3059 } 3059 }
3060 3060
3061 return CSSStepsTimingFunctionValue::create(numSteps, stepAtPosition); 3061 return CSSStepsTimingFunctionValue::create(numSteps, stepAtPosition);
3062 } 3062 }
3063 3063
3064 if (equalIgnoringCase(value->function->name, "cubic-bezier(")) { 3064 if (equalIgnoringCase(value->function->name, "cubic-bezier")) {
3065 // For cubic bezier, 4 values must be specified. 3065 // For cubic bezier, 4 values must be specified.
3066 if (!args || args->size() != 7) 3066 if (!args || args->size() != 7)
3067 return nullptr; 3067 return nullptr;
3068 3068
3069 // There are two points specified. The x values must be between 0 and 1 but the y values can exceed this range. 3069 // There are two points specified. The x values must be between 0 and 1 but the y values can exceed this range.
3070 double x1, y1, x2, y2; 3070 double x1, y1, x2, y2;
3071 3071
3072 if (!parseCubicBezierTimingFunctionValue(args, x1)) 3072 if (!parseCubicBezierTimingFunctionValue(args, x1))
3073 return nullptr; 3073 return nullptr;
3074 if (x1 < 0 || x1 > 1) 3074 if (x1 < 0 || x1 > 1)
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
3568 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSeparated (); 3568 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSeparated ();
3569 // Handle leading <ident>*. 3569 // Handle leading <ident>*.
3570 value = m_valueList->current(); 3570 value = m_valueList->current();
3571 if (value && value->unit == CSSParserValue::ValueList) 3571 if (value && value->unit == CSSParserValue::ValueList)
3572 parseGridLineNames(*m_valueList, *values); 3572 parseGridLineNames(*m_valueList, *values);
3573 3573
3574 bool seenTrackSizeOrRepeatFunction = false; 3574 bool seenTrackSizeOrRepeatFunction = false;
3575 while (CSSParserValue* currentValue = m_valueList->current()) { 3575 while (CSSParserValue* currentValue = m_valueList->current()) {
3576 if (isForwardSlashOperator(currentValue)) 3576 if (isForwardSlashOperator(currentValue))
3577 break; 3577 break;
3578 if (currentValue->unit == CSSParserValue::Function && equalIgnoringCase( currentValue->function->name, "repeat(")) { 3578 if (currentValue->unit == CSSParserValue::Function && equalIgnoringCase( currentValue->function->name, "repeat")) {
3579 if (!parseGridTrackRepeatFunction(*values)) 3579 if (!parseGridTrackRepeatFunction(*values))
3580 return nullptr; 3580 return nullptr;
3581 seenTrackSizeOrRepeatFunction = true; 3581 seenTrackSizeOrRepeatFunction = true;
3582 } else { 3582 } else {
3583 RefPtrWillBeRawPtr<CSSValue> value = parseGridTrackSize(*m_valueList ); 3583 RefPtrWillBeRawPtr<CSSValue> value = parseGridTrackSize(*m_valueList );
3584 if (!value) 3584 if (!value)
3585 return nullptr; 3585 return nullptr;
3586 values->append(value); 3586 values->append(value);
3587 seenTrackSizeOrRepeatFunction = true; 3587 seenTrackSizeOrRepeatFunction = true;
3588 } 3588 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3654 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseGridTrackSize(CSSParser ValueList& inputList) 3654 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseGridTrackSize(CSSParser ValueList& inputList)
3655 { 3655 {
3656 ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled()); 3656 ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled());
3657 3657
3658 CSSParserValue* currentValue = inputList.current(); 3658 CSSParserValue* currentValue = inputList.current();
3659 inputList.next(); 3659 inputList.next();
3660 3660
3661 if (currentValue->id == CSSValueAuto) 3661 if (currentValue->id == CSSValueAuto)
3662 return cssValuePool().createIdentifierValue(CSSValueAuto); 3662 return cssValuePool().createIdentifierValue(CSSValueAuto);
3663 3663
3664 if (currentValue->unit == CSSParserValue::Function && equalIgnoringCase(curr entValue->function->name, "minmax(")) { 3664 if (currentValue->unit == CSSParserValue::Function && equalIgnoringCase(curr entValue->function->name, "minmax")) {
3665 // The spec defines the following grammar: minmax( <track-breadth> , <tr ack-breadth> ) 3665 // The spec defines the following grammar: minmax( <track-breadth> , <tr ack-breadth> )
3666 CSSParserValueList* arguments = currentValue->function->args.get(); 3666 CSSParserValueList* arguments = currentValue->function->args.get();
3667 if (!arguments || arguments->size() != 3 || !isComma(arguments->valueAt( 1))) 3667 if (!arguments || arguments->size() != 3 || !isComma(arguments->valueAt( 1)))
3668 return nullptr; 3668 return nullptr;
3669 3669
3670 RefPtrWillBeRawPtr<CSSPrimitiveValue> minTrackBreadth = parseGridBreadth (arguments->valueAt(0)); 3670 RefPtrWillBeRawPtr<CSSPrimitiveValue> minTrackBreadth = parseGridBreadth (arguments->valueAt(0));
3671 if (!minTrackBreadth) 3671 if (!minTrackBreadth)
3672 return nullptr; 3672 return nullptr;
3673 3673
3674 RefPtrWillBeRawPtr<CSSPrimitiveValue> maxTrackBreadth = parseGridBreadth (arguments->valueAt(2)); 3674 RefPtrWillBeRawPtr<CSSPrimitiveValue> maxTrackBreadth = parseGridBreadth (arguments->valueAt(2));
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
3880 } 3880 }
3881 3881
3882 return cssValuePool().createValue(Counter::create(identifier.release(), list Style.release(), separator.release())); 3882 return cssValuePool().createValue(Counter::create(identifier.release(), list Style.release(), separator.release()));
3883 } 3883 }
3884 3884
3885 bool CSSPropertyParser::parseClipShape(CSSPropertyID propId, bool important) 3885 bool CSSPropertyParser::parseClipShape(CSSPropertyID propId, bool important)
3886 { 3886 {
3887 CSSParserValue* value = m_valueList->current(); 3887 CSSParserValue* value = m_valueList->current();
3888 CSSParserValueList* args = value->function->args.get(); 3888 CSSParserValueList* args = value->function->args.get();
3889 3889
3890 if (!equalIgnoringCase(value->function->name, "rect(") || !args) 3890 if (!equalIgnoringCase(value->function->name, "rect") || !args)
3891 return false; 3891 return false;
3892 3892
3893 // rect(t, r, b, l) || rect(t r b l) 3893 // rect(t, r, b, l) || rect(t r b l)
3894 if (args->size() != 4 && args->size() != 7) 3894 if (args->size() != 4 && args->size() != 7)
3895 return false; 3895 return false;
3896 RefPtrWillBeRawPtr<Rect> rect = Rect::create(); 3896 RefPtrWillBeRawPtr<Rect> rect = Rect::create();
3897 int i = 0; 3897 int i = 0;
3898 CSSParserValue* a = args->current(); 3898 CSSParserValue* a = args->current();
3899 while (a) { 3899 while (a) {
3900 if (a->id != CSSValueAuto && !validUnit(a, FLength)) 3900 if (a->id != CSSValueAuto && !validUnit(a, FLength))
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
4371 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseBasicShape() 4371 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::parseBasicShape()
4372 { 4372 {
4373 CSSParserValue* value = m_valueList->current(); 4373 CSSParserValue* value = m_valueList->current();
4374 ASSERT(value->unit == CSSParserValue::Function); 4374 ASSERT(value->unit == CSSParserValue::Function);
4375 CSSParserValueList* args = value->function->args.get(); 4375 CSSParserValueList* args = value->function->args.get();
4376 4376
4377 if (!args) 4377 if (!args)
4378 return nullptr; 4378 return nullptr;
4379 4379
4380 RefPtrWillBeRawPtr<CSSBasicShape> shape = nullptr; 4380 RefPtrWillBeRawPtr<CSSBasicShape> shape = nullptr;
4381 if (equalIgnoringCase(value->function->name, "circle(")) 4381 if (equalIgnoringCase(value->function->name, "circle"))
4382 shape = parseBasicShapeCircle(args); 4382 shape = parseBasicShapeCircle(args);
4383 else if (equalIgnoringCase(value->function->name, "ellipse(")) 4383 else if (equalIgnoringCase(value->function->name, "ellipse"))
4384 shape = parseBasicShapeEllipse(args); 4384 shape = parseBasicShapeEllipse(args);
4385 else if (equalIgnoringCase(value->function->name, "polygon(")) 4385 else if (equalIgnoringCase(value->function->name, "polygon"))
4386 shape = parseBasicShapePolygon(args); 4386 shape = parseBasicShapePolygon(args);
4387 else if (equalIgnoringCase(value->function->name, "inset(")) 4387 else if (equalIgnoringCase(value->function->name, "inset"))
4388 shape = parseBasicShapeInset(args); 4388 shape = parseBasicShapeInset(args);
4389 4389
4390 if (!shape) 4390 if (!shape)
4391 return nullptr; 4391 return nullptr;
4392 4392
4393 m_valueList->next(); 4393 m_valueList->next();
4394 4394
4395 return cssValuePool().createValue(shape.release()); 4395 return cssValuePool().createValue(shape.release());
4396 } 4396 }
4397 4397
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
4688 if (!value) { 4688 if (!value) {
4689 valueList->append(uriValue.release()); 4689 valueList->append(uriValue.release());
4690 return true; 4690 return true;
4691 } 4691 }
4692 if (value->unit == CSSParserValue::Operator && value->iValue == ',') { 4692 if (value->unit == CSSParserValue::Operator && value->iValue == ',') {
4693 m_valueList->next(); 4693 m_valueList->next();
4694 valueList->append(uriValue.release()); 4694 valueList->append(uriValue.release());
4695 return true; 4695 return true;
4696 } 4696 }
4697 4697
4698 if (value->unit != CSSParserValue::Function || !equalIgnoringCase(value->fun ction->name, "format(")) 4698 if (value->unit != CSSParserValue::Function || !equalIgnoringCase(value->fun ction->name, "format"))
4699 return false; 4699 return false;
4700 4700
4701 // FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20111004/ says that format () contains a comma-separated list of strings, 4701 // FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20111004/ says that format () contains a comma-separated list of strings,
4702 // but CSSFontFaceSrcValue stores only one format. Allowing one format for n ow. 4702 // but CSSFontFaceSrcValue stores only one format. Allowing one format for n ow.
4703 CSSParserValueList* args = value->function->args.get(); 4703 CSSParserValueList* args = value->function->args.get();
4704 if (!args || args->size() != 1 || (args->current()->unit != CSSPrimitiveValu e::CSS_STRING && args->current()->unit != CSSPrimitiveValue::CSS_IDENT)) 4704 if (!args || args->size() != 1 || (args->current()->unit != CSSPrimitiveValu e::CSS_STRING && args->current()->unit != CSSPrimitiveValue::CSS_IDENT))
4705 return false; 4705 return false;
4706 uriValue->setFormat(args->current()->string); 4706 uriValue->setFormat(args->current()->string);
4707 valueList->append(uriValue.release()); 4707 valueList->append(uriValue.release());
4708 value = m_valueList->next(); 4708 value = m_valueList->next();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4740 } 4740 }
4741 4741
4742 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseFontFaceSrc() 4742 PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseFontFaceSrc()
4743 { 4743 {
4744 RefPtrWillBeRawPtr<CSSValueList> values(CSSValueList::createCommaSeparated() ); 4744 RefPtrWillBeRawPtr<CSSValueList> values(CSSValueList::createCommaSeparated() );
4745 4745
4746 while (CSSParserValue* value = m_valueList->current()) { 4746 while (CSSParserValue* value = m_valueList->current()) {
4747 if (value->unit == CSSPrimitiveValue::CSS_URI) { 4747 if (value->unit == CSSPrimitiveValue::CSS_URI) {
4748 if (!parseFontFaceSrcURI(values.get())) 4748 if (!parseFontFaceSrcURI(values.get()))
4749 return nullptr; 4749 return nullptr;
4750 } else if (value->unit == CSSParserValue::Function && equalIgnoringCase( value->function->name, "local(")) { 4750 } else if (value->unit == CSSParserValue::Function && equalIgnoringCase( value->function->name, "local")) {
4751 if (!parseFontFaceSrcLocal(values.get())) 4751 if (!parseFontFaceSrcLocal(values.get()))
4752 return nullptr; 4752 return nullptr;
4753 } else { 4753 } else {
4754 return nullptr; 4754 return nullptr;
4755 } 4755 }
4756 } 4756 }
4757 if (!values->length()) 4757 if (!values->length())
4758 return nullptr; 4758 return nullptr;
4759 4759
4760 m_valueList->next(); 4760 m_valueList->next();
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
5139 return false; 5139 return false;
5140 rgb = tc.rgb(); 5140 rgb = tc.rgb();
5141 return true; 5141 return true;
5142 } 5142 }
5143 5143
5144 template bool CSSPropertyParser::fastParseColor(RGBA32&, const String&, bool str ict); 5144 template bool CSSPropertyParser::fastParseColor(RGBA32&, const String&, bool str ict);
5145 5145
5146 bool CSSPropertyParser::isCalculation(CSSParserValue* value) 5146 bool CSSPropertyParser::isCalculation(CSSParserValue* value)
5147 { 5147 {
5148 return (value->unit == CSSParserValue::Function) 5148 return (value->unit == CSSParserValue::Function)
5149 && (equalIgnoringCase(value->function->name, "calc(") 5149 && (equalIgnoringCase(value->function->name, "calc")
5150 || equalIgnoringCase(value->function->name, "-webkit-calc(")); 5150 || equalIgnoringCase(value->function->name, "-webkit-calc"));
5151 } 5151 }
5152 5152
5153 inline int CSSPropertyParser::colorIntFromValue(CSSParserValue* v) 5153 inline int CSSPropertyParser::colorIntFromValue(CSSParserValue* v)
5154 { 5154 {
5155 bool isPercent; 5155 bool isPercent;
5156 double value; 5156 double value;
5157 5157
5158 if (m_parsedCalculation) { 5158 if (m_parsedCalculation) {
5159 isPercent = m_parsedCalculation->category() == CalcPercent; 5159 isPercent = m_parsedCalculation->category() == CalcPercent;
5160 value = m_parsedCalculation->doubleValue(); 5160 value = m_parsedCalculation->doubleValue();
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
5269 if (!fastParseColor(c, str, !acceptQuirkyColors)) 5269 if (!fastParseColor(c, str, !acceptQuirkyColors))
5270 return false; 5270 return false;
5271 } else if (value->unit == CSSPrimitiveValue::CSS_PARSER_HEXCOLOR 5271 } else if (value->unit == CSSPrimitiveValue::CSS_PARSER_HEXCOLOR
5272 || value->unit == CSSPrimitiveValue::CSS_IDENT 5272 || value->unit == CSSPrimitiveValue::CSS_IDENT
5273 || (acceptQuirkyColors && value->unit == CSSPrimitiveValue::CSS_DIMENSIO N)) { 5273 || (acceptQuirkyColors && value->unit == CSSPrimitiveValue::CSS_DIMENSIO N)) {
5274 if (!fastParseColor(c, value->string, !acceptQuirkyColors && value->unit == CSSPrimitiveValue::CSS_IDENT)) 5274 if (!fastParseColor(c, value->string, !acceptQuirkyColors && value->unit == CSSPrimitiveValue::CSS_IDENT))
5275 return false; 5275 return false;
5276 } else if (value->unit == CSSParserValue::Function && 5276 } else if (value->unit == CSSParserValue::Function &&
5277 value->function->args != 0 && 5277 value->function->args != 0 &&
5278 value->function->args->size() == 5 /* rgb + two commas */ && 5278 value->function->args->size() == 5 /* rgb + two commas */ &&
5279 equalIgnoringCase(value->function->name, "rgb(")) { 5279 equalIgnoringCase(value->function->name, "rgb")) {
5280 int colorValues[3]; 5280 int colorValues[3];
5281 if (!parseColorParameters(value, colorValues, false)) 5281 if (!parseColorParameters(value, colorValues, false))
5282 return false; 5282 return false;
5283 c = makeRGB(colorValues[0], colorValues[1], colorValues[2]); 5283 c = makeRGB(colorValues[0], colorValues[1], colorValues[2]);
5284 } else { 5284 } else {
5285 if (value->unit == CSSParserValue::Function && 5285 if (value->unit == CSSParserValue::Function &&
5286 value->function->args != 0 && 5286 value->function->args != 0 &&
5287 value->function->args->size() == 7 /* rgba + three commas */ && 5287 value->function->args->size() == 7 /* rgba + three commas */ &&
5288 equalIgnoringCase(value->function->name, "rgba(")) { 5288 equalIgnoringCase(value->function->name, "rgba")) {
5289 int colorValues[4]; 5289 int colorValues[4];
5290 if (!parseColorParameters(value, colorValues, true)) 5290 if (!parseColorParameters(value, colorValues, true))
5291 return false; 5291 return false;
5292 c = makeRGBA(colorValues[0], colorValues[1], colorValues[2], colorVa lues[3]); 5292 c = makeRGBA(colorValues[0], colorValues[1], colorValues[2], colorVa lues[3]);
5293 } else if (value->unit == CSSParserValue::Function && 5293 } else if (value->unit == CSSParserValue::Function &&
5294 value->function->args != 0 && 5294 value->function->args != 0 &&
5295 value->function->args->size() == 5 /* hsl + two commas */ && 5295 value->function->args->size() == 5 /* hsl + two commas */ &&
5296 equalIgnoringCase(value->function->name, "hsl(")) { 5296 equalIgnoringCase(value->function->name, "hsl")) {
5297 double colorValues[3]; 5297 double colorValues[3];
5298 if (!parseHSLParameters(value, colorValues, false)) 5298 if (!parseHSLParameters(value, colorValues, false))
5299 return false; 5299 return false;
5300 c = makeRGBAFromHSLA(colorValues[0], colorValues[1], colorValues[2], 1.0); 5300 c = makeRGBAFromHSLA(colorValues[0], colorValues[1], colorValues[2], 1.0);
5301 } else if (value->unit == CSSParserValue::Function && 5301 } else if (value->unit == CSSParserValue::Function &&
5302 value->function->args != 0 && 5302 value->function->args != 0 &&
5303 value->function->args->size() == 7 /* hsla + three commas */ && 5303 value->function->args->size() == 7 /* hsla + three commas */ &&
5304 equalIgnoringCase(value->function->name, "hsla(")) { 5304 equalIgnoringCase(value->function->name, "hsla")) {
5305 double colorValues[4]; 5305 double colorValues[4];
5306 if (!parseHSLParameters(value, colorValues, true)) 5306 if (!parseHSLParameters(value, colorValues, true))
5307 return false; 5307 return false;
5308 c = makeRGBAFromHSLA(colorValues[0], colorValues[1], colorValues[2], colorValues[3]); 5308 c = makeRGBAFromHSLA(colorValues[0], colorValues[1], colorValues[2], colorValues[3]);
5309 } else 5309 } else
5310 return false; 5310 return false;
5311 } 5311 }
5312 5312
5313 return true; 5313 return true;
5314 } 5314 }
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 5745
5746 if (!context.canAdvance() && context.allowImage()) { 5746 if (!context.canAdvance() && context.allowImage()) {
5747 if (val->unit == CSSPrimitiveValue::CSS_URI) { 5747 if (val->unit == CSSPrimitiveValue::CSS_URI) {
5748 context.commitImage(parser.createCSSImageValueWithReferrer(val-> string, parser.m_context.completeURL(val->string))); 5748 context.commitImage(parser.createCSSImageValueWithReferrer(val-> string, parser.m_context.completeURL(val->string)));
5749 } else if (isGeneratedImageValue(val)) { 5749 } else if (isGeneratedImageValue(val)) {
5750 RefPtrWillBeRawPtr<CSSValue> value = nullptr; 5750 RefPtrWillBeRawPtr<CSSValue> value = nullptr;
5751 if (parser.parseGeneratedImage(parser.m_valueList, value)) 5751 if (parser.parseGeneratedImage(parser.m_valueList, value))
5752 context.commitImage(value.release()); 5752 context.commitImage(value.release());
5753 else 5753 else
5754 return false; 5754 return false;
5755 } else if (val->unit == CSSParserValue::Function && equalIgnoringCas e(val->function->name, "-webkit-image-set(")) { 5755 } else if (val->unit == CSSParserValue::Function && equalIgnoringCas e(val->function->name, "-webkit-image-set")) {
5756 RefPtrWillBeRawPtr<CSSValue> value = parser.parseImageSet(parser .m_valueList); 5756 RefPtrWillBeRawPtr<CSSValue> value = parser.parseImageSet(parser .m_valueList);
5757 if (value) 5757 if (value)
5758 context.commitImage(value.release()); 5758 context.commitImage(value.release());
5759 else 5759 else
5760 return false; 5760 return false;
5761 } else if (val->id == CSSValueNone) 5761 } else if (val->id == CSSValueNone)
5762 context.commitImage(cssValuePool().createIdentifierValue(CSSValu eNone)); 5762 context.commitImage(cssValuePool().createIdentifierValue(CSSValu eNone));
5763 } 5763 }
5764 5764
5765 if (!context.canAdvance() && context.allowImageSlice()) { 5765 if (!context.canAdvance() && context.allowImageSlice()) {
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
6219 result = cssValuePool().createValue(a->fValue, static_cast<CSSPrimitiveV alue::UnitType>(a->unit)); 6219 result = cssValuePool().createValue(a->fValue, static_cast<CSSPrimitiveV alue::UnitType>(a->unit));
6220 } 6220 }
6221 return result; 6221 return result;
6222 } 6222 }
6223 6223
6224 bool parseDeprecatedGradientColorStop(CSSPropertyParser* p, CSSParserValue* a, C SSGradientColorStop& stop) 6224 bool parseDeprecatedGradientColorStop(CSSPropertyParser* p, CSSParserValue* a, C SSGradientColorStop& stop)
6225 { 6225 {
6226 if (a->unit != CSSParserValue::Function) 6226 if (a->unit != CSSParserValue::Function)
6227 return false; 6227 return false;
6228 6228
6229 if (!equalIgnoringCase(a->function->name, "from(") && 6229 if (!equalIgnoringCase(a->function->name, "from") &&
6230 !equalIgnoringCase(a->function->name, "to(") && 6230 !equalIgnoringCase(a->function->name, "to") &&
6231 !equalIgnoringCase(a->function->name, "color-stop(")) 6231 !equalIgnoringCase(a->function->name, "color-stop"))
6232 return false; 6232 return false;
6233 6233
6234 CSSParserValueList* args = a->function->args.get(); 6234 CSSParserValueList* args = a->function->args.get();
6235 if (!args) 6235 if (!args)
6236 return false; 6236 return false;
6237 6237
6238 if (equalIgnoringCase(a->function->name, "from(") 6238 if (equalIgnoringCase(a->function->name, "from")
6239 || equalIgnoringCase(a->function->name, "to(")) { 6239 || equalIgnoringCase(a->function->name, "to")) {
6240 // The "from" and "to" stops expect 1 argument. 6240 // The "from" and "to" stops expect 1 argument.
6241 if (args->size() != 1) 6241 if (args->size() != 1)
6242 return false; 6242 return false;
6243 6243
6244 if (equalIgnoringCase(a->function->name, "from(")) 6244 if (equalIgnoringCase(a->function->name, "from"))
6245 stop.m_position = cssValuePool().createValue(0, CSSPrimitiveValue::C SS_NUMBER); 6245 stop.m_position = cssValuePool().createValue(0, CSSPrimitiveValue::C SS_NUMBER);
6246 else 6246 else
6247 stop.m_position = cssValuePool().createValue(1, CSSPrimitiveValue::C SS_NUMBER); 6247 stop.m_position = cssValuePool().createValue(1, CSSPrimitiveValue::C SS_NUMBER);
6248 6248
6249 CSSValueID id = args->current()->id; 6249 CSSValueID id = args->current()->id;
6250 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWin dowtext) || id == CSSValueMenu) 6250 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWin dowtext) || id == CSSValueMenu)
6251 stop.m_color = cssValuePool().createIdentifierValue(id); 6251 stop.m_color = cssValuePool().createIdentifierValue(id);
6252 else 6252 else
6253 stop.m_color = p->parseColor(args->current()); 6253 stop.m_color = p->parseColor(args->current());
6254 if (!stop.m_color) 6254 if (!stop.m_color)
6255 return false; 6255 return false;
6256 } 6256 }
6257 6257
6258 // The "color-stop" function expects 3 arguments. 6258 // The "color-stop" function expects 3 arguments.
6259 if (equalIgnoringCase(a->function->name, "color-stop(")) { 6259 if (equalIgnoringCase(a->function->name, "color-stop")) {
6260 if (args->size() != 3) 6260 if (args->size() != 3)
6261 return false; 6261 return false;
6262 6262
6263 CSSParserValue* stopArg = args->current(); 6263 CSSParserValue* stopArg = args->current();
6264 if (stopArg->unit == CSSPrimitiveValue::CSS_PERCENTAGE) 6264 if (stopArg->unit == CSSPrimitiveValue::CSS_PERCENTAGE)
6265 stop.m_position = cssValuePool().createValue(stopArg->fValue / 100, CSSPrimitiveValue::CSS_NUMBER); 6265 stop.m_position = cssValuePool().createValue(stopArg->fValue / 100, CSSPrimitiveValue::CSS_NUMBER);
6266 else if (stopArg->unit == CSSPrimitiveValue::CSS_NUMBER) 6266 else if (stopArg->unit == CSSPrimitiveValue::CSS_NUMBER)
6267 stop.m_position = cssValuePool().createValue(stopArg->fValue, CSSPri mitiveValue::CSS_NUMBER); 6267 stop.m_position = cssValuePool().createValue(stopArg->fValue, CSSPri mitiveValue::CSS_NUMBER);
6268 else 6268 else
6269 return false; 6269 return false;
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
6863 return gradient->stopCount() >= 2; 6863 return gradient->stopCount() >= 2;
6864 } 6864 }
6865 6865
6866 bool CSSPropertyParser::parseGeneratedImage(CSSParserValueList* valueList, RefPt rWillBeRawPtr<CSSValue>& value) 6866 bool CSSPropertyParser::parseGeneratedImage(CSSParserValueList* valueList, RefPt rWillBeRawPtr<CSSValue>& value)
6867 { 6867 {
6868 CSSParserValue* val = valueList->current(); 6868 CSSParserValue* val = valueList->current();
6869 6869
6870 if (val->unit != CSSParserValue::Function) 6870 if (val->unit != CSSParserValue::Function)
6871 return false; 6871 return false;
6872 6872
6873 if (equalIgnoringCase(val->function->name, "-webkit-gradient(")) { 6873 if (equalIgnoringCase(val->function->name, "-webkit-gradient")) {
6874 // FIXME: This should send a deprecation message. 6874 // FIXME: This should send a deprecation message.
6875 if (m_context.useCounter()) 6875 if (m_context.useCounter())
6876 m_context.useCounter()->count(UseCounter::DeprecatedWebKitGradient); 6876 m_context.useCounter()->count(UseCounter::DeprecatedWebKitGradient);
6877 return parseDeprecatedGradient(valueList, value); 6877 return parseDeprecatedGradient(valueList, value);
6878 } 6878 }
6879 6879
6880 if (equalIgnoringCase(val->function->name, "-webkit-linear-gradient(")) { 6880 if (equalIgnoringCase(val->function->name, "-webkit-linear-gradient")) {
6881 // FIXME: This should send a deprecation message. 6881 // FIXME: This should send a deprecation message.
6882 if (m_context.useCounter()) 6882 if (m_context.useCounter())
6883 m_context.useCounter()->count(UseCounter::DeprecatedWebKitLinearGrad ient); 6883 m_context.useCounter()->count(UseCounter::DeprecatedWebKitLinearGrad ient);
6884 return parseDeprecatedLinearGradient(valueList, value, NonRepeating); 6884 return parseDeprecatedLinearGradient(valueList, value, NonRepeating);
6885 } 6885 }
6886 6886
6887 if (equalIgnoringCase(val->function->name, "linear-gradient(")) 6887 if (equalIgnoringCase(val->function->name, "linear-gradient"))
6888 return parseLinearGradient(valueList, value, NonRepeating); 6888 return parseLinearGradient(valueList, value, NonRepeating);
6889 6889
6890 if (equalIgnoringCase(val->function->name, "-webkit-repeating-linear-gradien t(")) { 6890 if (equalIgnoringCase(val->function->name, "-webkit-repeating-linear-gradien t")) {
6891 // FIXME: This should send a deprecation message. 6891 // FIXME: This should send a deprecation message.
6892 if (m_context.useCounter()) 6892 if (m_context.useCounter())
6893 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingL inearGradient); 6893 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingL inearGradient);
6894 return parseDeprecatedLinearGradient(valueList, value, Repeating); 6894 return parseDeprecatedLinearGradient(valueList, value, Repeating);
6895 } 6895 }
6896 6896
6897 if (equalIgnoringCase(val->function->name, "repeating-linear-gradient(")) 6897 if (equalIgnoringCase(val->function->name, "repeating-linear-gradient"))
6898 return parseLinearGradient(valueList, value, Repeating); 6898 return parseLinearGradient(valueList, value, Repeating);
6899 6899
6900 if (equalIgnoringCase(val->function->name, "-webkit-radial-gradient(")) { 6900 if (equalIgnoringCase(val->function->name, "-webkit-radial-gradient")) {
6901 // FIXME: This should send a deprecation message. 6901 // FIXME: This should send a deprecation message.
6902 if (m_context.useCounter()) 6902 if (m_context.useCounter())
6903 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRadialGrad ient); 6903 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRadialGrad ient);
6904 return parseDeprecatedRadialGradient(valueList, value, NonRepeating); 6904 return parseDeprecatedRadialGradient(valueList, value, NonRepeating);
6905 } 6905 }
6906 6906
6907 if (equalIgnoringCase(val->function->name, "radial-gradient(")) 6907 if (equalIgnoringCase(val->function->name, "radial-gradient"))
6908 return parseRadialGradient(valueList, value, NonRepeating); 6908 return parseRadialGradient(valueList, value, NonRepeating);
6909 6909
6910 if (equalIgnoringCase(val->function->name, "-webkit-repeating-radial-gradien t(")) { 6910 if (equalIgnoringCase(val->function->name, "-webkit-repeating-radial-gradien t")) {
6911 if (m_context.useCounter()) 6911 if (m_context.useCounter())
6912 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingR adialGradient); 6912 m_context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingR adialGradient);
6913 return parseDeprecatedRadialGradient(valueList, value, Repeating); 6913 return parseDeprecatedRadialGradient(valueList, value, Repeating);
6914 } 6914 }
6915 6915
6916 if (equalIgnoringCase(val->function->name, "repeating-radial-gradient(")) 6916 if (equalIgnoringCase(val->function->name, "repeating-radial-gradient"))
6917 return parseRadialGradient(valueList, value, Repeating); 6917 return parseRadialGradient(valueList, value, Repeating);
6918 6918
6919 if (equalIgnoringCase(val->function->name, "-webkit-canvas(")) 6919 if (equalIgnoringCase(val->function->name, "-webkit-canvas"))
6920 return parseCanvas(valueList, value); 6920 return parseCanvas(valueList, value);
6921 6921
6922 if (equalIgnoringCase(val->function->name, "-webkit-cross-fade(")) 6922 if (equalIgnoringCase(val->function->name, "-webkit-cross-fade"))
6923 return parseCrossfade(valueList, value); 6923 return parseCrossfade(valueList, value);
6924 6924
6925 return false; 6925 return false;
6926 } 6926 }
6927 6927
6928 bool CSSPropertyParser::parseCrossfade(CSSParserValueList* valueList, RefPtrWill BeRawPtr<CSSValue>& crossfade) 6928 bool CSSPropertyParser::parseCrossfade(CSSParserValueList* valueList, RefPtrWill BeRawPtr<CSSValue>& crossfade)
6929 { 6929 {
6930 // Walk the arguments. 6930 // Walk the arguments.
6931 CSSParserValueList* args = valueList->current()->function->args.get(); 6931 CSSParserValueList* args = valueList->current()->function->args.get();
6932 if (!args || args->size() != 5) 6932 if (!args || args->size() != 5)
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
7086 break; 7086 break;
7087 if (!consumeComma(m_valueList)) 7087 if (!consumeComma(m_valueList))
7088 return nullptr; 7088 return nullptr;
7089 } 7089 }
7090 7090
7091 return values.release(); 7091 return values.release();
7092 } 7092 }
7093 7093
7094 static void filterInfoForName(const CSSParserString& name, CSSFilterValue::Filte rOperationType& filterType, unsigned& maximumArgumentCount) 7094 static void filterInfoForName(const CSSParserString& name, CSSFilterValue::Filte rOperationType& filterType, unsigned& maximumArgumentCount)
7095 { 7095 {
7096 if (equalIgnoringCase(name, "grayscale(")) 7096 if (equalIgnoringCase(name, "grayscale"))
7097 filterType = CSSFilterValue::GrayscaleFilterOperation; 7097 filterType = CSSFilterValue::GrayscaleFilterOperation;
7098 else if (equalIgnoringCase(name, "sepia(")) 7098 else if (equalIgnoringCase(name, "sepia"))
7099 filterType = CSSFilterValue::SepiaFilterOperation; 7099 filterType = CSSFilterValue::SepiaFilterOperation;
7100 else if (equalIgnoringCase(name, "saturate(")) 7100 else if (equalIgnoringCase(name, "saturate"))
7101 filterType = CSSFilterValue::SaturateFilterOperation; 7101 filterType = CSSFilterValue::SaturateFilterOperation;
7102 else if (equalIgnoringCase(name, "hue-rotate(")) 7102 else if (equalIgnoringCase(name, "hue-rotate"))
7103 filterType = CSSFilterValue::HueRotateFilterOperation; 7103 filterType = CSSFilterValue::HueRotateFilterOperation;
7104 else if (equalIgnoringCase(name, "invert(")) 7104 else if (equalIgnoringCase(name, "invert"))
7105 filterType = CSSFilterValue::InvertFilterOperation; 7105 filterType = CSSFilterValue::InvertFilterOperation;
7106 else if (equalIgnoringCase(name, "opacity(")) 7106 else if (equalIgnoringCase(name, "opacity"))
7107 filterType = CSSFilterValue::OpacityFilterOperation; 7107 filterType = CSSFilterValue::OpacityFilterOperation;
7108 else if (equalIgnoringCase(name, "brightness(")) 7108 else if (equalIgnoringCase(name, "brightness"))
7109 filterType = CSSFilterValue::BrightnessFilterOperation; 7109 filterType = CSSFilterValue::BrightnessFilterOperation;
7110 else if (equalIgnoringCase(name, "contrast(")) 7110 else if (equalIgnoringCase(name, "contrast"))
7111 filterType = CSSFilterValue::ContrastFilterOperation; 7111 filterType = CSSFilterValue::ContrastFilterOperation;
7112 else if (equalIgnoringCase(name, "blur(")) 7112 else if (equalIgnoringCase(name, "blur"))
7113 filterType = CSSFilterValue::BlurFilterOperation; 7113 filterType = CSSFilterValue::BlurFilterOperation;
7114 else if (equalIgnoringCase(name, "drop-shadow(")) { 7114 else if (equalIgnoringCase(name, "drop-shadow")) {
7115 filterType = CSSFilterValue::DropShadowFilterOperation; 7115 filterType = CSSFilterValue::DropShadowFilterOperation;
7116 maximumArgumentCount = 4; // x-offset, y-offset, blur-radius, color -- spread and inset style not allowed. 7116 maximumArgumentCount = 4; // x-offset, y-offset, blur-radius, color -- spread and inset style not allowed.
7117 } 7117 }
7118 } 7118 }
7119 7119
7120 PassRefPtrWillBeRawPtr<CSSFilterValue> CSSPropertyParser::parseBuiltinFilterArgu ments(CSSParserValueList* args, CSSFilterValue::FilterOperationType filterType) 7120 PassRefPtrWillBeRawPtr<CSSFilterValue> CSSPropertyParser::parseBuiltinFilterArgu ments(CSSParserValueList* args, CSSFilterValue::FilterOperationType filterType)
7121 { 7121 {
7122 RefPtrWillBeRawPtr<CSSFilterValue> filterValue = CSSFilterValue::create(filt erType); 7122 RefPtrWillBeRawPtr<CSSFilterValue> filterValue = CSSFilterValue::create(filt erType);
7123 ASSERT(args); 7123 ASSERT(args);
7124 7124
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
8174 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill)); 8174 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueFill));
8175 if (!seenStroke) 8175 if (!seenStroke)
8176 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke) ); 8176 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueStroke) );
8177 if (!seenMarkers) 8177 if (!seenMarkers)
8178 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers )); 8178 parsedValues->append(CSSPrimitiveValue::createIdentifier(CSSValueMarkers ));
8179 8179
8180 return parsedValues.release(); 8180 return parsedValues.release();
8181 } 8181 }
8182 8182
8183 } // namespace blink 8183 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/parser/BisonCSSParser-in.cpp ('k') | Source/core/css/parser/CSSTokenizer-in.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698