diff options
Diffstat (limited to 'components/script/dom/browsercontext.rs')
-rw-r--r-- | components/script/dom/browsercontext.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs index 3d486a3fe11..f7572d6d6a7 100644 --- a/components/script/dom/browsercontext.rs +++ b/components/script/dom/browsercontext.rs @@ -33,14 +33,16 @@ pub struct BrowserContext { history: Vec<SessionHistoryEntry>, active_index: uint, window_proxy: *mut JSObject, + parent: Option<JS<Window>>, } impl BrowserContext { - pub fn new(document: JSRef<Document>) -> BrowserContext { + pub fn new(document: JSRef<Document>, parent: Option<JSRef<Window>>) -> BrowserContext { let mut context = BrowserContext { history: vec!(SessionHistoryEntry::new(document)), active_index: 0, window_proxy: ptr::null_mut(), + parent: parent.map(|p| JS::from_rooted(p)), }; context.create_window_proxy(); context @@ -60,6 +62,12 @@ impl BrowserContext { self.window_proxy } + pub fn parent(&self) -> Option<Temporary<Window>> { + self.parent.map(|p| { + p.root().browser_context().as_ref().unwrap().active_window() + }) + } + #[allow(unsafe_blocks)] fn create_window_proxy(&mut self) { let win = self.active_window().root(); |