diff options
3 files changed, 30 insertions, 1 deletions
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 65897f1c91a..9379ebb48a9 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -296,7 +296,9 @@ impl HTMLImageElement { self.upcast::<EventTarget>().fire_event(atom!("error")); } - LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker); + if trigger_image_load || trigger_image_error { + LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker); + } // Trigger reflow let window = window_from_node(self); diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 70715054688..2223d4e2282 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -93299,6 +93299,12 @@ {} ] ], + "html/semantics/embedded-content/the-img-element/delay-load-event.html": [ + [ + "/html/semantics/embedded-content/the-img-element/delay-load-event.html", + {} + ] + ], "html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html": [ [ "/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html", @@ -176326,6 +176332,10 @@ "bdbfbe9a5908c6233bd7b9697a0762bd2e0f6ede", "testharness" ], + "html/semantics/embedded-content/the-img-element/delay-load-event.html": [ + "e4782535af755b29864fd3de67bbdd0de13f19d7", + "testharness" + ], "html/semantics/embedded-content/the-img-element/document-adopt-base-url.html": [ "a4b542eb344cca6bdcceceb3aa7006e900f5400f", "reftest" diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html new file mode 100644 index 00000000000..c67074a40d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>Image element delays window's load event</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<img src="resources/cat.jpg?pipe=trickle(d2)"> +<script> + async_test(function(t) { + var saw_img_load = false; + document.querySelector('img').onload = t.step_func(function() { + saw_img_load = true; + }); + addEventListener('load', t.step_func_done(function() { + assert_true(saw_img_load); + })); + }); +</script> |