aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlimageelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlimageelement.rs')
-rw-r--r--components/script/dom/htmlimageelement.rs49
1 files changed, 17 insertions, 32 deletions
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index c9af5f5eee0..f32be52442b 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -403,36 +403,6 @@ impl HTMLImageElement {
self.update_source_set().first().cloned()
}
- /// Step 5.3.7 of https://html.spec.whatwg.org/multipage/#update-the-image-data
- fn set_current_request_url_to_string_and_fire_load(&self, src: DOMString, url: ServoUrl) {
- struct SetUrlToStringTask {
- img: Trusted<HTMLImageElement>,
- src: String,
- url: ServoUrl
- }
- impl Task for SetUrlToStringTask {
- fn run(self: Box<Self>) {
- let img = self.img.root();
- {
- let mut current_request = img.current_request.borrow_mut();
- current_request.parsed_url = Some(self.url.clone());
- current_request.source_url = Some(self.src.into());
- }
- // TODO: restart animation, if set
- img.upcast::<EventTarget>().fire_event(atom!("load"));
- }
- }
- let task = box SetUrlToStringTask {
- img: Trusted::new(self),
- src: src.into(),
- url: url
- };
- 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());
- }
-
fn init_image_request(&self,
request: &mut RefMut<ImageRequest>,
url: &ServoUrl,
@@ -606,8 +576,23 @@ impl HTMLImageElement {
current_request.final_url = Some(url);
current_request.image = Some(image.clone());
current_request.metadata = Some(metadata);
- self.set_current_request_url_to_string_and_fire_load(src, img_url);
- return
+ let this = Trusted::new(self);
+ let src = String::from(src);
+ let _ = window.dom_manipulation_task_source().queue(
+ box task!(image_load_event: move || {
+ let this = this.root();
+ {
+ let mut current_request =
+ this.current_request.borrow_mut();
+ current_request.parsed_url = Some(img_url);
+ current_request.source_url = Some(src.into());
+ }
+ // TODO: restart animation, if set.
+ this.upcast::<EventTarget>().fire_event(atom!("load"));
+ }),
+ window.upcast(),
+ );
+ return;
}
}
}