mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Trigger image.onerror
This commit is contained in:
parent
1911606e5c
commit
a48cf1d215
4 changed files with 35 additions and 4 deletions
|
@ -86,14 +86,14 @@ impl Runnable for ImageResponseHandlerRunnable {
|
||||||
// Update the image field
|
// Update the image field
|
||||||
let element = self.element.root();
|
let element = self.element.root();
|
||||||
let element_ref = element.r();
|
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) => {
|
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) => {
|
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().image = image;
|
||||||
element_ref.current_request.borrow_mut().metadata = metadata;
|
element_ref.current_request.borrow_mut().metadata = metadata;
|
||||||
|
@ -107,6 +107,11 @@ impl Runnable for ImageResponseHandlerRunnable {
|
||||||
element.upcast::<EventTarget>().fire_simple_event("load");
|
element.upcast::<EventTarget>().fire_simple_event("load");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fire image.onerror
|
||||||
|
if trigger_image_error {
|
||||||
|
element.upcast::<EventTarget>().fire_simple_event("error");
|
||||||
|
}
|
||||||
|
|
||||||
// Trigger reflow
|
// Trigger reflow
|
||||||
let window = window_from_node(document.r());
|
let window = window_from_node(document.r());
|
||||||
window.add_pending_reflow();
|
window.add_pending_reflow();
|
||||||
|
|
|
@ -19305,6 +19305,10 @@
|
||||||
"path": "html/semantics/embedded-content/the-img-element/invalid-src.html",
|
"path": "html/semantics/embedded-content/the-img-element/invalid-src.html",
|
||||||
"url": "/html/semantics/embedded-content/the-img-element/invalid-src.html"
|
"url": "/html/semantics/embedded-content/the-img-element/invalid-src.html"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "html/semantics/embedded-content/the-img-element/nonexistent-image.html",
|
||||||
|
"url": "/html/semantics/embedded-content/the-img-element/nonexistent-image.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "html/semantics/embedded-content/the-img-element/relevant-mutations.html",
|
"path": "html/semantics/embedded-content/the-img-element/relevant-mutations.html",
|
||||||
"url": "/html/semantics/embedded-content/the-img-element/relevant-mutations.html"
|
"url": "/html/semantics/embedded-content/the-img-element/relevant-mutations.html"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[tex-image-and-sub-image-2d-with-svg-image.html]
|
[tex-image-and-sub-image-2d-with-svg-image.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[WebGL test #0: at (4, 4) expected: 0,255,0 was 0,0,0]
|
[WebGL test #0: at (4, 4) expected: 0,255,0 was 0,0,0]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Loading an nonexisting image should fail; triggering appropriate events</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<img>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
async_test(function(t) {
|
||||||
|
var img = document.querySelector("img");
|
||||||
|
img.onload = this.step_func_done(function() {
|
||||||
|
assert_unreached("image.onload() was not supposed to be called");
|
||||||
|
});
|
||||||
|
img.onerror = this.step_func_done(function(e) {
|
||||||
|
assert_equals(e.type, "error", "image.onerror() called");
|
||||||
|
t.done();
|
||||||
|
});
|
||||||
|
img.src = "404";
|
||||||
|
});
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue