1use crate::{
4 internal_prelude::*,
5 node::{concrete::DocumentNodeArc, contents::DocumentNodeStorage},
6};
7
8crate::use_behaviors!(sandbox_member);
9
10pub struct Window {
12 context: SandboxMemberBehaviorStorage,
13 document: DocumentNodeArc,
14}
15
16impl Window {
17 pub(crate) fn new(context: Weak<Sandbox>) -> Arc<Window> {
18 Arc::new_cyclic(|win_weak| {
19 let document = DocumentNodeArc::new(
20 context.clone(),
21 Arc::new(DocumentNodeStorage {
22 default_view: win_weak.clone(),
23 }),
24 );
25 Window {
26 context: SandboxMemberBehaviorStorage::new(context),
27 document,
28 }
29 })
30 }
31
32 pub fn document(&self) -> DocumentNodeArc {
35 self.document.clone()
36 }
37}
38
39impl_sandbox_member!(Window, context);