diff options
Diffstat (limited to 'components/script/dom/workerglobalscope.rs')
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 12 |
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> { |