| 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) 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |