diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-08-13 18:11:22 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-08-15 09:43:37 +0200 |
commit | eadb1c154a9ec3de1aedf11a35cdc797605f7f0c (patch) | |
tree | 5e5e2f44f7f9f1da594b2f4568a362ccbe41ca5d /src/components/script/dom/workerglobalscope.rs | |
parent | f300e146b0ccd6207705826dbefb1bdc6e1e0987 (diff) | |
download | servo-eadb1c154a9ec3de1aedf11a35cdc797605f7f0c.tar.gz servo-eadb1c154a9ec3de1aedf11a35cdc797605f7f0c.zip |
Implement DedicatedWorkerGlobalScope.navigator.
Diffstat (limited to 'src/components/script/dom/workerglobalscope.rs')
-rw-r--r-- | src/components/script/dom/workerglobalscope.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/components/script/dom/workerglobalscope.rs b/src/components/script/dom/workerglobalscope.rs index 3123c05338d..a4271d52033 100644 --- a/src/components/script/dom/workerglobalscope.rs +++ b/src/components/script/dom/workerglobalscope.rs @@ -9,6 +9,7 @@ use dom::bindings::js::{JS, JSRef, Temporary, OptionalSettable}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::console::Console; use dom::eventtarget::{EventTarget, WorkerGlobalScopeTypeId}; +use dom::workernavigator::WorkerNavigator; use script_task::ScriptChan; use servo_net::resource_task::ResourceTask; @@ -32,6 +33,7 @@ pub struct WorkerGlobalScope { js_context: Untraceable<Rc<Cx>>, resource_task: Untraceable<ResourceTask>, script_chan: ScriptChan, + navigator: Cell<Option<JS<WorkerNavigator>>>, console: Cell<Option<JS<Console>>>, } @@ -47,6 +49,7 @@ impl WorkerGlobalScope { js_context: Untraceable::new(cx), resource_task: Untraceable::new(resource_task), script_chan: script_chan, + navigator: Cell::new(None), console: Cell::new(None), } } @@ -73,6 +76,14 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { Temporary::from_rooted(self) } + fn Navigator(&self) -> Temporary<WorkerNavigator> { + if self.navigator.get().is_none() { + let navigator = WorkerNavigator::new(self); + self.navigator.assign(Some(navigator)); + } + Temporary::new(self.navigator.get().get_ref().clone()) + } + fn Console(&self) -> Temporary<Console> { if self.console.get().is_none() { let console = Console::new(&global::Worker(*self)); |