aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/workerglobalscope.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-08-13 18:11:22 +0200
committerMs2ger <ms2ger@gmail.com>2014-08-15 09:43:37 +0200
commiteadb1c154a9ec3de1aedf11a35cdc797605f7f0c (patch)
tree5e5e2f44f7f9f1da594b2f4568a362ccbe41ca5d /src/components/script/dom/workerglobalscope.rs
parentf300e146b0ccd6207705826dbefb1bdc6e1e0987 (diff)
downloadservo-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.rs11
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));