| Index: third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp | 
| diff --git a/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp b/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp | 
| index 3021886a087432347d10a903c84c01afa951a41f..61c9c0432f223d189879652929938d1536065213 100644 | 
| --- a/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp | 
| +++ b/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp | 
| @@ -68,35 +68,24 @@ String CSSCursorImageValue::customCSSText() const | 
| return result.toString(); | 
| } | 
|  | 
| -bool CSSCursorImageValue::updateIfSVGCursorIsUsed(Element* element) | 
| +SVGCursorElement* CSSCursorImageValue::getSVGCursorElement(Element* element) const | 
| { | 
| if (!element || !element->isSVGElement()) | 
| -        return false; | 
| +        return nullptr; | 
|  | 
| -    if (!isSVGCursor()) | 
| -        return false; | 
| +    if (!hasFragmentInURL()) | 
| +        return nullptr; | 
|  | 
| String url = toCSSImageValue(m_imageValue.get())->url(); | 
| -    if (SVGCursorElement* cursorElement = resourceReferencedByCursorElement(url, element->treeScope())) { | 
| -        // FIXME: This will override hot spot specified in CSS, which is probably incorrect. | 
| -        SVGLengthContext lengthContext(0); | 
| -        m_hotSpotSpecified = true; | 
| -        float x = roundf(cursorElement->x()->currentValue()->value(lengthContext)); | 
| -        m_hotSpot.setX(static_cast<int>(x)); | 
| - | 
| -        float y = roundf(cursorElement->y()->currentValue()->value(lengthContext)); | 
| -        m_hotSpot.setY(static_cast<int>(y)); | 
| - | 
| -        if (cachedImageURL() != element->document().completeURL(cursorElement->href()->currentValue()->value())) | 
| -            clearImageResource(); | 
| - | 
| -        SVGElement* svgElement = toSVGElement(element); | 
| -        svgElement->setCursorImageValue(this); | 
| -        cursorElement->addClient(svgElement); | 
| -        return true; | 
| -    } | 
| +    return resourceReferencedByCursorElement(url, element->treeScope()); | 
| +} | 
|  | 
| -    return false; | 
| +void CSSCursorImageValue::clearCachedImageIfNotURL(String url) const | 
| +{ | 
| +    if (cachedImageURL() != url) { | 
| +        m_cachedImage = nullptr; | 
| +        m_isCachePending = true; | 
| +    } | 
| } | 
|  | 
| bool CSSCursorImageValue::isCachePending(float deviceScaleFactor) const | 
| @@ -127,7 +116,7 @@ StyleImage* CSSCursorImageValue::cacheImage(Document* document, float deviceScal | 
| // For SVG images we need to lazily substitute in the correct URL. Rather than attempt | 
| // to change the URL of the CSSImageValue (which would then change behavior like cssText), | 
| // we create an alternate CSSImageValue to use. | 
| -        if (isSVGCursor() && document) { | 
| +        if (hasFragmentInURL() && document) { | 
| CSSImageValue* imageValue = toCSSImageValue(m_imageValue.get()); | 
| // FIXME: This will fail if the <cursor> element is in a shadow DOM (bug 59827) | 
| if (SVGCursorElement* cursorElement = resourceReferencedByCursorElement(imageValue->url(), *document)) { | 
| @@ -147,7 +136,7 @@ StyleImage* CSSCursorImageValue::cacheImage(Document* document, float deviceScal | 
| return nullptr; | 
| } | 
|  | 
| -bool CSSCursorImageValue::isSVGCursor() const | 
| +bool CSSCursorImageValue::hasFragmentInURL() const | 
| { | 
| if (m_imageValue->isImageValue()) { | 
| CSSImageValue* imageValue = toCSSImageValue(m_imageValue.get()); | 
| @@ -157,19 +146,13 @@ bool CSSCursorImageValue::isSVGCursor() const | 
| return false; | 
| } | 
|  | 
| -String CSSCursorImageValue::cachedImageURL() | 
| +String CSSCursorImageValue::cachedImageURL() const | 
| { | 
| if (!m_cachedImage || !m_cachedImage->isImageResource()) | 
| return String(); | 
| return toStyleFetchedImage(m_cachedImage)->cachedImage()->url().getString(); | 
| } | 
|  | 
| -void CSSCursorImageValue::clearImageResource() | 
| -{ | 
| -    m_cachedImage = nullptr; | 
| -    m_isCachePending = true; | 
| -} | 
| - | 
| bool CSSCursorImageValue::equals(const CSSCursorImageValue& other) const | 
| { | 
| return (m_hotSpotSpecified ? other.m_hotSpotSpecified && m_hotSpot == other.m_hotSpot : !other.m_hotSpotSpecified) | 
|  |