aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-08-02 16:05:14 -0600
committerbors-servo <metajack+bors@gmail.com>2015-08-02 16:05:14 -0600
commit1809748dc12ec63e3179b66109c91983f744c235 (patch)
tree369e94dac9f6c5475592a57c3011314d28085159 /components/script/dom
parentffe4bd25a495efd672986f090150b165811b6708 (diff)
parent49c5408e6517747ea83240d31bb2d60fc75c3393 (diff)
downloadservo-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.rs8
-rw-r--r--components/script/dom/console.rs18
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs20
-rw-r--r--components/script/dom/worker.rs4
-rw-r--r--components/script/dom/workerglobalscope.rs9
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;