diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-08-02 16:05:14 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-08-02 16:05:14 -0600 |
commit | 1809748dc12ec63e3179b66109c91983f744c235 (patch) | |
tree | 369e94dac9f6c5475592a57c3011314d28085159 /components/script/dom | |
parent | ffe4bd25a495efd672986f090150b165811b6708 (diff) | |
parent | 49c5408e6517747ea83240d31bb2d60fc75c3393 (diff) | |
download | servo-1809748dc12ec63e3179b66109c91983f744c235.tar.gz servo-1809748dc12ec63e3179b66109c91983f744c235.zip |
Auto merge of #6893 - HarryLovesCode:master, r=jdm
Fixes Issue #6866
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6893)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/global.rs | 8 | ||||
-rw-r--r-- | components/script/dom/console.rs | 18 | ||||
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 20 | ||||
-rw-r--r-- | components/script/dom/worker.rs | 4 | ||||
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 9 |
5 files changed, 36 insertions, 23 deletions
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index 91c4a86625b..4a2879e9f41 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -121,6 +121,14 @@ impl<'a> GlobalRef<'a> { } } + /// Get the worker's id. + pub fn get_worker_id(&self) -> Option<WorkerId> { + match *self { + GlobalRef::Window(_) => None, + GlobalRef::Worker(ref worker) => worker.get_worker_id(), + } + } + /// Get next worker id. pub fn get_next_worker_id(&self) -> WorkerId { match *self { diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 41b21b7e12f..535f25d895b 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -98,17 +98,9 @@ fn prepare_message(logLevel: LogLevel, message: String) -> ConsoleMessage { fn propagate_console_msg(console: &&Console, console_message: ConsoleMessage) { let global = console.global.root(); - match global.r() { - GlobalRef::Window(window_ref) => { - let pipelineId = window_ref.pipeline(); - console.global.root().r().as_window().devtools_chan().as_ref().map(|chan| { - chan.send(ScriptToDevtoolsControlMsg::SendConsoleMessage( - pipelineId, console_message.clone())).unwrap(); - }); - }, - - GlobalRef::Worker(_) => { - // TODO: support worker console logs - } - } + let pipelineId = global.r().pipeline(); + global.r().devtools_chan().as_ref().map(|chan| { + chan.send(ScriptToDevtoolsControlMsg::SendConsoleMessage( + pipelineId, console_message.clone(), global.r().get_worker_id())).unwrap(); + }); } diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 5fe286bc640..90fb0283507 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -25,7 +25,7 @@ use dom::workerglobalscope::WorkerGlobalScopeTypeId; use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource, ScriptPort}; use script_task::StackRootTLS; -use msg::constellation_msg::{ConstellationChan, PipelineId}; +use msg::constellation_msg::{ConstellationChan, PipelineId, WorkerId}; use devtools_traits::{ScriptToDevtoolsControlMsg, DevtoolScriptControlMsg}; @@ -118,12 +118,14 @@ impl DedicatedWorkerGlobalScope { constellation_chan: ConstellationChan, parent_sender: Box<ScriptChan+Send>, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, - receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>) + receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>, + worker_id: Option<WorkerId>) -> DedicatedWorkerGlobalScope { DedicatedWorkerGlobalScope { workerglobalscope: WorkerGlobalScope::new_inherited( WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url, runtime, resource_task, - mem_profiler_chan, devtools_chan, devtools_sender, devtools_port, constellation_chan), + mem_profiler_chan, devtools_chan, devtools_sender, devtools_port, constellation_chan, + worker_id), id: id, receiver: receiver, own_sender: own_sender, @@ -143,11 +145,13 @@ impl DedicatedWorkerGlobalScope { constellation_chan: ConstellationChan, parent_sender: Box<ScriptChan+Send>, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, - receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>) + receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>, + worker_id: Option<WorkerId>) -> Root<DedicatedWorkerGlobalScope> { 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); + runtime.clone(), resource_task, constellation_chan, parent_sender, own_sender, receiver, + worker_id); DedicatedWorkerGlobalScopeBinding::Wrap(runtime.cx(), scope) } } @@ -165,7 +169,8 @@ impl DedicatedWorkerGlobalScope { constellation_chan: ConstellationChan, parent_sender: Box<ScriptChan+Send>, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, - receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>) { + receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>, + worker_id: Option<WorkerId>) { let serialized_worker_url = worker_url.serialize(); spawn_named(format!("WebWorker for {}", serialized_worker_url), move || { task_state::initialize(SCRIPT | IN_WORKER); @@ -194,7 +199,8 @@ impl DedicatedWorkerGlobalScope { 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); + runtime.clone(), resource_task, constellation_chan, parent_sender, own_sender, receiver, + worker_id); // 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/worker.rs b/components/script/dom/worker.rs index 2ef505308a3..daa752052b7 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -76,6 +76,7 @@ impl Worker { let (sender, receiver) = channel(); let worker = Worker::new(global, sender.clone()); let worker_ref = Trusted::new(global.get_cx(), worker.r(), global.script_chan()); + let worker_id = global.get_next_worker_id(); let (devtools_sender, devtools_receiver) = ipc::channel().unwrap(); let optional_sender = match global.devtools_chan() { @@ -86,7 +87,6 @@ impl Worker { title: title, url: worker_url.clone(), }; - let worker_id = global.get_next_worker_id(); chan.send(ScriptToDevtoolsControlMsg::NewGlobal((pipeline_id, Some(worker_id)), devtools_sender.clone(), page_info)).unwrap(); @@ -98,7 +98,7 @@ impl Worker { 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); + constellation_chan, global.script_chan(), sender, receiver, Some(worker_id)); Ok(worker) } diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index a99bcab8ebd..0887b6addcf 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -46,6 +46,7 @@ pub enum WorkerGlobalScopeTypeId { #[dom_struct] pub struct WorkerGlobalScope { eventtarget: EventTarget, + worker_id: Option<WorkerId>, worker_url: Url, runtime: Rc<Runtime>, next_worker_id: Cell<WorkerId>, @@ -82,11 +83,13 @@ impl WorkerGlobalScope { devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>, devtools_sender: Option<IpcSender<DevtoolScriptControlMsg>>, devtools_receiver: Receiver<DevtoolScriptControlMsg>, - constellation_chan: ConstellationChan) + constellation_chan: ConstellationChan, + worker_id: Option<WorkerId>) -> WorkerGlobalScope { WorkerGlobalScope { eventtarget: EventTarget::new_inherited(EventTargetTypeId::WorkerGlobalScope(type_id)), next_worker_id: Cell::new(WorkerId(0)), + worker_id: worker_id, worker_url: worker_url, runtime: runtime, resource_task: resource_task, @@ -141,6 +144,10 @@ impl WorkerGlobalScope { &self.worker_url } + pub fn get_worker_id(&self) -> Option<WorkerId> { + self.worker_id.clone() + } + pub fn get_next_worker_id(&self) -> WorkerId { let worker_id = self.next_worker_id.get(); let WorkerId(id_num) = worker_id; |