aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/worker.rs
diff options
context:
space:
mode:
authorRahul Sharma <rsconceptx@gmail.com>2016-06-09 18:52:52 +0530
committerRahul Sharma <rsconceptx@gmail.com>2016-07-16 23:29:44 +0530
commit1e6293ea1d06120c9f3488d7d32c24d8d92df6b1 (patch)
treeffc6addc9aff4eeb5562fd1b3b588603532b38c4 /components/script/dom/worker.rs
parente8fa02a07f3ee8965c022df4e92d5bdb0fccdb0b (diff)
downloadservo-1e6293ea1d06120c9f3488d7d32c24d8d92df6b1.tar.gz
servo-1e6293ea1d06120c9f3488d7d32c24d8d92df6b1.zip
Integrate service worker manager thread
Diffstat (limited to 'components/script/dom/worker.rs')
-rw-r--r--components/script/dom/worker.rs26
1 files changed, 17 insertions, 9 deletions
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index 2cf1d1c4e46..c318672fb7a 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -2,9 +2,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
+use devtools_traits::{ScriptToDevtoolsControlMsg, DevtoolsPageInfo};
+use dom::abstractworker::WorkerScriptMsg;
use dom::abstractworker::{SimpleWorkerErrorHandler, SharedRt, WorkerErrorHandler};
-use dom::abstractworker::{WorkerScriptLoadOrigin, WorkerScriptMsg};
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::WorkerBinding;
use dom::bindings::codegen::Bindings::WorkerBinding::WorkerMethods;
@@ -26,6 +26,7 @@ use ipc_channel::ipc;
use js::jsapi::{HandleValue, JSContext, JSAutoCompartment};
use js::jsval::UndefinedValue;
use script_thread::Runnable;
+use script_traits::WorkerScriptLoadOrigin;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{Sender, channel};
use std::sync::{Arc, Mutex};
@@ -81,21 +82,28 @@ impl Worker {
let worker_load_origin = WorkerScriptLoadOrigin {
referrer_url: None,
referrer_policy: None,
- request_source: global.request_source(),
pipeline_id: Some(global.pipeline())
};
let (devtools_sender, devtools_receiver) = ipc::channel().unwrap();
+ let worker_id = global.get_next_worker_id();
+ if let Some(ref chan) = global.devtools_chan() {
+ let pipeline_id = global.pipeline();
+ let title = format!("Worker for {}", worker_url);
+ let page_info = DevtoolsPageInfo {
+ title: title,
+ url: worker_url.clone(),
+ };
+ let _ = chan.send(ScriptToDevtoolsControlMsg::NewGlobal((pipeline_id, Some(worker_id)),
+ devtools_sender.clone(),
+ page_info));
+ }
- let init = prepare_workerscope_init(global,
- "Worker".to_owned(),
- worker_url.clone(),
- devtools_sender.clone(),
- closing);
+ let init = prepare_workerscope_init(global, Some(devtools_sender));
DedicatedWorkerGlobalScope::run_worker_scope(
init, worker_url, global.pipeline(), devtools_receiver, worker.runtime.clone(), worker_ref,
- global.script_chan(), sender, receiver, worker_load_origin);
+ global.script_chan(), sender, receiver, worker_load_origin, closing);
Ok(worker)
}