From d2413891292bfb4d5f17d7eb1e3882e07f6ac626 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Tue, 18 Jul 2017 08:19:44 +0200 Subject: make use of ScriptToConstellationChan --- components/script/dom/storage.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index ea4662dda20..d596a6243de 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -151,11 +151,10 @@ impl Storage { /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification fn broadcast_change_notification(&self, key: Option, old_value: Option, new_value: Option) { - let pipeline_id = self.global().pipeline_id(); let storage = self.storage_type; let url = self.get_url(); - let msg = ScriptMsg::BroadcastStorageEvent(pipeline_id, storage, url, key, old_value, new_value); - self.global().constellation_chan().send(msg).unwrap(); + let msg = ScriptMsg::BroadcastStorageEvent(storage, url, key, old_value, new_value); + self.global().script_to_constellation_chan().send(msg).unwrap(); } /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification -- cgit v1.2.3 From 99e4504f85afe0e9fa678796735c971295c8c709 Mon Sep 17 00:00:00 2001 From: toidiu Date: Sun, 3 Sep 2017 16:30:48 -0400 Subject: move name implementation as default implementation to the trait and remove overrides. --- components/script/dom/storage.rs | 2 -- 1 file changed, 2 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index d596a6243de..f14f1aad67f 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -187,8 +187,6 @@ impl StorageEventRunnable { } impl Runnable for StorageEventRunnable { - fn name(&self) -> &'static str { "StorageEventRunnable" } - fn main_thread_handler(self: Box, _: &ScriptThread) { let this = *self; let storage = this.element.root(); -- cgit v1.2.3 From 69275162b03d663394cd7bfe564890187e00de52 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 16 Sep 2017 01:15:44 +0200 Subject: Clean up Storage::queue_storage_event This moves the Runnable type directly in the method and makes it not use main_thread_handler, which is unneeded here anyway. --- components/script/dom/storage.rs | 89 ++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 45 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index f14f1aad67f..1f7cba224f6 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -17,7 +17,7 @@ use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcSender}; use net_traits::IpcSend; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; -use script_thread::{Runnable, ScriptThread}; +use script_thread::Runnable; use script_traits::ScriptMsg; use servo_url::ServoUrl; use task_source::TaskSource; @@ -158,50 +158,49 @@ impl Storage { } /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification - pub fn queue_storage_event(&self, url: ServoUrl, - key: Option, old_value: Option, new_value: Option) { + pub fn queue_storage_event( + &self, + url: ServoUrl, + key: Option, + old_value: Option, + new_value: Option, + ) { let global = self.global(); - let window = global.as_window(); - let task_source = window.dom_manipulation_task_source(); - let trusted_storage = Trusted::new(self); - task_source - .queue( - box StorageEventRunnable::new(trusted_storage, url, key, old_value, new_value), &global) - .unwrap(); - } -} - -pub struct StorageEventRunnable { - element: Trusted, - url: ServoUrl, - key: Option, - old_value: Option, - new_value: Option -} - -impl StorageEventRunnable { - fn new(storage: Trusted, url: ServoUrl, - key: Option, old_value: Option, new_value: Option) -> StorageEventRunnable { - StorageEventRunnable { element: storage, url: url, key: key, old_value: old_value, new_value: new_value } - } -} - -impl Runnable for StorageEventRunnable { - fn main_thread_handler(self: Box, _: &ScriptThread) { - let this = *self; - let storage = this.element.root(); - let global = storage.global(); - let window = global.as_window(); - - let storage_event = StorageEvent::new( - &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) - ); - - storage_event.upcast::().fire(window.upcast()); + global.as_window().dom_manipulation_task_source().queue( + box StorageEventRunnable { + element: Trusted::new(self), + url, + key, + old_value, + new_value, + }, + global.upcast(), + ).unwrap(); + struct StorageEventRunnable { + element: Trusted, + url: ServoUrl, + key: Option, + old_value: Option, + new_value: Option + } + impl Runnable for StorageEventRunnable { + fn handler(self: Box) { + let this = *self; + let storage = this.element.root(); + let global = storage.global(); + let storage_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) + ); + storage_event.upcast::().fire(global.upcast()); + } + } } } -- cgit v1.2.3 From 56117d31856be46d7df417e659a4406305b4e258 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 16 Sep 2017 02:09:26 +0200 Subject: Rename Runnable to Task The changes are: * `*Runnable` -> `*Task`; * `RunnableMsg` -> `Task`; * `RunnableWrapper` -> `TaskCanceller`; * `MainThreadRunnable` -> `MainThreadTask`; * `wrap_runnable` -> `wrap_task`; * `get_runnable_wrapper` -> `task_canceller`; * `handler` -> `run`; * `main_thread_handler` -> `run_with_script_thread`. --- components/script/dom/storage.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 1f7cba224f6..65c21bc6706 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -17,7 +17,7 @@ use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcSender}; use net_traits::IpcSend; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; -use script_thread::Runnable; +use script_thread::Task; use script_traits::ScriptMsg; use servo_url::ServoUrl; use task_source::TaskSource; @@ -167,7 +167,7 @@ impl Storage { ) { let global = self.global(); global.as_window().dom_manipulation_task_source().queue( - box StorageEventRunnable { + box StorageEventTask { element: Trusted::new(self), url, key, @@ -176,15 +176,15 @@ impl Storage { }, global.upcast(), ).unwrap(); - struct StorageEventRunnable { + struct StorageEventTask { element: Trusted, url: ServoUrl, key: Option, old_value: Option, new_value: Option } - impl Runnable for StorageEventRunnable { - fn handler(self: Box) { + impl Task for StorageEventTask { + fn run(self: Box) { let this = *self; let storage = this.element.root(); let global = storage.global(); -- cgit v1.2.3 From 46628fba05a548c1c2141d7c709b6e5d812f3114 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 17 Sep 2017 16:41:54 +0200 Subject: Move Task to its own module --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 65c21bc6706..fdd2ae4c504 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -17,9 +17,9 @@ use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcSender}; use net_traits::IpcSend; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; -use script_thread::Task; use script_traits::ScriptMsg; use servo_url::ServoUrl; +use task::Task; use task_source::TaskSource; #[dom_struct] -- cgit v1.2.3 From 56a546afcde4f33838b37792bbc7b91576ab79a7 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 17 Sep 2017 23:32:16 +0200 Subject: Use task! to send a storage notification --- components/script/dom/storage.rs | 45 +++++++++++++--------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) (limited to 'components/script/dom/storage.rs') 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, ) { 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, - url: ServoUrl, - key: Option, - old_value: Option, - new_value: Option - } - impl Task for StorageEventTask { - fn run(self: Box) { - 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::().fire(global.upcast()); - } - } + event.upcast::().fire(global.upcast()); + }), + global.upcast(), + ).unwrap(); } } -- cgit v1.2.3 From 6c9fb5ae7a4eb6cff38de3bb6446af304a32bc8a Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 20 Sep 2017 10:37:09 +0200 Subject: Introduce TaskOnce Having both TaskBox and TaskOnce allows us to remove the superfluous inner boxing from CancellableTask. --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 3dbada1b334..e7b948e46d6 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -167,7 +167,7 @@ impl Storage { let global = self.global(); let this = Trusted::new(self); global.as_window().dom_manipulation_task_source().queue( - box task!(send_storage_notification: move || { + task!(send_storage_notification: move || { let this = this.root(); let global = this.global(); let event = StorageEvent::new( -- cgit v1.2.3 From 0e3c54c1911ba2c3bf305ee04f04fcd9bf2fc2fe Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 25 Sep 2017 23:30:24 +0200 Subject: Rename dom::bindings::js to dom::bindings::root --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index e7b948e46d6..ba4ac955e6d 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -6,9 +6,9 @@ use dom::bindings::codegen::Bindings::StorageBinding; use dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; use dom::bindings::error::{Error, ErrorResult}; use dom::bindings::inheritance::Castable; -use dom::bindings::js::Root; use dom::bindings::refcounted::Trusted; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; +use dom::bindings::root::Root; use dom::bindings::str::DOMString; use dom::event::{Event, EventBubbles, EventCancelable}; use dom::storageevent::StorageEvent; -- cgit v1.2.3 From f87c2a8d7616112ca924e30292db2d244cf87eec Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 26 Sep 2017 01:53:40 +0200 Subject: Rename Root to DomRoot In a later PR, DomRoot will become a type alias of Root>, where Root will be able to handle all the things that need to be rooted that have a stable traceable address that doesn't move for the whole lifetime of the root. Stay tuned. --- components/script/dom/storage.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index ba4ac955e6d..56d5e832870 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -8,7 +8,7 @@ use dom::bindings::error::{Error, ErrorResult}; use dom::bindings::inheritance::Castable; use dom::bindings::refcounted::Trusted; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; -use dom::bindings::root::Root; +use dom::bindings::root::DomRoot; use dom::bindings::str::DOMString; use dom::event::{Event, EventBubbles, EventCancelable}; use dom::storageevent::StorageEvent; @@ -35,7 +35,7 @@ impl Storage { } } - pub fn new(global: &Window, storage_type: StorageType) -> Root { + pub fn new(global: &Window, storage_type: StorageType) -> DomRoot { reflect_dom_object(box Storage::new_inherited(storage_type), global, StorageBinding::Wrap) } -- cgit v1.2.3 From aa15dc269f41503d81ad44cd7e85d69e6f4aeac7 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 16 Oct 2017 14:35:30 +0200 Subject: Remove use of unstable box syntax. http://www.robohornet.org gives a score of 101.36 on master, and 102.68 with this PR. The latter is slightly better, but probably within noise level. So it looks like this PR does not affect DOM performance. This is expected since `Box::new` is defined as: ```rust impl Box { #[inline(always)] pub fn new(x: T) -> Box { box x } } ``` With inlining, it should compile to the same as box syntax. --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 56d5e832870..6a48c236302 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -36,7 +36,7 @@ impl Storage { } pub fn new(global: &Window, storage_type: StorageType) -> DomRoot { - reflect_dom_object(box Storage::new_inherited(storage_type), global, StorageBinding::Wrap) + reflect_dom_object(Box::new(Storage::new_inherited(storage_type)), global, StorageBinding::Wrap) } fn get_url(&self) -> ServoUrl { -- cgit v1.2.3 From efc3683cc7ceff0cd8c8528a168a78d42fb1a0e8 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Tue, 17 Oct 2017 09:39:20 -0700 Subject: Fix commonmark Markdown warnings in docs, part 1 Fixes warnings from rust-lang/rust#44229 when `--enable-commonmark` is passed to rustdoc. This is mostly a global find-and-replace for bare URIs on lines by themselves in doc comments. --- components/script/dom/storage.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 6a48c236302..37ff6a69fe3 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -147,7 +147,7 @@ impl StorageMethods for Storage { impl Storage { - /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification + /// fn broadcast_change_notification(&self, key: Option, old_value: Option, new_value: Option) { let storage = self.storage_type; @@ -156,7 +156,7 @@ impl Storage { self.global().script_to_constellation_chan().send(msg).unwrap(); } - /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification + /// pub fn queue_storage_event( &self, url: ServoUrl, -- cgit v1.2.3 From 7d4e2b11e940545eaa74877b75908e1e02f6eeb5 Mon Sep 17 00:00:00 2001 From: Nakul Jindal Date: Mon, 26 Feb 2018 09:07:08 -0800 Subject: Implements profiler for blocked recv --- components/script/dom/storage.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 37ff6a69fe3..b2c3783c010 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -14,9 +14,10 @@ use dom::event::{Event, EventBubbles, EventCancelable}; use dom::storageevent::StorageEvent; use dom::window::Window; use dom_struct::dom_struct; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use net_traits::IpcSend; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; +use profile_traits::ipc; use script_traits::ScriptMsg; use servo_url::ServoUrl; use task_source::TaskSource; @@ -52,7 +53,7 @@ impl Storage { impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-length fn Length(&self) -> u32 { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); self.get_storage_thread().send(StorageThreadMsg::Length(sender, self.get_url(), self.storage_type)).unwrap(); receiver.recv().unwrap() as u32 @@ -60,7 +61,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-key fn Key(&self, index: u32) -> Option { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); self.get_storage_thread() .send(StorageThreadMsg::Key(sender, self.get_url(), self.storage_type, index)) @@ -70,7 +71,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-getitem fn GetItem(&self, name: DOMString) -> Option { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); let name = String::from(name); let msg = StorageThreadMsg::GetItem(sender, self.get_url(), self.storage_type, name); @@ -80,7 +81,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-setitem fn SetItem(&self, name: DOMString, value: DOMString) -> ErrorResult { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); let name = String::from(name); let value = String::from(value); @@ -99,7 +100,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-removeitem fn RemoveItem(&self, name: DOMString) { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); let name = String::from(name); let msg = StorageThreadMsg::RemoveItem(sender, self.get_url(), self.storage_type, name.clone()); @@ -111,7 +112,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#dom-storage-clear fn Clear(&self) { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); self.get_storage_thread().send(StorageThreadMsg::Clear(sender, self.get_url(), self.storage_type)).unwrap(); if receiver.recv().unwrap() { @@ -121,7 +122,7 @@ impl StorageMethods for Storage { // https://html.spec.whatwg.org/multipage/#the-storage-interface:supported-property-names fn SupportedPropertyNames(&self) -> Vec { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); self.get_storage_thread().send(StorageThreadMsg::Keys(sender, self.get_url(), self.storage_type)).unwrap(); receiver.recv() -- cgit v1.2.3 From c37a345dc9f4dda6ea29c42f96f6c7201c42cbac Mon Sep 17 00:00:00 2001 From: chansuke Date: Tue, 18 Sep 2018 23:24:15 +0900 Subject: Format script component --- components/script/dom/storage.rs | 97 ++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 29 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index b2c3783c010..31d0dd5f84f 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -25,19 +25,23 @@ use task_source::TaskSource; #[dom_struct] pub struct Storage { reflector_: Reflector, - storage_type: StorageType + storage_type: StorageType, } impl Storage { fn new_inherited(storage_type: StorageType) -> Storage { Storage { reflector_: Reflector::new(), - storage_type: storage_type + storage_type: storage_type, } } pub fn new(global: &Window, storage_type: StorageType) -> DomRoot { - reflect_dom_object(Box::new(Storage::new_inherited(storage_type)), global, StorageBinding::Wrap) + reflect_dom_object( + Box::new(Storage::new_inherited(storage_type)), + global, + StorageBinding::Wrap, + ) } fn get_url(&self) -> ServoUrl { @@ -47,7 +51,6 @@ impl Storage { fn get_storage_thread(&self) -> IpcSender { self.global().resource_threads().sender() } - } impl StorageMethods for Storage { @@ -55,7 +58,12 @@ impl StorageMethods for Storage { fn Length(&self) -> u32 { let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); - self.get_storage_thread().send(StorageThreadMsg::Length(sender, self.get_url(), self.storage_type)).unwrap(); + self.get_storage_thread() + .send(StorageThreadMsg::Length( + sender, + self.get_url(), + self.storage_type, + )).unwrap(); receiver.recv().unwrap() as u32 } @@ -64,8 +72,12 @@ impl StorageMethods for Storage { let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); self.get_storage_thread() - .send(StorageThreadMsg::Key(sender, self.get_url(), self.storage_type, index)) - .unwrap(); + .send(StorageThreadMsg::Key( + sender, + self.get_url(), + self.storage_type, + index, + )).unwrap(); receiver.recv().unwrap().map(DOMString::from) } @@ -85,16 +97,22 @@ impl StorageMethods for Storage { let name = String::from(name); let value = String::from(value); - let msg = StorageThreadMsg::SetItem(sender, self.get_url(), self.storage_type, name.clone(), value.clone()); + let msg = StorageThreadMsg::SetItem( + sender, + self.get_url(), + self.storage_type, + name.clone(), + value.clone(), + ); self.get_storage_thread().send(msg).unwrap(); match receiver.recv().unwrap() { Err(_) => Err(Error::QuotaExceeded), Ok((changed, old_value)) => { - if changed { - self.broadcast_change_notification(Some(name), old_value, Some(value)); - } - Ok(()) - } + if changed { + self.broadcast_change_notification(Some(name), old_value, Some(value)); + } + Ok(()) + }, } } @@ -103,7 +121,8 @@ impl StorageMethods for Storage { let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); let name = String::from(name); - let msg = StorageThreadMsg::RemoveItem(sender, self.get_url(), self.storage_type, name.clone()); + let msg = + StorageThreadMsg::RemoveItem(sender, self.get_url(), self.storage_type, name.clone()); self.get_storage_thread().send(msg).unwrap(); if let Some(old_value) = receiver.recv().unwrap() { self.broadcast_change_notification(Some(name), Some(old_value), None); @@ -114,7 +133,12 @@ impl StorageMethods for Storage { fn Clear(&self) { let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); - self.get_storage_thread().send(StorageThreadMsg::Clear(sender, self.get_url(), self.storage_type)).unwrap(); + self.get_storage_thread() + .send(StorageThreadMsg::Clear( + sender, + self.get_url(), + self.storage_type, + )).unwrap(); if receiver.recv().unwrap() { self.broadcast_change_notification(None, None, None); } @@ -124,12 +148,18 @@ impl StorageMethods for Storage { fn SupportedPropertyNames(&self) -> Vec { let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); - self.get_storage_thread().send(StorageThreadMsg::Keys(sender, self.get_url(), self.storage_type)).unwrap(); - receiver.recv() - .unwrap() - .into_iter() - .map(DOMString::from) - .collect() + self.get_storage_thread() + .send(StorageThreadMsg::Keys( + sender, + self.get_url(), + self.storage_type, + )).unwrap(); + receiver + .recv() + .unwrap() + .into_iter() + .map(DOMString::from) + .collect() } // check-tidy: no specs after this line @@ -146,15 +176,21 @@ impl StorageMethods for Storage { } } - impl Storage { /// - fn broadcast_change_notification(&self, key: Option, old_value: Option, - new_value: Option) { + fn broadcast_change_notification( + &self, + key: Option, + old_value: Option, + new_value: Option, + ) { let storage = self.storage_type; let url = self.get_url(); let msg = ScriptMsg::BroadcastStorageEvent(storage, url, key, old_value, new_value); - self.global().script_to_constellation_chan().send(msg).unwrap(); + self.global() + .script_to_constellation_chan() + .send(msg) + .unwrap(); } /// @@ -167,8 +203,11 @@ impl Storage { ) { let global = self.global(); let this = Trusted::new(self); - global.as_window().dom_manipulation_task_source().queue( - task!(send_storage_notification: move || { + global + .as_window() + .dom_manipulation_task_source() + .queue( + task!(send_storage_notification: move || { let this = this.root(); let global = this.global(); let event = StorageEvent::new( @@ -184,7 +223,7 @@ impl Storage { ); event.upcast::().fire(global.upcast()); }), - global.upcast(), - ).unwrap(); + global.upcast(), + ).unwrap(); } } -- cgit v1.2.3 From 45f7199eee82c66637ec68287eafa40a651001c4 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 23:45:06 +0100 Subject: `cargo fix --edition` --- components/script/dom/storage.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 31d0dd5f84f..251719eb809 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -2,17 +2,17 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::bindings::codegen::Bindings::StorageBinding; -use dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; -use dom::bindings::error::{Error, ErrorResult}; -use dom::bindings::inheritance::Castable; -use dom::bindings::refcounted::Trusted; -use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; -use dom::bindings::root::DomRoot; -use dom::bindings::str::DOMString; -use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::storageevent::StorageEvent; -use dom::window::Window; +use crate::dom::bindings::codegen::Bindings::StorageBinding; +use crate::dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; +use crate::dom::bindings::error::{Error, ErrorResult}; +use crate::dom::bindings::inheritance::Castable; +use crate::dom::bindings::refcounted::Trusted; +use crate::dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; +use crate::dom::event::{Event, EventBubbles, EventCancelable}; +use crate::dom::storageevent::StorageEvent; +use crate::dom::window::Window; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; use net_traits::IpcSend; @@ -20,7 +20,7 @@ use net_traits::storage_thread::{StorageThreadMsg, StorageType}; use profile_traits::ipc; use script_traits::ScriptMsg; use servo_url::ServoUrl; -use task_source::TaskSource; +use crate::task_source::TaskSource; #[dom_struct] pub struct Storage { -- cgit v1.2.3 From 76e59a46d3aff701b2e8dfbaf047f6d5c3edcced Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 17:23:56 +0100 Subject: Sort `use` statements --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 251719eb809..030d8f662b1 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::storageevent::StorageEvent; use crate::dom::window::Window; +use crate::task_source::TaskSource; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; use net_traits::IpcSend; @@ -20,7 +21,6 @@ use net_traits::storage_thread::{StorageThreadMsg, StorageType}; use profile_traits::ipc; use script_traits::ScriptMsg; use servo_url::ServoUrl; -use crate::task_source::TaskSource; #[dom_struct] pub struct Storage { -- cgit v1.2.3 From cb07debcb6f3d3561177ce536c320986720791b7 Mon Sep 17 00:00:00 2001 From: Pyfisch Date: Tue, 6 Nov 2018 13:01:35 +0100 Subject: Format remaining files --- components/script/dom/storage.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 030d8f662b1..16d0cf6e973 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -63,7 +63,8 @@ impl StorageMethods for Storage { sender, self.get_url(), self.storage_type, - )).unwrap(); + )) + .unwrap(); receiver.recv().unwrap() as u32 } @@ -77,7 +78,8 @@ impl StorageMethods for Storage { self.get_url(), self.storage_type, index, - )).unwrap(); + )) + .unwrap(); receiver.recv().unwrap().map(DOMString::from) } @@ -138,7 +140,8 @@ impl StorageMethods for Storage { sender, self.get_url(), self.storage_type, - )).unwrap(); + )) + .unwrap(); if receiver.recv().unwrap() { self.broadcast_change_notification(None, None, None); } @@ -153,7 +156,8 @@ impl StorageMethods for Storage { sender, self.get_url(), self.storage_type, - )).unwrap(); + )) + .unwrap(); receiver .recv() .unwrap() @@ -224,6 +228,7 @@ impl Storage { event.upcast::().fire(global.upcast()); }), global.upcast(), - ).unwrap(); + ) + .unwrap(); } } -- cgit v1.2.3 From 9e92eb205a2a12fe0be883e42cb7f82deebc9031 Mon Sep 17 00:00:00 2001 From: Pyfisch Date: Tue, 6 Nov 2018 20:38:02 +0100 Subject: Reorder imports --- components/script/dom/storage.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 16d0cf6e973..ed6ed999fa2 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; use crate::dom::bindings::error::{Error, ErrorResult}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; +use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -16,8 +16,8 @@ use crate::dom::window::Window; use crate::task_source::TaskSource; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; -use net_traits::IpcSend; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; +use net_traits::IpcSend; use profile_traits::ipc; use script_traits::ScriptMsg; use servo_url::ServoUrl; -- cgit v1.2.3 From 75eb94afcaae2f868ecccba5b5dcea4066998d7a Mon Sep 17 00:00:00 2001 From: Agustin Chiappe Berrini Date: Mon, 24 Sep 2018 19:31:59 -0400 Subject: Unify the task source and task canceller API I moved away from the `Window` struct all the logic to handle task sources, into a new struct called `TaskManager`. In a happy world, I'd be able to just have there two functions, of the types: ```rust fn task_source(&self, name: TaskSourceName) -> Box fn task_source_with_canceller(&self, name: TaskSourceName) -> (Box, TaskSourceCanceller) ``` And not so much duplicated code. However, because TaskSource can't be a trait object (because it has generic type parameters), that's not possible. Instead, I decided to reduce duplicated logic through macros. For reasons[1], I have to pass both the name of the function with canceller and the name of the function without, as I'm not able to concatenate them in the macro itself. I could probably use `concat_idents` to create both types already defined and reduce the amount of arguments by one, but that macro is nightly only. At the same time, not being able to declare macros inside `impl` forces me to pass `self` as an argument. All this makes this solution more verbose than it would be ideally. It does reduce duplication, but it doesn't reduce the size of the file. [1](https://github.com/rust-lang/rust/issues/29599) --- components/script/dom/storage.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index ed6ed999fa2..4e8f0871571 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -209,6 +209,7 @@ impl Storage { let this = Trusted::new(self); global .as_window() + .task_manager() .dom_manipulation_task_source() .queue( task!(send_storage_notification: move || { -- cgit v1.2.3 From a1a14459c141afc6ac6771b8a6c9ca374537edf2 Mon Sep 17 00:00:00 2001 From: Jan Andre Ikenmeyer Date: Mon, 19 Nov 2018 14:47:12 +0100 Subject: Update MPL license to https (part 3) --- components/script/dom/storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 4e8f0871571..7c52934386a 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -1,6 +1,6 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::StorageBinding; use crate::dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; -- cgit v1.2.3 From be69f9c3e6a6f5efb5ba1edd50955cb12c111bf8 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 14 Dec 2018 08:31:30 +0100 Subject: Rustfmt has changed its default style :/ --- components/script/dom/storage.rs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 7c52934386a..74624ba45b4 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -213,21 +213,21 @@ impl Storage { .dom_manipulation_task_source() .queue( 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, - key.map(DOMString::from), - old_value.map(DOMString::from), - new_value.map(DOMString::from), - DOMString::from(url.into_string()), - Some(&this), - ); - event.upcast::().fire(global.upcast()); - }), + let this = this.root(); + let global = this.global(); + let event = StorageEvent::new( + global.as_window(), + atom!("storage"), + EventBubbles::DoesNotBubble, + EventCancelable::NotCancelable, + key.map(DOMString::from), + old_value.map(DOMString::from), + new_value.map(DOMString::from), + DOMString::from(url.into_string()), + Some(&this), + ); + event.upcast::().fire(global.upcast()); + }), global.upcast(), ) .unwrap(); -- cgit v1.2.3 From 3ea6d87bcc37167464e856949a4b9b77d0e9318a Mon Sep 17 00:00:00 2001 From: YUAN LYU Date: Fri, 20 Mar 2020 22:14:18 -0400 Subject: Add trait DomObjectWrap to provide WRAP function --- components/script/dom/storage.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'components/script/dom/storage.rs') diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index 74624ba45b4..8d8ad0dc7ba 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::codegen::Bindings::StorageBinding; use crate::dom::bindings::codegen::Bindings::StorageBinding::StorageMethods; use crate::dom::bindings::error::{Error, ErrorResult}; use crate::dom::bindings::inheritance::Castable; @@ -37,11 +36,7 @@ impl Storage { } pub fn new(global: &Window, storage_type: StorageType) -> DomRoot { - reflect_dom_object( - Box::new(Storage::new_inherited(storage_type)), - global, - StorageBinding::Wrap, - ) + reflect_dom_object(Box::new(Storage::new_inherited(storage_type)), global) } fn get_url(&self) -> ServoUrl { -- cgit v1.2.3