mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Format script component
This commit is contained in:
parent
2ca7a13473
commit
c37a345dc9
357 changed files with 25485 additions and 18076 deletions
|
@ -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<Storage> {
|
||||
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<StorageThreadMsg> {
|
||||
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<DOMString> {
|
||||
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 {
|
||||
/// <https://html.spec.whatwg.org/multipage/#send-a-storage-notification>
|
||||
fn broadcast_change_notification(&self, key: Option<String>, old_value: Option<String>,
|
||||
new_value: Option<String>) {
|
||||
fn broadcast_change_notification(
|
||||
&self,
|
||||
key: Option<String>,
|
||||
old_value: Option<String>,
|
||||
new_value: Option<String>,
|
||||
) {
|
||||
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();
|
||||
}
|
||||
|
||||
/// <https://html.spec.whatwg.org/multipage/#send-a-storage-notification>
|
||||
|
@ -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::<Event>().fire(global.upcast());
|
||||
}),
|
||||
global.upcast(),
|
||||
).unwrap();
|
||||
global.upcast(),
|
||||
).unwrap();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue