aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/serviceworker_manager.rs
diff options
context:
space:
mode:
authorchansuke <chansuke@georepublic.de>2018-09-18 23:24:15 +0900
committerJosh Matthews <josh@joshmatthews.net>2018-09-19 17:40:47 -0400
commitc37a345dc9f4dda6ea29c42f96f6c7201c42cbac (patch)
tree1f05b49bac02318455a59d5b143c186fd872bdb9 /components/script/serviceworker_manager.rs
parent2ca7a134736bb4759ff209c1bc0b6dc3cc1984c9 (diff)
downloadservo-c37a345dc9f4dda6ea29c42f96f6c7201c42cbac.tar.gz
servo-c37a345dc9f4dda6ea29c42f96f6c7201c42cbac.zip
Format script component
Diffstat (limited to 'components/script/serviceworker_manager.rs')
-rw-r--r--components/script/serviceworker_manager.rs87
1 files changed, 51 insertions, 36 deletions
diff --git a/components/script/serviceworker_manager.rs b/components/script/serviceworker_manager.rs
index 4573a5666c3..79d8ea980b3 100644
--- a/components/script/serviceworker_manager.rs
+++ b/components/script/serviceworker_manager.rs
@@ -23,7 +23,7 @@ use std::thread;
enum Message {
FromResource(CustomResponseMediator),
- FromConstellation(ServiceWorkerMsg)
+ FromConstellation(ServiceWorkerMsg),
}
pub struct ServiceWorkerManager {
@@ -36,34 +36,42 @@ pub struct ServiceWorkerManager {
// receiver to receive messages from constellation
own_port: Receiver<ServiceWorkerMsg>,
// to receive resource messages
- resource_receiver: Receiver<CustomResponseMediator>
+ resource_receiver: Receiver<CustomResponseMediator>,
}
impl ServiceWorkerManager {
- fn new(own_sender: IpcSender<ServiceWorkerMsg>,
- from_constellation_receiver: Receiver<ServiceWorkerMsg>,
- resource_port: Receiver<CustomResponseMediator>) -> ServiceWorkerManager {
+ fn new(
+ own_sender: IpcSender<ServiceWorkerMsg>,
+ from_constellation_receiver: Receiver<ServiceWorkerMsg>,
+ resource_port: Receiver<CustomResponseMediator>,
+ ) -> ServiceWorkerManager {
ServiceWorkerManager {
registered_workers: HashMap::new(),
active_workers: HashMap::new(),
own_sender: own_sender,
own_port: from_constellation_receiver,
- resource_receiver: resource_port
+ resource_receiver: resource_port,
}
}
pub fn spawn_manager(sw_senders: SWManagerSenders) {
let (own_sender, from_constellation_receiver) = ipc::channel().unwrap();
let (resource_chan, resource_port) = ipc::channel().unwrap();
- let from_constellation = route_ipc_receiver_to_new_servo_receiver(from_constellation_receiver);
+ let from_constellation =
+ route_ipc_receiver_to_new_servo_receiver(from_constellation_receiver);
let resource_port = route_ipc_receiver_to_new_servo_receiver(resource_port);
- let _ = sw_senders.resource_sender.send(CoreResourceMsg::NetworkMediator(resource_chan));
- let _ = sw_senders.swmanager_sender.send(SWManagerMsg::OwnSender(own_sender.clone()));
- thread::Builder::new().name("ServiceWorkerManager".to_owned()).spawn(move || {
- ServiceWorkerManager::new(own_sender,
- from_constellation,
- resource_port).handle_message();
- }).expect("Thread spawning failed");
+ let _ = sw_senders
+ .resource_sender
+ .send(CoreResourceMsg::NetworkMediator(resource_chan));
+ let _ = sw_senders
+ .swmanager_sender
+ .send(SWManagerMsg::OwnSender(own_sender.clone()));
+ thread::Builder::new()
+ .name("ServiceWorkerManager".to_owned())
+ .spawn(move || {
+ ServiceWorkerManager::new(own_sender, from_constellation, resource_port)
+ .handle_message();
+ }).expect("Thread spawning failed");
}
pub fn get_matching_scope(&self, load_url: &ServoUrl) -> Option<ServoUrl> {
@@ -75,7 +83,10 @@ impl ServiceWorkerManager {
None
}
- pub fn wakeup_serviceworker(&mut self, scope_url: ServoUrl) -> Option<Sender<ServiceWorkerScriptMsg>> {
+ pub fn wakeup_serviceworker(
+ &mut self,
+ scope_url: ServoUrl,
+ ) -> Option<Sender<ServiceWorkerScriptMsg>> {
let scope_things = self.registered_workers.get(&scope_url);
if let Some(scope_things) = scope_things {
let (sender, receiver) = channel();
@@ -86,17 +97,20 @@ impl ServiceWorkerManager {
title: title,
url: scope_things.script_url.clone(),
};
- let _ = chan.send(ScriptToDevtoolsControlMsg::NewGlobal((scope_things.init.pipeline_id,
- Some(scope_things.worker_id)),
- devtools_sender,
- page_info));
+ let _ = chan.send(ScriptToDevtoolsControlMsg::NewGlobal(
+ (scope_things.init.pipeline_id, Some(scope_things.worker_id)),
+ devtools_sender,
+ page_info,
+ ));
};
- ServiceWorkerGlobalScope::run_serviceworker_scope(scope_things.clone(),
- sender.clone(),
- receiver,
- devtools_receiver,
- self.own_sender.clone(),
- scope_url.clone());
+ ServiceWorkerGlobalScope::run_serviceworker_scope(
+ scope_things.clone(),
+ sender.clone(),
+ receiver,
+ devtools_receiver,
+ self.own_sender.clone(),
+ scope_url.clone(),
+ );
// We store the activated worker
self.active_workers.insert(scope_url, sender.clone());
return Some(sender);
@@ -109,12 +123,8 @@ impl ServiceWorkerManager {
fn handle_message(&mut self) {
while let Some(message) = self.receive_message() {
let should_continue = match message {
- Message::FromConstellation(msg) => {
- self.handle_message_from_constellation(msg)
- },
- Message::FromResource(msg) => {
- self.handle_message_from_resource(msg)
- }
+ Message::FromConstellation(msg) => self.handle_message_from_constellation(msg),
+ Message::FromResource(msg) => self.handle_message_from_resource(msg),
};
if !should_continue {
break;
@@ -125,7 +135,9 @@ impl ServiceWorkerManager {
fn forward_message(&self, msg: DOMMessage, sender: &Sender<ServiceWorkerScriptMsg>) {
let DOMMessage(data) = msg;
let data = StructuredCloneData::Vector(data);
- let _ = sender.send(ServiceWorkerScriptMsg::CommonWorker(WorkerScriptMsg::DOMMessage(data)));
+ let _ = sender.send(ServiceWorkerScriptMsg::CommonWorker(
+ WorkerScriptMsg::DOMMessage(data),
+ ));
}
fn handle_message_from_constellation(&mut self, msg: ServiceWorkerMsg) -> bool {
@@ -137,7 +149,7 @@ impl ServiceWorkerManager {
self.registered_workers.insert(scope, scope_things);
}
true
- }
+ },
ServiceWorkerMsg::Timeout(scope) => {
if self.active_workers.contains_key(&scope) {
let _ = self.active_workers.remove(&scope);
@@ -157,8 +169,8 @@ impl ServiceWorkerManager {
}
}
true
- }
- ServiceWorkerMsg::Exit => false
+ },
+ ServiceWorkerMsg::Exit => false,
}
}
@@ -192,5 +204,8 @@ impl ServiceWorkerManager {
}
pub fn serviceworker_enabled() -> bool {
- PREFS.get("dom.serviceworker.enabled").as_boolean().unwrap_or(false)
+ PREFS
+ .get("dom.serviceworker.enabled")
+ .as_boolean()
+ .unwrap_or(false)
}