Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1061)

Unified Diff: third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp

Issue 1369213002: Revert of Replace RawPtr with RefPtr on StylePendingImage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bf6606d3f47ecb4622b78bb51573b046476655a3..3f30a4f35ccac29733a63502c1fa9ec7c6f0ce2a 100644
--- a/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp
+++ b/third_party/WebKit/Source/core/css/CSSCursorImageValue.cpp
@@ -28,6 +28,7 @@
#include "core/style/StyleFetchedImage.h"
#include "core/style/StyleFetchedImageSet.h"
#include "core/style/StyleImage.h"
+#include "core/style/StylePendingImage.h"
#include "core/svg/SVGCursorElement.h"
#include "core/svg/SVGLengthContext.h"
#include "core/svg/SVGURIReference.h"
@@ -48,7 +49,7 @@
, m_imageValue(imageValue)
, m_hotSpotSpecified(hotSpotSpecified)
, m_hotSpot(hotSpot)
- , m_isCachePending(true)
+ , m_accessedImage(false)
{
}
@@ -116,30 +117,13 @@
return false;
}
-bool CSSCursorImageValue::isCachePending(float deviceScaleFactor) const
-{
- // Need to delegate completely so that changes in device scale factor can be handled appropriately.
+StyleImage* CSSCursorImageValue::cachedImage(Document* document, float deviceScaleFactor)
+{
if (m_imageValue->isImageSetValue())
- return toCSSImageSetValue(*m_imageValue).isCachePending(deviceScaleFactor);
- return m_isCachePending;
-}
-
-StyleImage* CSSCursorImageValue::cachedImage(float deviceScaleFactor)
-{
- ASSERT(!isCachePending(deviceScaleFactor));
-
- if (m_imageValue->isImageSetValue())
- return toCSSImageSetValue(*m_imageValue).cachedImageSet(deviceScaleFactor);
- return m_cachedImage.get();
-}
-
-StyleImage* CSSCursorImageValue::cacheImage(Document* document, float deviceScaleFactor)
-{
- if (m_imageValue->isImageSetValue())
- return toCSSImageSetValue(*m_imageValue).cacheImageSet(document, deviceScaleFactor);
-
- if (m_isCachePending) {
- m_isCachePending = false;
+ return toCSSImageSetValue(m_imageValue.get())->cachedImageSet(document, deviceScaleFactor);
+
+ if (!m_accessedImage) {
+ m_accessedImage = true;
// 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),
@@ -150,19 +134,31 @@
if (SVGCursorElement* cursorElement = resourceReferencedByCursorElement(imageValue->url(), *document)) {
RefPtrWillBeRawPtr<CSSImageValue> svgImageValue = CSSImageValue::create(document->completeURL(cursorElement->href()->currentValue()->value()));
svgImageValue->setReferrer(imageValue->referrer());
- StyleFetchedImage* cachedImage = svgImageValue->cacheImage(document);
- m_cachedImage = cachedImage;
+ StyleFetchedImage* cachedImage = svgImageValue->cachedImage(document);
+ m_image = cachedImage;
return cachedImage;
}
}
if (m_imageValue->isImageValue())
- m_cachedImage = toCSSImageValue(*m_imageValue).cacheImage(document);
- }
-
- if (m_cachedImage && m_cachedImage->isImageResource())
- return toStyleFetchedImage(m_cachedImage);
+ m_image = toCSSImageValue(m_imageValue.get())->cachedImage(document);
+ }
+
+ if (m_image && m_image->isImageResource())
+ return toStyleFetchedImage(m_image);
return nullptr;
+}
+
+StyleImage* CSSCursorImageValue::cachedOrPendingImage(float deviceScaleFactor)
+{
+ // Need to delegate completely so that changes in device scale factor can be handled appropriately.
+ if (m_imageValue->isImageSetValue())
+ return toCSSImageSetValue(m_imageValue.get())->cachedOrPendingImageSet(deviceScaleFactor);
+
+ if (!m_image)
+ m_image = StylePendingImage::create(this);
+
+ return m_image.get();
}
bool CSSCursorImageValue::isSVGCursor() const
@@ -177,15 +173,15 @@
String CSSCursorImageValue::cachedImageURL()
{
- if (!m_cachedImage || !m_cachedImage->isImageResource())
+ if (!m_image || !m_image->isImageResource())
return String();
- return toStyleFetchedImage(m_cachedImage)->cachedImage()->url().string();
+ return toStyleFetchedImage(m_image)->cachedImage()->url().string();
}
void CSSCursorImageValue::clearImageResource()
{
- m_cachedImage = nullptr;
- m_isCachePending = true;
+ m_image = nullptr;
+ m_accessedImage = false;
}
#if !ENABLE(OILPAN)
@@ -204,7 +200,7 @@
DEFINE_TRACE_AFTER_DISPATCH(CSSCursorImageValue)
{
visitor->trace(m_imageValue);
- visitor->trace(m_cachedImage);
+ visitor->trace(m_image);
CSSValue::traceAfterDispatch(visitor);
}
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSCursorImageValue.h ('k') | third_party/WebKit/Source/core/css/CSSImageSetValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698