aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/eventtarget.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/eventtarget.rs')
-rw-r--r--components/script/dom/eventtarget.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index f2f228f2c0d..6ac33876e09 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -7,6 +7,7 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener;
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
+use dom::bindings::conversions::get_dom_class;
use dom::bindings::error::Error::InvalidState;
use dom::bindings::error::{Fallible, report_pending_exception};
use dom::bindings::utils::{Reflectable, Reflector};
@@ -45,9 +46,10 @@ pub enum ListenerPhase {
Bubbling,
}
-#[derive(JSTraceable, Copy, Clone)]
-#[derive(HeapSizeOf)]
+#[derive(Copy, Clone)]
pub enum EventTargetTypeId {
+ EventTarget,
+
Node(NodeTypeId),
WebSocket,
Window,
@@ -132,15 +134,13 @@ pub struct EventListenerEntry {
#[dom_struct]
pub struct EventTarget {
reflector_: Reflector,
- type_id: EventTargetTypeId,
handlers: DOMRefCell<HashMap<DOMString, Vec<EventListenerEntry>, DefaultState<FnvHasher>>>,
}
impl EventTarget {
- pub fn new_inherited(type_id: EventTargetTypeId) -> EventTarget {
+ pub fn new_inherited() -> EventTarget {
EventTarget {
reflector_: Reflector::new(),
- type_id: type_id,
handlers: DOMRefCell::new(Default::default()),
}
}
@@ -159,9 +159,12 @@ impl EventTarget {
})
}
- #[inline]
+ #[allow(unsafe_code)]
pub fn type_id(&self) -> &EventTargetTypeId {
- &self.type_id
+ let domclass = unsafe {
+ get_dom_class(self.reflector_.get_jsobject().get()).unwrap()
+ };
+ domclass.type_id.as_ref().unwrap()
}
pub fn dispatch_event_with_target(&self,