diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 4a9a94dccde..505b649e50c 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -22,7 +22,7 @@ use crate::dom::bindings::str::{DOMString, USVString};
use crate::dom::document::Document;
use crate::dom::element::{reflect_cross_origin_attribute, set_cross_origin_attribute};
use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
-use crate::dom::event::{Event, EventBubbles, EventCancelable};
+use crate::dom::event::Event;
use crate::dom::eventtarget::EventTarget;
use crate::dom::globalscope::GlobalScope;
use crate::dom::htmlareaelement::HTMLAreaElement;
@@ -37,7 +37,6 @@ use crate::dom::node::{
document_from_node, window_from_node, BindContext, Node, NodeDamage, ShadowIncluding,
};
use crate::dom::performanceresourcetiming::InitiatorType;
-use crate::dom::progressevent::ProgressEvent;
use crate::dom::values::UNSIGNED_LONG_MAX;
use crate::dom::virtualmethods::VirtualMethods;
use crate::dom::window::Window;
@@ -809,26 +808,7 @@ impl HTMLImageElement {
return;
},
};
- // Step 10.
- let target = Trusted::new(self.upcast::());
- // FIXME(nox): Why are errors silenced here?
- let _ = task_source.queue(
- task!(fire_progress_event: move || {
- let target = target.root();
- let event = ProgressEvent::new(
- &target.global(),
- atom!("loadstart"),
- EventBubbles::DoesNotBubble,
- EventCancelable::NotCancelable,
- false,
- 0,
- 0,
- );
- event.upcast::().fire(&target);
- }),
- window.upcast(),
- );
// Step 11
let base_url = document.base_url();
let parsed_url = base_url.join(&src.0);
@@ -850,7 +830,6 @@ impl HTMLImageElement {
current_request.source_url = Some(USVString(src))
}
this.upcast::().fire_event(atom!("error"));
- this.upcast::().fire_event(atom!("loadend"));
// FIXME(nox): According to the spec, setting the current
// request to the broken state is done prior to queuing a
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index f692fd6e6cd..3d023211792 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -640951,7 +640951,7 @@
"support"
],
"html/semantics/embedded-content/the-img-element/invalid-src.html": [
- "c3c57ee3c0a05019be4db6650eeefdd53648401e",
+ "37ea8ce754a3feaa3e305f10899632d231c92363",
"testharness"
],
"html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html": [
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/historical-progress-event.window.js.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/historical-progress-event.window.js.ini
deleted file mode 100644
index d691ef02bd6..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/historical-progress-event.window.js.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[historical-progress-event.window.html]
- [
does not support ProgressEvent or loadstart/progress/loadend]
- expected: FAIL
-
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/invalid-src.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/invalid-src.html
index c3c57ee3c0a..37ea8ce754a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/invalid-src.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/invalid-src.html
@@ -9,41 +9,23 @@
async_test(function(t) {
var img = document.getElementById("brokenurl");
img.src = "http://[";
- var errorevent = false;
- var loadendevent = false;
// The errors should be queued in the event loop, so they should only trigger
// after this block of code finishes, not during the img.src setter itself
img.addEventListener('error', t.step_func(function() {
- assert_false(loadendevent, "loadend should fire after error");
- errorevent = true;
- t.step_timeout(t.step_func_done(function() {
- assert_true(loadendevent, "loadend event fired");
- }), 0);
- }));
- img.addEventListener('loadend', t.step_func(function() {
- assert_true(errorevent, "error event fired");
- loadendevent = true;
+ t.step_timeout(t.step_func_done(), 0);
}));
}, 'src="http://["');
async_test(function(t) {
var img = document.getElementById("emptysrc");
img.src = "";
- var loadendevent = false;
// Setting src to empty string triggers only error event.
// The errors should be queued in the event loop, so they should only trigger
// after this block of code finishes, not during the img.src setter itself
img.addEventListener('error', t.step_func(function() {
- // Queue this check in the event loop to check there is no loadend event
- // fired.
- t.step_timeout(t.step_func_done(function() {
- assert_false(loadendevent, "loadend event should not be fired");
- }), 0);
- }));
- img.addEventListener('loadend', t.step_func(function() {
- loadendevent = true;
+ t.step_timeout(t.step_func_done(), 0);
}));
}, 'src=""');