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 86f65618292a28c53500d98bb06686c25897ba40..994069b1c57c042f1571d49393bad2062263d0b1 100644 |
--- a/third_party/WebKit/Source/core/loader/ImageLoader.cpp |
+++ b/third_party/WebKit/Source/core/loader/ImageLoader.cpp |
@@ -297,6 +297,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, Up |
if (!newImage && !pageIsBeingDismissed(&document)) { |
crossSiteOrCSPViolationOccurred(imageSourceURL); |
dispatchErrorEvent(); |
+ dispatchLoadendEventSoon(); |
} else { |
clearFailedLoadURL(); |
} |
@@ -304,6 +305,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, Up |
if (!imageSourceURL.isNull()) { |
// Fire an error event if the url string is not empty, but the KURL is. |
dispatchErrorEvent(); |
+ dispatchLoadendEventSoon(); |
} |
noImageResourceToLoad(); |
} |
@@ -547,12 +549,13 @@ void ImageLoader::timerFired(TimerBase*) |
void ImageLoader::dispatchPendingEvent(ImageEventSender* eventSender) |
{ |
RESOURCE_LOADING_DVLOG(1) << "ImageLoader::dispatchPendingEvent " << this; |
- ASSERT(eventSender == &loadEventSender() || eventSender == &errorEventSender()); |
const AtomicString& eventType = eventSender->eventType(); |
if (eventType == EventTypeNames::load) |
dispatchPendingLoadEvent(); |
if (eventType == EventTypeNames::error) |
dispatchPendingErrorEvent(); |
+ if (eventType == EventTypeNames::loadend) |
+ dispatchPendingLoadendEvent(); |
} |
void ImageLoader::dispatchPendingLoadEvent() |
@@ -584,6 +587,15 @@ void ImageLoader::dispatchPendingErrorEvent() |
updatedHasPendingEvent(); |
} |
+void ImageLoader::dispatchPendingLoadendEvent() |
+{ |
+ if (element()->document().frame()) { |
+ dispatchLoadendEvent(); |
+ } |
+ |
+ updatedHasPendingEvent(); |
+} |
+ |
bool ImageLoader::getImageAnimationPolicy(ImageAnimationPolicy& policy) |
{ |
if (!element()->document().settings()) |