| 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 67abfc4a4ef71e2e5d06b0d7d1415ca037439650..3aa08806351920f2d015c432164ba8c87a718188 100644
 | 
| --- a/third_party/WebKit/Source/core/fetch/ImageResource.cpp
 | 
| +++ b/third_party/WebKit/Source/core/fetch/ImageResource.cpp
 | 
| @@ -367,7 +367,9 @@ void ImageResource::updateImage(bool allDataReceived)
 | 
|      // to decode.
 | 
|      if (sizeAvailable || allDataReceived) {
 | 
|          if (!m_image || m_image->isNull()) {
 | 
| -            error(errorOccurred() ? getStatus() : DecodeError);
 | 
| +            if (!errorOccurred())
 | 
| +                setStatus(DecodeError);
 | 
| +            clear();
 | 
|              if (memoryCache()->contains(this))
 | 
|                  memoryCache()->remove(this);
 | 
|              return;
 | 
| @@ -379,27 +381,31 @@ void ImageResource::updateImage(bool allDataReceived)
 | 
|      }
 | 
|  }
 | 
|  
 | 
| -void ImageResource::finish()
 | 
| +void ImageResource::updateImageAndClearBuffer()
 | 
| +{
 | 
| +    clearImage();
 | 
| +    updateImage(true);
 | 
| +    m_data.clear();
 | 
| +}
 | 
| +
 | 
| +void ImageResource::finish(double loadFinishTime)
 | 
|  {
 | 
|      if (m_multipartParser) {
 | 
|          m_multipartParser->finish();
 | 
| -        if (m_data) {
 | 
| -            clearImage();
 | 
| -            updateImage(true);
 | 
| -            m_data.clear();
 | 
| -        }
 | 
| +        if (m_data)
 | 
| +            updateImageAndClearBuffer();
 | 
|      } else {
 | 
|          updateImage(true);
 | 
|      }
 | 
| -    Resource::finish();
 | 
| +    Resource::finish(loadFinishTime);
 | 
|  }
 | 
|  
 | 
| -void ImageResource::error(Resource::Status status)
 | 
| +void ImageResource::error(const ResourceError& error)
 | 
|  {
 | 
|      if (m_multipartParser)
 | 
|          m_multipartParser->cancel();
 | 
|      clear();
 | 
| -    Resource::error(status);
 | 
| +    Resource::error(error);
 | 
|      notifyObservers();
 | 
|  }
 | 
|  
 | 
| @@ -498,7 +504,10 @@ void ImageResource::reloadIfLoFi(ResourceFetcher* fetcher)
 | 
|          return;
 | 
|      m_resourceRequest.setCachePolicy(WebCachePolicy::BypassingCache);
 | 
|      m_resourceRequest.setLoFiState(WebURLRequest::LoFiOff);
 | 
| -    error(Resource::LoadError);
 | 
| +    if (isLoading())
 | 
| +        m_loader->cancel();
 | 
| +    else
 | 
| +        updateImageAndClearBuffer();
 | 
|      setStatus(NotStarted);
 | 
|      load(fetcher);
 | 
|  }
 | 
| @@ -520,9 +529,7 @@ void ImageResource::onePartInMultipartReceived(const ResourceResponse& response)
 | 
|          m_multipartParsingState = MultipartParsingState::ParsingFirstPart;
 | 
|          return;
 | 
|      }
 | 
| -    clear();
 | 
| -    updateImage(true);
 | 
| -    m_data.clear();
 | 
| +    updateImageAndClearBuffer();
 | 
|  
 | 
|      if (m_multipartParsingState == MultipartParsingState::ParsingFirstPart) {
 | 
|          m_multipartParsingState = MultipartParsingState::FinishedParsingFirstPart;
 | 
| 
 |