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

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

Issue 1368613002: Replace RawPtr with RefPtr on StylePendingImage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix image set caching logic 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/CSSImageValue.cpp
diff --git a/third_party/WebKit/Source/core/css/CSSImageValue.cpp b/third_party/WebKit/Source/core/css/CSSImageValue.cpp
index dfcdb3f6b11dd54bdf5374f25d2fceb053d00793..aafac4093f5a961ce9cee7482bfb74416ce65e49 100644
--- a/third_party/WebKit/Source/core/css/CSSImageValue.cpp
+++ b/third_party/WebKit/Source/core/css/CSSImageValue.cpp
@@ -28,7 +28,6 @@
#include "core/fetch/ImageResource.h"
#include "core/loader/MixedContentChecker.h"
#include "core/style/StyleFetchedImage.h"
-#include "core/style/StylePendingImage.h"
#include "platform/weborigin/KURL.h"
#include "platform/weborigin/SecurityPolicy.h"
@@ -38,8 +37,8 @@ CSSImageValue::CSSImageValue(const AtomicString& rawValue, const KURL& url, Styl
: CSSValue(ImageClass)
, m_relativeURL(rawValue)
, m_absoluteURL(url.string())
- , m_image(image)
- , m_accessedImage(image)
+ , m_isCachePending(!image)
+ , m_cachedImage(image)
{
}
@@ -47,20 +46,12 @@ CSSImageValue::~CSSImageValue()
{
}
-StyleImage* CSSImageValue::cachedOrPendingImage()
-{
- if (!m_image)
- m_image = StylePendingImage::create(this);
-
- return m_image.get();
-}
-
-StyleFetchedImage* CSSImageValue::cachedImage(Document* document, const ResourceLoaderOptions& options)
+StyleFetchedImage* CSSImageValue::cacheImage(Document* document, const ResourceLoaderOptions& options)
{
ASSERT(document);
- if (!m_accessedImage) {
- m_accessedImage = true;
+ if (m_isCachePending) {
+ m_isCachePending = false;
FetchRequest request(ResourceRequest(m_absoluteURL), m_initiatorName.isEmpty() ? FetchInitiatorTypeNames::css : m_initiatorName, options);
request.mutableResourceRequest().setHTTPReferrer(SecurityPolicy::generateReferrer(m_referrer.referrerPolicy, request.url(), m_referrer.referrer));
@@ -69,20 +60,20 @@ StyleFetchedImage* CSSImageValue::cachedImage(Document* document, const Resource
request.setCrossOriginAccessControl(document->securityOrigin(), options.allowCredentials, options.credentialsRequested);
if (ResourcePtr<ImageResource> cachedImage = ImageResource::fetch(request, document->fetcher()))
- m_image = StyleFetchedImage::create(cachedImage.get(), document);
+ m_cachedImage = StyleFetchedImage::create(cachedImage.get(), document);
}
- return (m_image && m_image->isImageResource()) ? toStyleFetchedImage(m_image) : nullptr;
+ return (m_cachedImage && m_cachedImage->isImageResource()) ? toStyleFetchedImage(m_cachedImage) : nullptr;
}
void CSSImageValue::restoreCachedResourceIfNeeded(Document& document)
{
- if (!m_accessedImage || !m_image->isImageResource() || !document.fetcher())
+ if (m_isCachePending || !m_cachedImage->isImageResource() || !document.fetcher())
return;
if (document.fetcher()->cachedResource(KURL(ParsedURLString, m_absoluteURL)))
return;
- ImageResource* resource = m_image->cachedImage();
+ ImageResource* resource = m_cachedImage->cachedImage();
if (!resource)
return;
@@ -94,9 +85,9 @@ void CSSImageValue::restoreCachedResourceIfNeeded(Document& document)
bool CSSImageValue::hasFailedOrCanceledSubresources() const
{
- if (!m_image || !m_image->isImageResource())
+ if (!m_cachedImage || !m_cachedImage->isImageResource())
return false;
- if (Resource* cachedResource = toStyleFetchedImage(m_image)->cachedImage())
+ if (Resource* cachedResource = toStyleFetchedImage(m_cachedImage)->cachedImage())
return cachedResource->loadFailedOrCanceled();
return true;
}
@@ -114,12 +105,12 @@ String CSSImageValue::customCSSText() const
bool CSSImageValue::knownToBeOpaque(const LayoutObject* layoutObject) const
{
- return m_image ? m_image->knownToBeOpaque(layoutObject) : false;
+ return m_cachedImage ? m_cachedImage->knownToBeOpaque(layoutObject) : false;
}
DEFINE_TRACE_AFTER_DISPATCH(CSSImageValue)
{
- visitor->trace(m_image);
+ visitor->trace(m_cachedImage);
CSSValue::traceAfterDispatch(visitor);
}
@@ -130,8 +121,8 @@ void CSSImageValue::reResolveURL(const Document& document)
if (urlString == m_absoluteURL)
return;
m_absoluteURL = urlString;
- m_accessedImage = false;
- m_image.clear();
+ m_isCachePending = true;
+ m_cachedImage.clear();
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698