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

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

Issue 1308953009: Move Image ownership out of CSSValue (Closed) Base URL: svn://svn.chromium.org/blink/trunk
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
« no previous file with comments | « Source/core/css/CSSImageValue.h ('k') | Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/CSSImageValue.cpp
diff --git a/Source/core/css/CSSImageValue.cpp b/Source/core/css/CSSImageValue.cpp
index c4c6b7908d4f683764658f06c2e0ec6c29f2ac86..85ff89fc77ff5175dc0c1ddad4407a9e68c77f40 100644
--- a/Source/core/css/CSSImageValue.cpp
+++ b/Source/core/css/CSSImageValue.cpp
@@ -22,6 +22,7 @@
#include "core/css/CSSImageValue.h"
#include "core/css/CSSMarkup.h"
+#include "core/css/resolver/ElementStyleResources.h"
#include "core/dom/Document.h"
#include "core/fetch/FetchInitiatorTypeNames.h"
#include "core/fetch/FetchRequest.h"
@@ -34,31 +35,46 @@
namespace blink {
-CSSImageValue::CSSImageValue(const String& rawValue, const KURL& url, StyleImage* image)
+CSSImageValue::CSSImageValue(const String& rawValue, const String& url, StyleImage* image)
: CSSValue(ImageClass)
, m_relativeURL(rawValue)
- , m_absoluteURL(url.string())
+ , m_absoluteURL(url)
, m_image(image)
, m_accessedImage(image)
{
+ printf("** Made a CSSImageValue: %s, %s, image? %d, accessed? %d\n", m_relativeURL.ascii().data(), m_absoluteURL.ascii().data(), (bool)m_image, m_accessedImage);
}
CSSImageValue::~CSSImageValue()
{
+ printf("** Freed a CSSImageValue: %s, %s, image? %d, accessed? %d\n", m_relativeURL.ascii().data(), m_absoluteURL.ascii().data(), (bool)m_image, m_accessedImage);
}
+
StyleImage* CSSImageValue::cachedOrPendingImage()
{
+ printf("Ahh old cachedOrPendingImage() function\n");
if (!m_image)
m_image = StylePendingImage::create(this);
return m_image.get();
}
-StyleFetchedImage* CSSImageValue::cachedImage(Document* document, const ResourceLoaderOptions& options)
+
+StyleImage* CSSImageValue::cachedOrPendingImage(CSSStyleImageMap& imageMap)
+{
+ RefPtrWillBeMember<StyleImage>& value = imageMap.getStyleImageEntry(this).storedValue->value;
+ if (!value)
+ value = StylePendingImage::create(this);
+ return value.get();
+}
+
+StyleFetchedImage* CSSImageValue::cachedImage(Document* document, const ResourceLoaderOptions& options, CSSStyleImageMap& imageMap)
{
+ printf("Yay new cachedImage() function\n");
ASSERT(document);
+ RefPtrWillBeMember<StyleImage>& value = imageMap.getStyleImageEntry(this).storedValue->value;
if (!m_accessedImage) {
m_accessedImage = true;
@@ -68,21 +84,23 @@ StyleFetchedImage* CSSImageValue::cachedImage(Document* document, const Resource
if (options.corsEnabled == IsCORSEnabled)
request.setCrossOriginAccessControl(document->securityOrigin(), options.allowCredentials, options.credentialsRequested);
+ printf("Downloading image from %s.\n", m_absoluteURL.ascii().data());
if (ResourcePtr<ImageResource> cachedImage = ImageResource::fetch(request, document->fetcher()))
- m_image = StyleFetchedImage::create(cachedImage.get(), document);
+ value = StyleFetchedImage::create(cachedImage.get(), document);
}
- return (m_image && m_image->isImageResource()) ? toStyleFetchedImage(m_image) : 0;
+ return (value && value->isImageResource()) ? toStyleFetchedImage(value) : 0;
}
-void CSSImageValue::restoreCachedResourceIfNeeded(Document& document)
+void CSSImageValue::restoreCachedResourceIfNeeded(Document& document, CSSStyleImageMap& imageMap)
{
- if (!m_accessedImage || !m_image->isImageResource() || !document.fetcher())
+ RefPtrWillBeMember<StyleImage>& value = imageMap.getStyleImageEntry(this).storedValue->value;
+ if (!m_accessedImage || !value->isImageResource() || !document.fetcher())
return;
if (document.fetcher()->cachedResource(KURL(ParsedURLString, m_absoluteURL)))
return;
- ImageResource* resource = m_image->cachedImage();
+ ImageResource* resource = value->cachedImage();
if (!resource)
return;
@@ -94,6 +112,7 @@ void CSSImageValue::restoreCachedResourceIfNeeded(Document& document)
bool CSSImageValue::hasFailedOrCanceledSubresources() const
{
+ printf("Oh no! In hasFailedOrCancelledSubresources\n");
if (!m_image || !m_image->isImageResource())
return false;
if (Resource* cachedResource = toStyleFetchedImage(m_image)->cachedImage())
@@ -122,6 +141,7 @@ DEFINE_TRACE_AFTER_DISPATCH(CSSImageValue)
CSSValue::traceAfterDispatch(visitor);
}
+/*
void CSSImageValue::reResolveURL(const Document& document)
{
KURL url = document.completeURL(m_relativeURL);
@@ -131,5 +151,6 @@ void CSSImageValue::reResolveURL(const Document& document)
m_accessedImage = false;
m_image.clear();
}
+*/
} // namespace blink
« no previous file with comments | « Source/core/css/CSSImageValue.h ('k') | Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698