aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/storage.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-09-17 23:32:16 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2017-09-18 02:47:24 +0200
commit56a546afcde4f33838b37792bbc7b91576ab79a7 (patch)
treeda95bbebd540247f0af4326faab5ced1aad3ad31 /components/script/dom/storage.rs
parent915a4f83858fb28153e1e7662d8c46ba9c86e1f9 (diff)
downloadservo-56a546afcde4f33838b37792bbc7b91576ab79a7.tar.gz
servo-56a546afcde4f33838b37792bbc7b91576ab79a7.zip
Use task! to send a storage notification
Diffstat (limited to 'components/script/dom/storage.rs')
-rw-r--r--components/script/dom/storage.rs45
1 files changed, 14 insertions, 31 deletions
diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs
index fdd2ae4c504..3dbada1b334 100644
--- a/components/script/dom/storage.rs
+++ b/components/script/dom/storage.rs
@@ -19,7 +19,6 @@ use net_traits::IpcSend;
use net_traits::storage_thread::{StorageThreadMsg, StorageType};
use script_traits::ScriptMsg;
use servo_url::ServoUrl;
-use task::Task;
use task_source::TaskSource;
#[dom_struct]
@@ -166,41 +165,25 @@ impl Storage {
new_value: Option<String>,
) {
let global = self.global();
+ let this = Trusted::new(self);
global.as_window().dom_manipulation_task_source().queue(
- box StorageEventTask {
- element: Trusted::new(self),
- url,
- key,
- old_value,
- new_value,
- },
- global.upcast(),
- ).unwrap();
- struct StorageEventTask {
- element: Trusted<Storage>,
- url: ServoUrl,
- key: Option<String>,
- old_value: Option<String>,
- new_value: Option<String>
- }
- impl Task for StorageEventTask {
- fn run(self: Box<Self>) {
- let this = *self;
- let storage = this.element.root();
- let global = storage.global();
- let storage_event = StorageEvent::new(
+ box task!(send_storage_notification: move || {
+ let this = this.root();
+ let global = this.global();
+ let event = StorageEvent::new(
global.as_window(),
atom!("storage"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
- this.key.map(DOMString::from),
- this.old_value.map(DOMString::from),
- this.new_value.map(DOMString::from),
- DOMString::from(this.url.into_string()),
- Some(&storage)
+ key.map(DOMString::from),
+ old_value.map(DOMString::from),
+ new_value.map(DOMString::from),
+ DOMString::from(url.into_string()),
+ Some(&this),
);
- storage_event.upcast::<Event>().fire(global.upcast());
- }
- }
+ event.upcast::<Event>().fire(global.upcast());
+ }),
+ global.upcast(),
+ ).unwrap();
}
}