Trigger image.onerror

This commit is contained in:
Paul Rouget 2016-08-19 13:42:04 +02:00
parent 1911606e5c
commit a48cf1d215
4 changed files with 35 additions and 4 deletions

View file

@ -86,14 +86,14 @@ impl Runnable for ImageResponseHandlerRunnable {
// Update the image field
let element = self.element.root();
let element_ref = element.r();
let (image, metadata, trigger_image_load) = match self.image {
let (image, metadata, trigger_image_load, trigger_image_error) = match self.image {
ImageResponse::Loaded(image) | ImageResponse::PlaceholderLoaded(image) => {
(Some(image.clone()), Some(ImageMetadata { height: image.height, width: image.width } ), true)
(Some(image.clone()), Some(ImageMetadata { height: image.height, width: image.width } ), true, false)
}
ImageResponse::MetadataLoaded(meta) => {
(None, Some(meta), false)
(None, Some(meta), false, false)
}
ImageResponse::None => (None, None, true)
ImageResponse::None => (None, None, false, true)
};
element_ref.current_request.borrow_mut().image = image;
element_ref.current_request.borrow_mut().metadata = metadata;
@ -107,6 +107,11 @@ impl Runnable for ImageResponseHandlerRunnable {
element.upcast::<EventTarget>().fire_simple_event("load");
}
// Fire image.onerror
if trigger_image_error {
element.upcast::<EventTarget>().fire_simple_event("error");
}
// Trigger reflow
let window = window_from_node(document.r());
window.add_pending_reflow();