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 307fc97f9722547bf8c5eab35a7493cd1fdb84d5..9309d82327600843d3c76e32adbbf339296713db 100644 |
--- a/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp |
+++ b/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp |
@@ -21,37 +21,20 @@ |
#include "core/css/CSSCursorImageValue.h" |
-#include "core/SVGNames.h" |
-#include "core/css/CSSImageSetValue.h" |
-#include "core/fetch/ImageResourceContent.h" |
-#include "core/style/StyleFetchedImage.h" |
-#include "core/style/StyleFetchedImageSet.h" |
-#include "core/style/StyleImage.h" |
-#include "core/svg/SVGCursorElement.h" |
-#include "core/svg/SVGLengthContext.h" |
-#include "core/svg/SVGURIReference.h" |
-#include "wtf/MathExtras.h" |
#include "wtf/text/StringBuilder.h" |
#include "wtf/text/WTFString.h" |
namespace blink { |
-static inline SVGCursorElement* resourceReferencedByCursorElement( |
- const String& url, |
- const TreeScope& treeScope) { |
- Element* element = |
- SVGURIReference::targetElementFromIRIString(url, treeScope); |
- return isSVGCursorElement(element) ? toSVGCursorElement(element) : nullptr; |
-} |
- |
-CSSCursorImageValue::CSSCursorImageValue(CSSValue* imageValue, |
+CSSCursorImageValue::CSSCursorImageValue(const CSSValue& imageValue, |
bool hotSpotSpecified, |
const IntPoint& hotSpot) |
: CSSValue(CursorImageClass), |
- m_imageValue(imageValue), |
- m_hotSpotSpecified(hotSpotSpecified), |
+ m_imageValue(&imageValue), |
m_hotSpot(hotSpot), |
- m_isCachePending(true) {} |
+ m_hotSpotSpecified(hotSpotSpecified) { |
+ DCHECK(imageValue.isImageValue() || imageValue.isImageSetValue()); |
+} |
CSSCursorImageValue::~CSSCursorImageValue() {} |
@@ -67,91 +50,6 @@ String CSSCursorImageValue::customCSSText() const { |
return result.toString(); |
} |
-SVGCursorElement* CSSCursorImageValue::getSVGCursorElement( |
- Element* element) const { |
- if (!element || !element->isSVGElement()) |
- return nullptr; |
- |
- if (!hasFragmentInURL()) |
- return nullptr; |
- |
- String url = toCSSImageValue(m_imageValue.get())->url(); |
- return resourceReferencedByCursorElement(url, element->treeScope()); |
-} |
- |
-bool CSSCursorImageValue::isCachePending(float deviceScaleFactor) const { |
- // Need to delegate completely so that changes in device scale factor can be |
- // handled appropriately. |
- if (m_imageValue->isImageSetValue()) |
- return toCSSImageSetValue(*m_imageValue).isCachePending(deviceScaleFactor); |
- return m_isCachePending; |
-} |
- |
-StyleImage* CSSCursorImageValue::cachedImage(float deviceScaleFactor) const { |
- ASSERT(!isCachePending(deviceScaleFactor)); |
- |
- if (m_imageValue->isImageSetValue()) |
- return toCSSImageSetValue(*m_imageValue).cachedImage(deviceScaleFactor); |
- return m_cachedImage.get(); |
-} |
- |
-StyleImage* CSSCursorImageValue::cacheImage(const Document& document, |
- float deviceScaleFactor) { |
- if (m_imageValue->isImageSetValue()) |
- return toCSSImageSetValue(*m_imageValue) |
- .cacheImage(document, deviceScaleFactor); |
- |
- if (m_isCachePending) { |
- m_isCachePending = false; |
- |
- // 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 (hasFragmentInURL()) { |
- CSSImageValue* imageValue = toCSSImageValue(m_imageValue.get()); |
- // FIXME: This will fail if the <cursor> element is in a shadow DOM |
- // (http://crbug/59827) |
- if (SVGCursorElement* cursorElement = |
- resourceReferencedByCursorElement(imageValue->url(), document)) { |
- CSSImageValue* svgImageValue = |
- CSSImageValue::create(document.completeURL( |
- cursorElement->href()->currentValue()->value())); |
- svgImageValue->setReferrer(imageValue->referrer()); |
- m_cachedImage = svgImageValue->cacheImage(document); |
- return m_cachedImage.get(); |
- } |
- } |
- |
- if (m_imageValue->isImageValue()) |
- m_cachedImage = toCSSImageValue(*m_imageValue).cacheImage(document); |
- } |
- |
- if (m_cachedImage && m_cachedImage->isImageResource()) |
- return toStyleFetchedImage(m_cachedImage); |
- return nullptr; |
-} |
- |
-bool CSSCursorImageValue::hasFragmentInURL() const { |
- if (m_imageValue->isImageValue()) { |
- CSSImageValue* imageValue = toCSSImageValue(m_imageValue.get()); |
- KURL kurl(ParsedURLString, imageValue->url()); |
- return kurl.hasFragmentIdentifier(); |
- } |
- return false; |
-} |
- |
-String CSSCursorImageValue::cachedImageURL() const { |
- if (!m_cachedImage || !m_cachedImage->isImageResource()) |
- return String(); |
- return toStyleFetchedImage(m_cachedImage)->cachedImage()->url().getString(); |
-} |
- |
-void CSSCursorImageValue::clearImageResource() const { |
- m_cachedImage = nullptr; |
- m_isCachePending = true; |
-} |
- |
bool CSSCursorImageValue::equals(const CSSCursorImageValue& other) const { |
return (m_hotSpotSpecified |
? other.m_hotSpotSpecified && m_hotSpot == other.m_hotSpot |
@@ -161,7 +59,6 @@ bool CSSCursorImageValue::equals(const CSSCursorImageValue& other) const { |
DEFINE_TRACE_AFTER_DISPATCH(CSSCursorImageValue) { |
visitor->trace(m_imageValue); |
- visitor->trace(m_cachedImage); |
CSSValue::traceAfterDispatch(visitor); |
} |