Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp |
index 27531b2241bd92d50d083dbd6658f7dc303663ef..a456f834ac1005f64aea9195b077c2d5dc7762ec 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp |
@@ -213,51 +213,16 @@ void StyleBuilderFunctions::applyValueCSSPropertyCursor( |
const CSSValue& value) { |
state.style()->clearCursorList(); |
if (value.isValueList()) { |
- const CSSValueList& list = toCSSValueList(value); |
- int len = list.length(); |
state.style()->setCursor(ECursor::Auto); |
- for (int i = 0; i < len; i++) { |
- const CSSValue& item = list.item(i); |
- if (item.isCursorImageValue()) { |
- const CSSCursorImageValue& image = toCSSCursorImageValue(item); |
- IntPoint hotSpot = image.hotSpot(); |
- bool hotSpotSpecified = image.hotSpotSpecified(); |
- |
- Element* element = state.element(); |
- if (SVGCursorElement* cursorElement = |
- image.getSVGCursorElement(element)) { |
- if (image.cachedImageURL() != |
- element->document().completeURL( |
- cursorElement->href()->currentValue()->value())) |
- image.clearImageResource(); |
- |
- // Set the hot spot if it wasn't specified in the CSS but is specified |
- // in the SVG. |
- if (!hotSpotSpecified) { |
- hotSpotSpecified = true; |
- SVGLengthContext lengthContext(0); |
- // x() and y() return 0 if they're not specified in cursorElement. |
- float svgX = roundf( |
- cursorElement->x()->currentValue()->value(lengthContext)); |
- hotSpot.setX(static_cast<int>(svgX)); |
- float svgY = roundf( |
- cursorElement->y()->currentValue()->value(lengthContext)); |
- hotSpot.setY(static_cast<int>(svgY)); |
- } |
- |
- SVGElement* svgElement = toSVGElement(element); |
- svgElement->setCursorImageValue(&image); |
- cursorElement->addClient(svgElement); |
- |
- // Elements with SVG cursors are not allowed to share style. |
- state.style()->setUnique(); |
- } |
- |
+ for (const auto& item : toCSSValueList(value)) { |
+ if (item->isCursorImageValue()) { |
+ const CSSCursorImageValue& cursor = toCSSCursorImageValue(*item); |
+ const CSSValue& image = cursor.imageValue(); |
state.style()->addCursor(state.styleImage(CSSPropertyCursor, image), |
- hotSpotSpecified, hotSpot); |
+ cursor.hotSpotSpecified(), cursor.hotSpot()); |
} else { |
state.style()->setCursor( |
- toCSSIdentifierValue(item).convertTo<ECursor>()); |
+ toCSSIdentifierValue(*item).convertTo<ECursor>()); |
} |
} |
} else { |