diff --git a/src/servo/content/content_task.rs b/src/servo/content/content_task.rs index 0aaf7be2940..47fa9a1bc74 100644 --- a/src/servo/content/content_task.rs +++ b/src/servo/content/content_task.rs @@ -12,8 +12,9 @@ use comm::{Port, Chan, listen, select2}; use task::{spawn, spawn_listener}; use io::{read_whole_file, println}; -use dom::base::{Document, Node, NodeScope, Window, define_bindings}; +use dom::base::{Document, Node, NodeScope, define_bindings}; use dom::event::{Event, ResizeEvent, ReflowEvent}; +use dom::window::Window; use gfx::compositor::Compositor; use html::lexer::spawn_html_lexer_task; use layout::layout_task; diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs index dc2e632d478..b02a3a5323b 100644 --- a/src/servo/dom/base.rs +++ b/src/servo/dom/base.rs @@ -1,9 +1,8 @@ /* The core DOM types. Defines the basic DOM hierarchy as well as all the HTML elements. */ -use comm::{Port, Chan}; -use content::content_task::{ControlMsg, Timer}; use css::styles::SpecifiedStyle; use css::values::Stylesheet; use dom::element::{Attr, ElementData}; +use dom::window::Window; use dom::bindings; use geom::size::Size2D; use gfx::geometry::au; @@ -18,36 +17,6 @@ use ptr::null; use std::arc::ARC; use util::tree; -enum TimerControlMsg { - Fire(~dom::bindings::window::TimerData), - Close -} - -struct Window { - timer_chan: Chan, - - drop { - self.timer_chan.send(Close); - } -} - -fn Window(content_port: Port) -> Window { - let content_chan = Chan(content_port); - - Window { - timer_chan: do task::spawn_listener |timer_port: Port| { - loop { - match timer_port.recv() { - Close => break, - Fire(td) => { - content_chan.send(Timer(copy td)); - } - } - } - } - } -} - struct Document { root: Node, scope: NodeScope, diff --git a/src/servo/dom/bindings/window.rs b/src/servo/dom/bindings/window.rs index 0215ad38b5f..60a192a78f6 100644 --- a/src/servo/dom/bindings/window.rs +++ b/src/servo/dom/bindings/window.rs @@ -13,7 +13,8 @@ use ptr::null; use libc::c_uint; use utils::{rust_box, squirrel_away, jsval_to_str}; use bindings::node::create; -use dom::base::{Node, Window}; +use dom::window::{Window, TimerMessage_Fire}; +use dom::base::Node; use dvec::DVec; extern fn alert(cx: *JSContext, argc: c_uint, vp: *jsval) -> JSBool { @@ -64,7 +65,7 @@ extern fn setTimeout(cx: *JSContext, argc: c_uint, vp: *jsval) -> JSBool unsafe std::timer::delayed_send(std::uv_global_loop::get(), RUST_JSVAL_TO_INT(*ptr::offset(argv, 1)) as uint, (*unwrap(JS_THIS_OBJECT(cx, vp))).payload.timer_chan, - base::Fire(~TimerData(argc, argv))); + TimerMessage_Fire(~TimerData(argc, argv))); JS_SET_RVAL(cx, vp, JSVAL_NULL); return 1; diff --git a/src/servo/dom/window.rs b/src/servo/dom/window.rs new file mode 100644 index 00000000000..b98f1b5dff8 --- /dev/null +++ b/src/servo/dom/window.rs @@ -0,0 +1,32 @@ +use comm::{Port, Chan}; +use content::content_task::{ControlMsg, Timer}; + +enum TimerControlMsg { + TimerMessage_Fire(~dom::bindings::window::TimerData), + TimerMessage_Close +} + +struct Window { + timer_chan: Chan, + + drop { + self.timer_chan.send(TimerMessage_Close); + } +} + +fn Window(content_port: Port) -> Window { + let content_chan = Chan(content_port); + + Window { + timer_chan: do task::spawn_listener |timer_port: Port| { + loop { + match timer_port.recv() { + TimerMessage_Close => break, + TimerMessage_Fire(td) => { + content_chan.send(Timer(copy td)); + } + } + } + } + } +} diff --git a/src/servo/servo.rc b/src/servo/servo.rc index f3e1eb62071..15d4c218384 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -34,6 +34,7 @@ mod dom { mod element; mod event; mod rcu; + mod window; } #[allow(non_implicitly_copyable_typarams)]