diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2017-09-14 13:37:33 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-09-14 13:37:33 +0200 |
commit | 35d86afcc86a52efae51bdb0d3698f700cd0c59b (patch) | |
tree | 34604f2f670eabe882917538bfbbb93e3f3e4a4f /components/script/dom/workerglobalscope.rs | |
parent | 874cb0d9df44e62a78d427f22f234a13227d07f8 (diff) | |
download | servo-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.rs | 22 |
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) { |