Index: third_party/WebKit/Source/core/fetch/ImageResource.h |
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.h b/third_party/WebKit/Source/core/fetch/ImageResource.h |
index 152777e57229f666d6fda7066f26041a661f0bf7..12e15491cb533ab181cb62d1a92895e66ea610cc 100644 |
--- a/third_party/WebKit/Source/core/fetch/ImageResource.h |
+++ b/third_party/WebKit/Source/core/fetch/ImageResource.h |
@@ -71,7 +71,14 @@ class CORE_EXPORT ImageResource final |
// If this ImageResource has the Lo-Fi response headers or is a placeholder, |
// reload the full original image with the Lo-Fi state set to off and |
// optionally bypassing the cache. |
- void reloadIfLoFiOrPlaceholder( |
+ // This method starts reloading for the corresponding ImageResourceContent |
+ // (this->getContent()) by creating a new ImageResource. |
+ // The ImageResourceContent is detached from |this| and attached to the new |
+ // ImageResource. |
+ // |this| no longer has ImageResourceContent and shouldn't be used anymore. |
+ // This method returns the new ImageResource that is used for reloading |
+ // if reloading is started, or nullptr otherwise. |
+ ImageResource* reloadIfLoFiOrPlaceholder( |
ResourceFetcher*, |
ReloadCachePolicy = ReloadCachePolicy::BypassCache); |
@@ -83,10 +90,11 @@ class CORE_EXPORT ImageResource final |
PassRefPtr<const SharedBuffer> resourceBuffer() const override; |
void appendData(const char*, size_t) override; |
- void error(const ResourceError&) override; |
+ void error(const ResourceError&, ResourceFetcher* fetcherForReload) override; |
void responseReceived(const ResourceResponse&, |
std::unique_ptr<WebDataConsumerHandle>) override; |
- void finish(double finishTime = 0.0) override; |
+ void finish(double finishTime = 0.0, |
+ ResourceFetcher* fetcherForReload = nullptr) override; |
// For compatibility, images keep loading even if there are HTTP errors. |
bool shouldIgnoreHTTPStatusCodeErrors() const override { return true; } |
@@ -130,8 +138,6 @@ class CORE_EXPORT ImageResource final |
void updateImageAndClearBuffer(); |
- void checkNotify() override; |
- |
void destroyDecodedDataIfPossible() override; |
void destroyDecodedDataForFailedRevalidation() override; |
@@ -140,11 +146,14 @@ class CORE_EXPORT ImageResource final |
// new image creation. |
void updateImage(PassRefPtr<SharedBuffer>, |
ImageResourceContent::ClearImageOption, |
- bool allDataReceived); |
+ bool allDataReceived, |
+ ResourceFetcher* fetcherForReload = nullptr); |
void flushImageIfNeeded(TimerBase*); |
bool willPaintBrokenImage() const; |
+ void detachContent(); |
+ |
Member<ImageResourceContent> m_content; |
// Indicates whether updateImage() is called for this resource, or for this |
@@ -159,10 +168,6 @@ class CORE_EXPORT ImageResource final |
MultipartParsingState::WaitingForFirstPart; |
bool m_hasDevicePixelRatioHeaderValue; |
- // Indicates if the ImageResource is currently scheduling a reload, e.g. |
- // because reloadIfLoFi() was called. |
- bool m_isSchedulingReload; |
- |
// Indicates if this ImageResource is either attempting to load a placeholder |
// image, or is a (possibly broken) placeholder image. |
bool m_isPlaceholder; |