aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/eventtarget.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2013-11-12 01:01:34 -0800
committerbors-servo <release+servo@mozilla.com>2013-11-12 01:01:34 -0800
commitda4ca510496c5596ddc3593909ebd1db2f5bf957 (patch)
treeec92681bde7053a88d97ba2b522ae7204fcaabbc /src/components/script/dom/eventtarget.rs
parentb379b7aa7591cfc6fb489b2d7b35cddd55bd9408 (diff)
parent3b3f891455ad0e0ee713816e24b9887040bca442 (diff)
downloadservo-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.rs23
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))
}
}