From 7e1e76f8b07844b7833967e725aa4d872291d6a5 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Mon, 29 Sep 2014 04:13:00 +0530 Subject: [PATCH] Remove Traceable from event.rs --- components/script/dom/event.rs | 83 ++++++++++++------------ components/script/dom/eventdispatcher.rs | 36 +++++----- components/script/dom/eventtarget.rs | 2 +- 3 files changed, 60 insertions(+), 61 deletions(-) diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 858ac31becd..085a30baad4 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -7,7 +7,6 @@ use dom::bindings::codegen::Bindings::EventBinding::{EventConstants, EventMethod use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{MutNullableJS, JSRef, Temporary}; -use dom::bindings::trace::Traceable; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::eventtarget::EventTarget; use servo_util::str::DOMString; @@ -43,16 +42,16 @@ pub struct Event { reflector_: Reflector, pub current_target: MutNullableJS, pub target: MutNullableJS, - type_: Traceable>, - pub phase: Traceable>, - pub canceled: Traceable>, - pub stop_propagation: Traceable>, - pub stop_immediate: Traceable>, - pub cancelable: Traceable>, - pub bubbles: Traceable>, - pub trusted: Traceable>, - pub dispatching: Traceable>, - pub initialized: Traceable>, + type_: RefCell, + pub phase: Cell, + pub canceled: Cell, + pub stop_propagation: Cell, + pub stop_immediate: Cell, + pub cancelable: Cell, + pub bubbles: Cell, + pub trusted: Cell, + pub dispatching: Cell, + pub initialized: Cell, timestamp: u64, } @@ -63,16 +62,16 @@ impl Event { reflector_: Reflector::new(), current_target: Default::default(), target: Default::default(), - phase: Traceable::new(Cell::new(PhaseNone)), - type_: Traceable::new(RefCell::new("".to_string())), - canceled: Traceable::new(Cell::new(false)), - cancelable: Traceable::new(Cell::new(true)), - bubbles: Traceable::new(Cell::new(false)), - trusted: Traceable::new(Cell::new(false)), - dispatching: Traceable::new(Cell::new(false)), - stop_propagation: Traceable::new(Cell::new(false)), - stop_immediate: Traceable::new(Cell::new(false)), - initialized: Traceable::new(Cell::new(false)), + phase: Cell::new(PhaseNone), + type_: RefCell::new("".to_string()), + canceled: Cell::new(false), + cancelable: Cell::new(true), + bubbles: Cell::new(false), + trusted: Cell::new(false), + dispatching: Cell::new(false), + stop_propagation: Cell::new(false), + stop_immediate: Cell::new(false), + initialized: Cell::new(false), timestamp: time::get_time().sec as u64, } } @@ -88,7 +87,7 @@ impl Event { can_bubble: bool, cancelable: bool) -> Temporary { let event = Event::new_uninitialized(global).root(); - event.deref().InitEvent(type_, can_bubble, cancelable); + event.InitEvent(type_, can_bubble, cancelable); Temporary::from_rooted(*event) } @@ -101,11 +100,11 @@ impl Event { impl<'a> EventMethods for JSRef<'a, Event> { fn EventPhase(self) -> u16 { - self.phase.deref().get() as u16 + self.phase.get() as u16 } fn Type(self) -> DOMString { - self.type_.deref().borrow().clone() + self.type_.borrow().clone() } fn GetTarget(self) -> Option> { @@ -117,30 +116,30 @@ impl<'a> EventMethods for JSRef<'a, Event> { } fn DefaultPrevented(self) -> bool { - self.canceled.deref().get() + self.canceled.get() } fn PreventDefault(self) { - if self.cancelable.deref().get() { - self.canceled.deref().set(true) + if self.cancelable.get() { + self.canceled.set(true) } } fn StopPropagation(self) { - self.stop_propagation.deref().set(true); + self.stop_propagation.set(true); } fn StopImmediatePropagation(self) { - self.stop_immediate.deref().set(true); - self.stop_propagation.deref().set(true); + self.stop_immediate.set(true); + self.stop_propagation.set(true); } fn Bubbles(self) -> bool { - self.bubbles.deref().get() + self.bubbles.get() } fn Cancelable(self) -> bool { - self.cancelable.deref().get() + self.cancelable.get() } fn TimeStamp(self) -> u64 { @@ -151,22 +150,22 @@ impl<'a> EventMethods for JSRef<'a, Event> { type_: DOMString, bubbles: bool, cancelable: bool) { - self.initialized.deref().set(true); - if self.dispatching.deref().get() { + self.initialized.set(true); + if self.dispatching.get() { return; } - self.stop_propagation.deref().set(false); - self.stop_immediate.deref().set(false); - self.canceled.deref().set(false); - self.trusted.deref().set(false); + self.stop_propagation.set(false); + self.stop_immediate.set(false); + self.canceled.set(false); + self.trusted.set(false); self.target.clear(); - *self.type_.deref().borrow_mut() = type_; - self.bubbles.deref().set(bubbles); - self.cancelable.deref().set(cancelable); + *self.type_.borrow_mut() = type_; + self.bubbles.set(bubbles); + self.cancelable.set(cancelable); } fn IsTrusted(self) -> bool { - self.trusted.deref().get() + self.trusted.get() } } diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 4c3bcc16fcb..54f2814db79 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -15,18 +15,18 @@ use dom::virtualmethods::vtable_for; pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, pseudo_target: Option>, event: JSRef) -> bool { - assert!(!event.deref().dispatching.deref().get()); + assert!(!event.dispatching.get()); event.target.assign(Some(match pseudo_target { Some(pseudo_target) => pseudo_target, None => target.clone(), })); - event.dispatching.deref().set(true); + event.dispatching.set(true); let type_ = event.Type(); //TODO: no chain if not participating in a tree - let mut chain: Vec> = if target.deref().is_node() { + let mut chain: Vec> = if target.is_node() { let target_node: JSRef = NodeCast::to_ref(target).unwrap(); target_node.ancestors().map(|ancestor| { let ancestor_target: JSRef = EventTargetCast::from_ref(ancestor); @@ -36,7 +36,7 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, vec!() }; - event.deref().phase.deref().set(PhaseCapturing); + event.phase.set(PhaseCapturing); //FIXME: The "callback this value" should be currentTarget @@ -49,12 +49,12 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(**cur_target, event, ReportExceptions); - if event.deref().stop_immediate.deref().get() { + if event.stop_immediate.get() { break; } } - event.deref().stop_propagation.deref().get() + event.stop_propagation.get() } None => false }; @@ -65,17 +65,17 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, } /* at target */ - if !event.deref().stop_propagation.deref().get() { - event.phase.deref().set(PhaseAtTarget); + if !event.stop_propagation.get() { + event.phase.set(PhaseAtTarget); event.current_target.assign(Some(target.clone())); - let opt_listeners = target.deref().get_listeners(type_.as_slice()); + let opt_listeners = target.get_listeners(type_.as_slice()); for listeners in opt_listeners.iter() { for listener in listeners.iter() { // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(target, event, ReportExceptions); - if event.deref().stop_immediate.deref().get() { + if event.stop_immediate.get() { break; } } @@ -83,23 +83,23 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, } /* bubbling */ - if event.deref().bubbles.deref().get() && !event.deref().stop_propagation.deref().get() { - event.deref().phase.deref().set(PhaseBubbling); + if event.bubbles.get() && !event.stop_propagation.get() { + event.phase.set(PhaseBubbling); for cur_target in chain.iter() { - let stopped = match cur_target.deref().get_listeners_for(type_.as_slice(), Bubbling) { + let stopped = match cur_target.get_listeners_for(type_.as_slice(), Bubbling) { Some(listeners) => { - event.deref().current_target.assign(Some(cur_target.deref().clone())); + event.current_target.assign(Some(cur_target.deref().clone())); for listener in listeners.iter() { // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(**cur_target, event, ReportExceptions); - if event.deref().stop_immediate.deref().get() { + if event.stop_immediate.get() { break; } } - event.deref().stop_propagation.deref().get() + event.stop_propagation.get() } None => false }; @@ -131,8 +131,8 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, let _ = chain.pop(); } - event.dispatching.deref().set(false); - event.phase.deref().set(PhaseNone); + event.dispatching.set(false); + event.phase.set(PhaseNone); event.current_target.clear(); !event.DefaultPrevented() diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 682379bfdce..8ab66699d6e 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -122,7 +122,7 @@ impl<'a> EventTargetHelpers for JSRef<'a, EventTarget> { fn dispatch_event_with_target(self, target: Option>, event: JSRef) -> Fallible { - if event.deref().dispatching.deref().get() || !event.deref().initialized.deref().get() { + if event.deref().dispatching.get() || !event.deref().initialized.get() { return Err(InvalidState); } Ok(dispatch_event(self, target, event))