diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 9967728e745..d565d859e76 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -386,28 +386,6 @@ impl HTMLImageElement {
let _ = task_source.queue(task, window.upcast());
}
- /// Step 10 of html.spec.whatwg.org/multipage/#update-the-image-data
- fn dispatch_loadstart_progress_event(&self) {
- struct FireprogressEventTask {
- img: Trusted,
- }
- impl Task for FireprogressEventTask {
- fn run(self: Box) {
- let progressevent = ProgressEvent::new(&self.img.root().global(),
- atom!("loadstart"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
- false, 0, 0);
- progressevent.upcast::().fire(self.img.root().upcast());
- }
- }
- let task = box FireprogressEventTask {
- img: Trusted::new(self),
- };
- let document = document_from_node(self);
- let window = document.window();
- let task_source = window.dom_manipulation_task_source();
- let _ = task_source.queue(task, window.upcast());
- }
-
/// https://html.spec.whatwg.org/multipage/#update-the-source-set
fn update_source_set(&self) -> Vec {
let elem = self.upcast::();
@@ -550,8 +528,27 @@ impl HTMLImageElement {
// TODO: take pixel density into account
match self.select_image_source() {
Some(src) => {
- // Step 10
- self.dispatch_loadstart_progress_event();
+ // Step 10.
+ let window = document.window();
+ let this = Trusted::new(self);
+ // FIXME(nox): Why are errors silenced here?
+ let _ = window.dom_manipulation_task_source().queue(
+ box task!(fire_progress_event: move || {
+ let this = this.root();
+
+ let event = ProgressEvent::new(
+ &this.global(),
+ atom!("loadstart"),
+ EventBubbles::DoesNotBubble,
+ EventCancelable::NotCancelable,
+ false,
+ 0,
+ 0,
+ );
+ event.upcast::().fire(this.upcast());
+ }),
+ window.upcast(),
+ );
// Step 11
let base_url = document.base_url();
let parsed_url = base_url.join(&src);