Index: third_party/WebKit/Source/core/fetch/ImageResource.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.cpp b/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
index 929cb375d24e5dcb1ae3a954288a0506d43996ba..97f790370306ad66ca0d81aecdc6d3de301eff23 100644 |
--- a/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
@@ -23,6 +23,7 @@ |
#include "core/fetch/ImageResource.h" |
+#include "base/metrics/histogram_macros.h" |
#include "core/fetch/ImageResourceObserver.h" |
#include "core/fetch/MemoryCache.h" |
#include "core/fetch/ResourceClient.h" |
@@ -107,7 +108,8 @@ ImageResource::ImageResource(const ResourceRequest& resourceRequest, |
m_image(nullptr), |
m_hasDevicePixelRatioHeaderValue(false), |
m_isSchedulingReload(false), |
- m_isPlaceholder(isPlaceholder) { |
+ m_isPlaceholder(isPlaceholder), |
+ m_isRefetchableFromDiskCache(true) { |
RESOURCE_LOADING_DVLOG(1) << "new ImageResource(ResourceRequest) " << this; |
} |
@@ -118,7 +120,8 @@ ImageResource::ImageResource(blink::Image* image, |
m_image(image), |
m_hasDevicePixelRatioHeaderValue(false), |
m_isSchedulingReload(false), |
- m_isPlaceholder(false) { |
+ m_isPlaceholder(false), |
+ m_isRefetchableFromDiskCache(true) { |
RESOURCE_LOADING_DVLOG(1) << "new ImageResource(Image) " << this; |
setStatus(Cached); |
} |
@@ -174,6 +177,9 @@ void ImageResource::didAddClient(ResourceClient* client) { |
if (m_isSchedulingReload || shouldReloadBrokenPlaceholder()) |
return; |
+ if (client->isRefetchableFromDiskCache()) |
+ m_isRefetchableFromDiskCache = false; |
+ |
Resource::didAddClient(client); |
} |
@@ -252,6 +258,10 @@ void ImageResource::destroyDecodedDataIfPossible() { |
return; |
CHECK(!errorOccurred()); |
m_image->destroyDecodedData(); |
+ if (!isPreloaded() && m_isRefetchableFromDiskCache) { |
+ UMA_HISTOGRAM_MEMORY_KB("Memory.Renderer.EstimatedDroppableEncodedSize", |
+ encodedSize() / 1024); |
+ } |
} |
void ImageResource::doResetAnimation() { |