aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlimageelement.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-09-17 20:39:14 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2017-09-18 02:47:12 +0200
commitfba54c77355990a59bdd54733359eda1352ac0e4 (patch)
tree5d8ef976fe52665e417d475f63638660f3bfd8f8 /components/script/dom/htmlimageelement.rs
parent30a1d3f617b8a53cb4af64c1c62a401a41ccdcbf (diff)
downloadservo-fba54c77355990a59bdd54733359eda1352ac0e4.tar.gz
servo-fba54c77355990a59bdd54733359eda1352ac0e4.zip
Use task! to fire a progress event when updating the image data
Diffstat (limited to 'components/script/dom/htmlimageelement.rs')
-rw-r--r--components/script/dom/htmlimageelement.rs45
1 files changed, 21 insertions, 24 deletions
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<HTMLImageElement>,
- }
- impl Task for FireprogressEventTask {
- fn run(self: Box<Self>) {
- let progressevent = ProgressEvent::new(&self.img.root().global(),
- atom!("loadstart"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
- false, 0, 0);
- progressevent.upcast::<Event>().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<DOMString> {
let elem = self.upcast::<Element>();
@@ -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::<Event>().fire(this.upcast());
+ }),
+ window.upcast(),
+ );
// Step 11
let base_url = document.base_url();
let parsed_url = base_url.join(&src);