Generate code for handling callbacks. Implement add/removeEventListener and hacky dispatchEvent proof-of-concept.

This commit is contained in:
Josh Matthews 2013-11-01 10:19:45 -04:00
parent 06b1db8818
commit 7ecf5abbbd
18 changed files with 491 additions and 331 deletions

View file

@ -6,6 +6,7 @@ use dom::bindings::codegen::WindowBinding;
use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::utils::{DOMString, null_str_as_empty, Traceable};
use dom::document::AbstractDocument;
use dom::eventtarget::EventTarget;
use dom::node::{AbstractNode, ScriptView};
use dom::navigator::Navigator;
@ -37,10 +38,10 @@ pub enum TimerControlMsg {
}
pub struct Window {
eventtarget: EventTarget,
page: @mut Page,
script_chan: ScriptChan,
compositor: @ScriptListener,
reflector_: Reflector,
timer_chan: SharedChan<TimerControlMsg>,
navigator: Option<@mut Navigator>,
image_cache_task: ImageCacheTask,
@ -140,11 +141,11 @@ impl Window {
impl Reflectable for Window {
fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector_
self.eventtarget.reflector()
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
&mut self.reflector_
self.eventtarget.mut_reflector()
}
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
@ -204,10 +205,10 @@ impl Window {
image_cache_task: ImageCacheTask)
-> @mut Window {
let win = @mut Window {
eventtarget: EventTarget::new(),
page: page,
script_chan: script_chan.clone(),
compositor: compositor,
reflector_: Reflector::new(),
timer_chan: {
let (timer_port, timer_chan) = comm::stream::<TimerControlMsg>();
let id = page.id.clone();