Index: third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp |
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp |
index 32fedae9baa97bc96bb98e8f8650d56d8d3cf01e..6093656f243a6c4ceed77e5bbd5a98c47da46e12 100644 |
--- a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp |
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp |
@@ -34,16 +34,12 @@ class NullImageResourceInfo final |
private: |
const KURL& url() const override { return m_url; } |
- bool isSchedulingReload() const override { return false; } |
bool hasDevicePixelRatioHeaderValue() const override { return false; } |
float devicePixelRatioHeaderValue() const override { return 1.0; } |
const ResourceResponse& response() const override { return m_response; } |
ResourceStatus getStatus() const override { return ResourceStatus::Cached; } |
bool isPlaceholder() const override { return false; } |
bool isCacheValidator() const override { return false; } |
- bool schedulingReloadOrShouldReloadBrokenPlaceholder() const override { |
- return false; |
- } |
bool isAccessAllowed( |
SecurityOrigin*, |
DoesCurrentFrameHaveSingleSecurityOrigin) const override { |
@@ -51,8 +47,13 @@ class NullImageResourceInfo final |
} |
bool hasCacheControlNoStoreHeader() const override { return false; } |
const ResourceError& resourceError() const override { return m_error; } |
+ const ImageResource* resourceForTest() const override { return nullptr; } |
void decodeError(bool allDataReceived) override {} |
+ bool reloadIfLoFiOrPlaceholderIfNeeded( |
+ ResourceFetcher* fetcherForReload) override { |
+ return false; |
+ } |
void setDecodedSize(size_t) override {} |
void willAddClientOrObserver() override {} |
void didRemoveClientOrObserver() override {} |
@@ -115,8 +116,7 @@ void ImageResourceContent::addObserver(ImageResourceObserver* observer) { |
observer->imageChanged(this); |
} |
- if (isLoaded() && m_observers.contains(observer) && |
- !m_info->schedulingReloadOrShouldReloadBrokenPlaceholder()) { |
+ if (isLoaded() && m_observers.contains(observer)) { |
markObserverFinished(observer); |
observer->imageNotifyFinished(this); |
} |
@@ -269,8 +269,7 @@ void ImageResourceContent::notifyObservers( |
if (m_observers.contains(observer)) { |
observer->imageChanged(this, changeRect); |
if (notifyingFinishOption == ShouldNotifyFinish && |
- m_observers.contains(observer) && |
- !m_info->schedulingReloadOrShouldReloadBrokenPlaceholder()) { |
+ m_observers.contains(observer)) { |
markObserverFinished(observer); |
observer->imageNotifyFinished(this); |
} |
@@ -299,7 +298,8 @@ void ImageResourceContent::clearImage() { |
void ImageResourceContent::updateImage(PassRefPtr<SharedBuffer> data, |
UpdateImageOption updateImageOption, |
- bool allDataReceived) { |
+ bool allDataReceived, |
+ ResourceFetcher* fetcherForReload) { |
TRACE_EVENT0("blink", "ImageResourceContent::updateImage"); |
// Clears the existing image, if instructed by |updateImageOption|. |
@@ -359,6 +359,9 @@ void ImageResourceContent::updateImage(PassRefPtr<SharedBuffer> data, |
break; |
} |
+ if (m_info->reloadIfLoFiOrPlaceholderIfNeeded(fetcherForReload)) |
Nate Chapin
2016/12/28 00:14:57
Is it critical that this happen before notifyObser
hiroshige
2017/01/25 02:01:49
This is to keep the current behavior of "ImageReso
|
+ return; |
+ |
// Notifies the observers. |
// It would be nice to only redraw the decoded band of the image, but with the |
// current design (decoding delayed until painting) that seems hard. |
@@ -483,5 +486,8 @@ const ResourceResponse& ImageResourceContent::response() const { |
const ResourceError& ImageResourceContent::resourceError() const { |
return m_info->resourceError(); |
} |
+const ImageResource* ImageResourceContent::resourceForTest() const { |
+ return m_info->resourceForTest(); |
+} |
} // namespace blink |