diff options
author | Michael Wu <mwu@mozilla.com> | 2015-07-10 21:27:41 -0400 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-09-12 01:09:46 +0200 |
commit | 941f7dc04bc02ad196e86c5167ea292477fb7284 (patch) | |
tree | bf867d7a25d243a9ff38d346c219a2aac38eac5e /components/script/dom/eventtarget.rs | |
parent | 8d7ba12f28a873880c1f51b122d4fc185294c849 (diff) | |
download | servo-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.rs | 17 |
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, |