rdom/
window.rs

1//! A virtual browser window.
2
3use crate::{
4    internal_prelude::*,
5    node::{concrete::DocumentNodeArc, contents::DocumentNodeStorage},
6};
7
8crate::use_behaviors!(sandbox_member);
9
10/// A simulated window for static rendering
11pub 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    /// Gets the window's document
33    // would be nice to have DocumentNode
34    pub fn document(&self) -> DocumentNodeArc {
35        self.document.clone()
36    }
37}
38
39impl_sandbox_member!(Window, context);