| Index: third_party/WebKit/Source/core/loader/ImageLoader.cpp | 
| diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.cpp b/third_party/WebKit/Source/core/loader/ImageLoader.cpp | 
| index 4d70ac937abf3b1757641b4c55f1e99030f59d6b..9278a0e3e77b48c239272fa2eaff52f687da392b 100644 | 
| --- a/third_party/WebKit/Source/core/loader/ImageLoader.cpp | 
| +++ b/third_party/WebKit/Source/core/loader/ImageLoader.cpp | 
| @@ -182,10 +182,11 @@ void ImageLoader::dispose() { | 
|  | 
| DEFINE_TRACE(ImageLoader) { | 
| visitor->trace(m_image); | 
| +  visitor->trace(m_imageResourceForImageDocument); | 
| visitor->trace(m_element); | 
| } | 
|  | 
| -void ImageLoader::setImage(ImageResource* newImage) { | 
| +void ImageLoader::setImage(ImageResourceContent* newImage) { | 
| setImageWithoutConsideringPendingLoadEvent(newImage); | 
|  | 
| // Only consider updating the protection ref-count of the Element immediately | 
| @@ -195,9 +196,9 @@ void ImageLoader::setImage(ImageResource* newImage) { | 
| } | 
|  | 
| void ImageLoader::setImageWithoutConsideringPendingLoadEvent( | 
| -    ImageResource* newImage) { | 
| +    ImageResourceContent* newImage) { | 
| DCHECK(m_failedLoadURL.isEmpty()); | 
| -  ImageResource* oldImage = m_image.get(); | 
| +  ImageResourceContent* oldImage = m_image.get(); | 
| if (newImage != oldImage) { | 
| m_image = newImage; | 
| if (m_hasPendingLoadEvent) { | 
| @@ -288,7 +289,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, | 
| return; | 
|  | 
| AtomicString imageSourceURL = m_element->imageSourceURL(); | 
| -  ImageResource* newImage = nullptr; | 
| +  ImageResourceContent* newImage = nullptr; | 
| if (!url.isNull()) { | 
| // Unlike raw <img>, we block mixed content inside of <picture> or | 
| // <img srcset>. | 
| @@ -318,7 +319,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, | 
| request.setAllowImagePlaceholder(); | 
| } | 
|  | 
| -    newImage = ImageResource::fetch(request, document.fetcher()); | 
| +    newImage = ImageResourceContent::fetch(request, document.fetcher()); | 
|  | 
| if (!newImage && !pageIsBeingDismissed(&document)) { | 
| crossSiteOrCSPViolationOccurred(imageSourceURL); | 
| @@ -334,7 +335,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, | 
| noImageResourceToLoad(); | 
| } | 
|  | 
| -  ImageResource* oldImage = m_image.get(); | 
| +  ImageResourceContent* oldImage = m_image.get(); | 
| if (updateBehavior == UpdateSizeChanged && m_element->layoutObject() && | 
| m_element->layoutObject()->isImage() && newImage == oldImage) { | 
| toLayoutImage(m_element->layoutObject())->intrinsicSizeChanged(); | 
| @@ -397,9 +398,11 @@ void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior, | 
| // funneling the main resource bytes into m_image, so just create an | 
| // ImageResource to be populated later. | 
| if (m_loadingImageDocument && updateBehavior != UpdateForcedReload) { | 
| -    setImage( | 
| -        ImageResource::create(imageSourceToKURL(m_element->imageSourceURL()))); | 
| -    m_image->setStatus(Resource::Pending); | 
| +    ImageResource* imageResource = | 
| +        ImageResource::create(imageSourceToKURL(m_element->imageSourceURL())); | 
| +    imageResource->setStatus(Resource::Pending); | 
| +    m_imageResourceForImageDocument = imageResource; | 
| +    setImage(imageResource->getContent()); | 
| return; | 
| } | 
|  | 
| @@ -419,7 +422,7 @@ void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior, | 
| // Allow the idiom "img.src=''; img.src='.." to clear down the image before an | 
| // asynchronous load completes. | 
| if (imageSourceURL.isEmpty()) { | 
| -    ImageResource* image = m_image.get(); | 
| +    ImageResourceContent* image = m_image.get(); | 
| if (image) { | 
| image->removeObserver(this); | 
| } | 
| @@ -467,7 +470,7 @@ bool ImageLoader::shouldLoadImmediately(const KURL& url) const { | 
| url.protocolIsData()); | 
| } | 
|  | 
| -void ImageLoader::imageNotifyFinished(ImageResource* resource) { | 
| +void ImageLoader::imageNotifyFinished(ImageResourceContent* resource) { | 
| RESOURCE_LOADING_DVLOG(1) | 
| << "ImageLoader::imageNotifyFinished " << this | 
| << "; m_hasPendingLoadEvent=" << m_hasPendingLoadEvent; | 
| @@ -510,7 +513,6 @@ void ImageLoader::imageNotifyFinished(ImageResource* resource) { | 
| updatedHasPendingEvent(); | 
| return; | 
| } | 
| -  DCHECK(!resource->wasCanceled()); | 
| loadEventSender().dispatchEventSoon(this); | 
| } | 
|  | 
| @@ -544,7 +546,7 @@ void ImageLoader::updateLayoutObject() { | 
| // Only update the layoutObject if it doesn't have an image or if what we have | 
| // is a complete image.  This prevents flickering in the case where a dynamic | 
| // change is happening between two images. | 
| -  ImageResource* cachedImage = imageResource->cachedImage(); | 
| +  ImageResourceContent* cachedImage = imageResource->cachedImage(); | 
| if (m_image != cachedImage && (m_imageComplete || !cachedImage)) | 
| imageResource->setImageResource(m_image.get()); | 
| } | 
|  |