Chromium Code Reviews| Index: Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl |
| diff --git a/Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl b/Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl |
| index 5672e52a1fb427b10f968bed4e57ea09fbb7b019..ee199997ce863f6df7080ab973911689887bd219 100644 |
| --- a/Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl |
| +++ b/Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl |
| @@ -596,19 +596,39 @@ static bool lengthTypeAndValueMatch(const BorderImageLengthBox& borderImageLengt |
| {{declare_value_function(property_id)}} |
| { |
| - if (value->isSVGPaint()) { |
| - SVGPaint* svgPaint = toSVGPaint(value); |
| - |
| - Color color; |
| - if (svgPaint->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR |
| - || svgPaint->paintType() == SVGPaint::SVG_PAINTTYPE_URI_CURRENTCOLOR) |
| - color = state.style()->color(); |
| - else |
| - color = svgPaint->color(); |
| - |
| - {{set_value(property)}}(svgPaint->paintType(), |
| - color, |
| - svgPaint->uri(), |
| + String url; |
| + if (value->isValueList()) { |
| + CSSValueList* list = toCSSValueList(value); |
| + if (list->length() < 2) |
|
krit
2014/07/01 06:01:55
Could you add an assert list->length() > 2? It isn
|
| + return; |
| + |
| + if (!list->item(0)->isPrimitiveValue()) |
| + return; |
| + |
| + CSSPrimitiveValue* pValue = toCSSPrimitiveValue(list->item(0)); |
| + if (!pValue->isURI()) |
| + return; |
| + |
| + url = pValue->getStringValue(); |
| + value = list->item(1); |
| + } |
| + if (value->isPrimitiveValue()) { |
| + CSSPrimitiveValue* pValue = toCSSPrimitiveValue(value); |
| + Color c; |
| + SVGPaintType ptype = SVG_PAINTTYPE_RGBCOLOR; |
| + if (pValue->isRGBColor()) { |
| + c = pValue->getRGBA32Value(); |
| + ptype = url.isEmpty() ? SVG_PAINTTYPE_RGBCOLOR : SVG_PAINTTYPE_URI_RGBCOLOR; |
| + } else if (pValue->getValueID() == CSSValueCurrentcolor) { |
| + c = state.style()->color(); |
| + ptype = url.isEmpty() ? SVG_PAINTTYPE_CURRENTCOLOR : SVG_PAINTTYPE_URI_CURRENTCOLOR; |
| + } else if (pValue->getValueID() == CSSValueNone) |
| + ptype = url.isEmpty() ? SVG_PAINTTYPE_NONE : SVG_PAINTTYPE_URI_NONE; |
| + else if (pValue->isURI()) { |
| + ptype = SVG_PAINTTYPE_URI; |
| + url = pValue->getStringValue(); |
| + } |
|
krit
2014/07/01 06:01:55
Don't you want to add an else with a return?
|
| + {{set_value(property)}}(ptype, c, url, |
| state.applyPropertyToRegularStyle(), |
| state.applyPropertyToVisitedLinkStyle()); |
| } |