From 6b61564f6d210424a46ce0f53b00bbc2f693aaf6 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 3 Aug 2015 19:46:15 +0200 Subject: [PATCH] Pass WorkerGlobalScopeInit to DedicatedWorkerGlobalScope::run_worker_scope. --- .../script/dom/dedicatedworkerglobalscope.rs | 35 ++++++------------- components/script/dom/worker.rs | 14 ++++++-- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index fc1b2301559..cef9c5f9789 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -25,17 +25,15 @@ use dom::workerglobalscope::{WorkerGlobalScopeTypeId, WorkerGlobalScopeInit}; use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource, ScriptPort}; use script_task::StackRootTLS; -use msg::constellation_msg::{ConstellationChan, PipelineId, WorkerId}; - -use devtools_traits::{ScriptToDevtoolsControlMsg, DevtoolScriptControlMsg}; - -use net_traits::{load_whole_resource, ResourceTask}; +use devtools_traits::DevtoolScriptControlMsg; +use msg::constellation_msg::PipelineId; +use net_traits::load_whole_resource; use profile_traits::mem::{self, Reporter, ReporterRequest}; use util::task::spawn_named; use util::task_state; use util::task_state::{SCRIPT, IN_WORKER}; -use ipc_channel::ipc::{self, IpcSender, IpcReceiver}; +use ipc_channel::ipc::{self, IpcReceiver}; use ipc_channel::router::ROUTER; use js::jsapi::{JSContext, RootedValue, HandleValue}; use js::jsapi::{JSAutoRequest, JSAutoCompartment}; @@ -146,19 +144,14 @@ impl DedicatedWorkerGlobalScope { impl DedicatedWorkerGlobalScope { #[allow(unsafe_code)] - pub fn run_worker_scope(worker_url: Url, + pub fn run_worker_scope(init: WorkerGlobalScopeInit, + worker_url: Url, id: PipelineId, - mem_profiler_chan: mem::ProfilerChan, - devtools_chan: Option>, - devtools_ipc_chan: Option>, devtools_ipc_port: IpcReceiver, worker: TrustedWorkerAddress, - resource_task: ResourceTask, - constellation_chan: ConstellationChan, parent_sender: Box, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, - receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>, - worker_id: WorkerId) { + receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>) { let serialized_worker_url = worker_url.serialize(); spawn_named(format!("WebWorker for {}", serialized_worker_url), move || { task_state::initialize(SCRIPT | IN_WORKER); @@ -166,7 +159,7 @@ impl DedicatedWorkerGlobalScope { let roots = RootCollection::new(); let _stack_roots_tls = StackRootTLS::new(&roots); - let (url, source) = match load_whole_resource(&resource_task, worker_url) { + let (url, source) = match load_whole_resource(&init.resource_task, worker_url) { Err(_) => { println!("error loading script {}", serialized_worker_url); parent_sender.send(ScriptMsg::RunnableMsg( @@ -185,14 +178,6 @@ impl DedicatedWorkerGlobalScope { let (devtools_mpsc_chan, devtools_mpsc_port) = channel(); ROUTER.route_ipc_receiver_to_mpsc_sender(devtools_ipc_port, devtools_mpsc_chan); - let init = WorkerGlobalScopeInit { - resource_task: resource_task, - mem_profiler_chan: mem_profiler_chan.clone(), - devtools_chan: devtools_chan, - devtools_sender: devtools_ipc_chan, - constellation_chan: constellation_chan, - worker_id: worker_id, - }; let global = DedicatedWorkerGlobalScope::new( init, url, id, devtools_mpsc_port, runtime.clone(), parent_sender, own_sender, receiver); @@ -225,7 +210,7 @@ impl DedicatedWorkerGlobalScope { parent_sender_for_reporter.send(ScriptMsg::CollectReports( reporter_request.reports_channel)).unwrap() }); - mem_profiler_chan.send(mem::ProfilerMsg::RegisterReporter( + scope.mem_profiler_chan().send(mem::ProfilerMsg::RegisterReporter( reporter_name.clone(), Reporter(reporter_sender))); } @@ -287,7 +272,7 @@ impl DedicatedWorkerGlobalScope { // Unregister this task as a memory reporter. let msg = mem::ProfilerMsg::UnregisterReporter(reporter_name); - mem_profiler_chan.send(msg); + scope.mem_profiler_chan().send(msg); }); } } diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index e71ebcb795a..628b1178c32 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -20,6 +20,7 @@ use dom::errorevent::ErrorEvent; use dom::event::{Event, EventBubbles, EventCancelable, EventHelpers}; use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId}; use dom::messageevent::MessageEvent; +use dom::workerglobalscope::WorkerGlobalScopeInit; use script_task::{ScriptChan, ScriptMsg, Runnable}; use devtools_traits::{DevtoolsPageInfo, ScriptToDevtoolsControlMsg}; @@ -95,10 +96,17 @@ impl Worker { None => None, }; + let init = WorkerGlobalScopeInit { + resource_task: resource_task, + mem_profiler_chan: global.mem_profiler_chan(), + devtools_chan: global.devtools_chan(), + devtools_sender: optional_sender, + constellation_chan: constellation_chan, + worker_id: worker_id, + }; DedicatedWorkerGlobalScope::run_worker_scope( - worker_url, global.pipeline(), global.mem_profiler_chan(), global.devtools_chan(), - optional_sender, devtools_receiver, worker_ref, resource_task, - constellation_chan, global.script_chan(), sender, receiver, worker_id); + init, worker_url, global.pipeline(), devtools_receiver, worker_ref, + global.script_chan(), sender, receiver); Ok(worker) }