aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/eventtarget.rs
diff options
context:
space:
mode:
authorMichael Wu <mwu@mozilla.com>2015-07-10 21:27:41 -0400
committerAnthony Ramine <n.oxyde@gmail.com>2015-09-12 01:09:46 +0200
commit941f7dc04bc02ad196e86c5167ea292477fb7284 (patch)
treebf867d7a25d243a9ff38d346c219a2aac38eac5e /components/script/dom/eventtarget.rs
parent8d7ba12f28a873880c1f51b122d4fc185294c849 (diff)
downloadservo-941f7dc04bc02ad196e86c5167ea292477fb7284.tar.gz
servo-941f7dc04bc02ad196e86c5167ea292477fb7284.zip
Move EventTargetTypeId/NodeTypeId to DOMClass
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,