diff options
Diffstat (limited to 'WebCore/html/HTMLImageLoader.cpp')
-rw-r--r-- | WebCore/html/HTMLImageLoader.cpp | 15 |
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(); } |