diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 2d1fba86cf8..fc1b2301559 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -21,7 +21,7 @@ use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId}; use dom::messageevent::MessageEvent; use dom::worker::{TrustedWorkerAddress, WorkerMessageHandler, WorkerEventHandler, WorkerErrorHandler}; use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers}; -use dom::workerglobalscope::WorkerGlobalScopeTypeId; +use dom::workerglobalscope::{WorkerGlobalScopeTypeId, WorkerGlobalScopeInit}; use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource, ScriptPort}; use script_task::StackRootTLS; @@ -107,25 +107,19 @@ pub struct DedicatedWorkerGlobalScope { } impl DedicatedWorkerGlobalScope { - fn new_inherited(worker_url: Url, + fn new_inherited(init: WorkerGlobalScopeInit, + worker_url: Url, id: PipelineId, - mem_profiler_chan: mem::ProfilerChan, - devtools_chan: Option>, - devtools_sender: Option>, devtools_port: Receiver, runtime: Rc, - 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)>) -> DedicatedWorkerGlobalScope { DedicatedWorkerGlobalScope { workerglobalscope: WorkerGlobalScope::new_inherited( - WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url, runtime, resource_task, - mem_profiler_chan, devtools_chan, devtools_sender, devtools_port, constellation_chan, - worker_id), + WorkerGlobalScopeTypeId::DedicatedGlobalScope, init, worker_url, + runtime, devtools_port), id: id, receiver: receiver, own_sender: own_sender, @@ -134,24 +128,18 @@ impl DedicatedWorkerGlobalScope { } } - pub fn new(worker_url: Url, + pub fn new(init: WorkerGlobalScopeInit, + worker_url: Url, id: PipelineId, - mem_profiler_chan: mem::ProfilerChan, - devtools_chan: Option>, - devtools_sender: Option>, devtools_port: Receiver, runtime: Rc, - 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)>) -> Root { let scope = box DedicatedWorkerGlobalScope::new_inherited( - worker_url, id, mem_profiler_chan, devtools_chan, devtools_sender, devtools_port, - runtime.clone(), resource_task, constellation_chan, parent_sender, own_sender, receiver, - worker_id); + init, worker_url, id, devtools_port, runtime.clone(), parent_sender, + own_sender, receiver); DedicatedWorkerGlobalScopeBinding::Wrap(runtime.cx(), scope) } } @@ -197,10 +185,17 @@ 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( - url, id, mem_profiler_chan.clone(), devtools_chan, devtools_ipc_chan, devtools_mpsc_port, - runtime.clone(), resource_task, constellation_chan, parent_sender, own_sender, receiver, - worker_id); + init, url, id, devtools_mpsc_port, runtime.clone(), + parent_sender, own_sender, receiver); // FIXME(njn): workers currently don't have a unique ID suitable for using in reporter // registration (#6631), so we instead use a random number and cross our fingers. let scope = WorkerGlobalScopeCast::from_ref(global.r()); diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index dd3b9d21c00..91d140dc823 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -42,6 +42,15 @@ pub enum WorkerGlobalScopeTypeId { DedicatedGlobalScope, } +pub struct WorkerGlobalScopeInit { + pub resource_task: ResourceTask, + pub mem_profiler_chan: mem::ProfilerChan, + pub devtools_chan: Option>, + pub devtools_sender: Option>, + pub constellation_chan: ConstellationChan, + pub worker_id: WorkerId, +} + // https://html.spec.whatwg.org/multipage/#the-workerglobalscope-common-interface #[dom_struct] pub struct WorkerGlobalScope { @@ -76,34 +85,29 @@ pub struct WorkerGlobalScope { impl WorkerGlobalScope { pub fn new_inherited(type_id: WorkerGlobalScopeTypeId, + init: WorkerGlobalScopeInit, worker_url: Url, runtime: Rc, - resource_task: ResourceTask, - mem_profiler_chan: mem::ProfilerChan, - devtools_chan: Option>, - devtools_sender: Option>, - devtools_receiver: Receiver, - constellation_chan: ConstellationChan, - worker_id: WorkerId) + devtools_receiver: Receiver) -> WorkerGlobalScope { WorkerGlobalScope { eventtarget: EventTarget::new_inherited(EventTargetTypeId::WorkerGlobalScope(type_id)), next_worker_id: Cell::new(WorkerId(0)), - worker_id: worker_id, + worker_id: init.worker_id, worker_url: worker_url, runtime: runtime, - resource_task: resource_task, + resource_task: init.resource_task, location: Default::default(), navigator: Default::default(), console: Default::default(), crypto: Default::default(), timers: TimerManager::new(), - mem_profiler_chan: mem_profiler_chan, - devtools_chan: devtools_chan, - devtools_sender: devtools_sender, + mem_profiler_chan: init.mem_profiler_chan, + devtools_chan: init.devtools_chan, + devtools_sender: init.devtools_sender, devtools_receiver: devtools_receiver, devtools_wants_updates: Cell::new(false), - constellation_chan: constellation_chan, + constellation_chan: init.constellation_chan, } }