summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLImageLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/HTMLImageLoader.cpp')
-rw-r--r--WebCore/html/HTMLImageLoader.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/WebCore/html/HTMLImageLoader.cpp b/WebCore/html/HTMLImageLoader.cpp
index 5dac8bf..ea53d7e 100644
--- a/WebCore/html/HTMLImageLoader.cpp
+++ b/WebCore/html/HTMLImageLoader.cpp
@@ -42,7 +42,10 @@ HTMLImageLoader::~HTMLImageLoader()
void HTMLImageLoader::dispatchLoadEvent()
{
- element()->dispatchEventForType(image()->errorOccurred() ? eventNames().errorEvent : eventNames().loadEvent, false, false);
+ bool errorOccurred = image()->errorOccurred();
+ if (!errorOccurred && image()->httpStatusCodeErrorOccurred())
+ errorOccurred = element()->hasTagName(HTMLNames::objectTag); // An <object> considers a 404 to be an error and should fire onerror.
+ element()->dispatchEvent(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false);
}
String HTMLImageLoader::sourceURI(const AtomicString& attr) const
@@ -50,12 +53,14 @@ String HTMLImageLoader::sourceURI(const AtomicString& attr) const
return parseURL(attr);
}
-void HTMLImageLoader::notifyFinished(CachedResource* image)
-{
+void HTMLImageLoader::notifyFinished(CachedResource*)
+{
+ CachedImage* cachedImage = image();
+
Element* elem = element();
- ImageLoader::notifyFinished(image);
+ ImageLoader::notifyFinished(cachedImage);
- if (image->errorOccurred() && elem->hasTagName(HTMLNames::objectTag))
+ if ((cachedImage->errorOccurred() || cachedImage->httpStatusCodeErrorOccurred()) && elem->hasTagName(HTMLNames::objectTag))
static_cast<HTMLObjectElement*>(elem)->renderFallbackContent();
}