aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/workerglobalscope.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/workerglobalscope.rs')
-rw-r--r--components/script/dom/workerglobalscope.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index 1a8e8b89e1e..e0d8ae7aaa0 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -19,6 +19,8 @@ use dom::window::{base64_atob, base64_btoa};
use script_task::{ScriptChan, TimerSource};
use timers::{IsInterval, TimerId, TimerManager, TimerCallback};
+use msg::constellation_msg::WorkerId;
+
use net::resource_task::{ResourceTask, load_whole_resource};
use util::str::DOMString;
@@ -28,6 +30,7 @@ use js::rust::Cx;
use std::default::Default;
use std::rc::Rc;
+use std::cell::Cell;
use url::{Url, UrlParser};
#[derive(Copy, PartialEq)]
@@ -41,6 +44,7 @@ pub struct WorkerGlobalScope {
eventtarget: EventTarget,
worker_url: Url,
js_context: Rc<Cx>,
+ next_worker_id: Cell<WorkerId>,
resource_task: ResourceTask,
location: MutNullableJS<WorkerLocation>,
navigator: MutNullableJS<WorkerNavigator>,
@@ -55,6 +59,7 @@ impl WorkerGlobalScope {
resource_task: ResourceTask) -> WorkerGlobalScope {
WorkerGlobalScope {
eventtarget: EventTarget::new_inherited(EventTargetTypeId::WorkerGlobalScope(type_id)),
+ next_worker_id: Cell::new(WorkerId(0)),
worker_url: worker_url,
js_context: cx,
resource_task: resource_task,
@@ -81,6 +86,13 @@ impl WorkerGlobalScope {
pub fn get_url<'a>(&'a self) -> &'a Url {
&self.worker_url
}
+
+ pub fn get_next_worker_id(&self) -> WorkerId {
+ let worker_id = self.next_worker_id.get();
+ let WorkerId(id_num) = worker_id;
+ self.next_worker_id.set(WorkerId(id_num + 1));
+ worker_id
+ }
}
impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {