diff options
author | bors-servo <release+servo@mozilla.com> | 2013-11-12 01:01:34 -0800 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2013-11-12 01:01:34 -0800 |
commit | da4ca510496c5596ddc3593909ebd1db2f5bf957 (patch) | |
tree | ec92681bde7053a88d97ba2b522ae7204fcaabbc /src/components/script/dom/eventtarget.rs | |
parent | b379b7aa7591cfc6fb489b2d7b35cddd55bd9408 (diff) | |
parent | 3b3f891455ad0e0ee713816e24b9887040bca442 (diff) | |
download | servo-da4ca510496c5596ddc3593909ebd1db2f5bf957.tar.gz servo-da4ca510496c5596ddc3593909ebd1db2f5bf957.zip |
auto merge of #1213 : jdm/servo/loadevent, r=kmcallister
It's good enough for now, since we don't track document resources at all. Should be good enough for #841.
Diffstat (limited to 'src/components/script/dom/eventtarget.rs')
-rw-r--r-- | src/components/script/dom/eventtarget.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index ae87a5d73ac..77753fd3b5a 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -5,9 +5,11 @@ use dom::bindings::utils::{Reflectable, Reflector, DOMString, Fallible}; use dom::bindings::utils::{null_str_as_word_null, InvalidState}; use dom::bindings::codegen::EventListenerBinding::EventListener; +use dom::document::AbstractDocument; use dom::event::AbstractEvent; use dom::eventdispatcher::dispatch_event; use dom::node::{AbstractNode, ScriptView}; +use dom::window::Window; use std::cast; use std::hashmap::HashMap; @@ -54,6 +56,18 @@ impl AbstractEventTarget { } } + pub fn from_window(window: @mut Window) -> AbstractEventTarget { + AbstractEventTarget { + eventtarget: unsafe { cast::transmute(window) } + } + } + + pub fn from_document(document: AbstractDocument) -> AbstractEventTarget { + unsafe { + cast::transmute(document) + } + } + pub fn type_id(&self) -> EventTargetTypeId { self.eventtarget().type_id } @@ -164,10 +178,17 @@ impl EventTarget { } pub fn DispatchEvent(&self, abstract_self: AbstractEventTarget, event: AbstractEvent) -> Fallible<bool> { + self.dispatch_event_with_target(abstract_self, None, event) + } + + pub fn dispatch_event_with_target(&self, + abstract_self: AbstractEventTarget, + abstract_target: Option<AbstractEventTarget>, + event: AbstractEvent) -> Fallible<bool> { if event.event().dispatching || !event.event().initialized { return Err(InvalidState); } - Ok(dispatch_event(abstract_self, event)) + Ok(dispatch_event(abstract_self, abstract_target, event)) } } |