aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/workerglobalscope.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-09-14 13:37:33 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2017-09-14 13:37:33 +0200
commit35d86afcc86a52efae51bdb0d3698f700cd0c59b (patch)
tree34604f2f670eabe882917538bfbbb93e3f3e4a4f /components/script/dom/workerglobalscope.rs
parent874cb0d9df44e62a78d427f22f234a13227d07f8 (diff)
downloadservo-35d86afcc86a52efae51bdb0d3698f700cd0c59b.tar.gz
servo-35d86afcc86a52efae51bdb0d3698f700cd0c59b.zip
Simplify WorkerGlobalScope::process_event
This method does not need to dispatch to interfaces derived from WorkerGlobalScope, given they end up doing exactly the same thing in all workers.
Diffstat (limited to 'components/script/dom/workerglobalscope.rs')
-rw-r--r--components/script/dom/workerglobalscope.rs22
1 files changed, 12 insertions, 10 deletions
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index ebcebef6c27..f3e98f0de47 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -32,7 +32,7 @@ use js::panic::maybe_resume_unwind;
use js::rust::Runtime;
use net_traits::{IpcSend, load_whole_resource};
use net_traits::request::{CredentialsMode, Destination, RequestInit as NetRequestInit, Type as RequestType};
-use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort};
+use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, get_reports};
use script_thread::RunnableWrapper;
use script_traits::{TimerEvent, TimerEventId};
use script_traits::WorkerGlobalScopeInit;
@@ -386,17 +386,19 @@ impl WorkerGlobalScope {
}
pub fn process_event(&self, msg: CommonScriptMsg) {
- let dedicated = self.downcast::<DedicatedWorkerGlobalScope>();
- let service_worker = self.downcast::<ServiceWorkerGlobalScope>();
- if let Some(dedicated) = dedicated {
- return dedicated.process_event(msg);
- } else if let Some(service_worker) = service_worker {
- return service_worker.process_event(msg);
- } else {
- panic!("need to implement a sender for SharedWorker")
+ match msg {
+ CommonScriptMsg::RunnableMsg(_, runnable) => {
+ runnable.handler()
+ },
+ CommonScriptMsg::CollectReports(reports_chan) => {
+ let cx = self.get_cx();
+ let path_seg = format!("url({})", self.get_url());
+ let reports = get_reports(cx, path_seg);
+ reports_chan.send(reports);
+ },
}
- //XXXjdm should we do a microtask checkpoint here?
+ // FIXME(jdm): Should we do a microtask checkpoint here?
}
pub fn handle_fire_timer(&self, timer_id: TimerEventId) {