aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/eventdispatcher.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/eventdispatcher.rs')
-rw-r--r--components/script/dom/eventdispatcher.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs
index ca534ba0389..8633f63df7c 100644
--- a/components/script/dom/eventdispatcher.rs
+++ b/components/script/dom/eventdispatcher.rs
@@ -5,7 +5,7 @@
use dom::bindings::callback::ExceptionHandling::Report;
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
use dom::bindings::codegen::InheritTypes::{EventTargetCast, NodeCast};
-use dom::bindings::js::{JS, JSRef, OptionalRootable, Rootable};
+use dom::bindings::js::JS;
use dom::bindings::trace::RootedVec;
use dom::eventtarget::{EventTarget, ListenerPhase};
use dom::event::{Event, EventPhase};
@@ -13,9 +13,9 @@ use dom::node::{Node, NodeHelpers};
use dom::virtualmethods::vtable_for;
// See https://dom.spec.whatwg.org/#concept-event-dispatch for the full dispatch algorithm
-pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>,
- pseudo_target: Option<JSRef<'b, EventTarget>>,
- event: JSRef<Event>) -> bool {
+pub fn dispatch_event<'a, 'b>(target: &'a EventTarget,
+ pseudo_target: Option<&'b EventTarget>,
+ event: &Event) -> bool {
assert!(!event.dispatching());
assert!(event.initialized());
@@ -31,9 +31,8 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>,
let mut chain: RootedVec<JS<EventTarget>> = RootedVec::new();
if let Some(target_node) = NodeCast::to_ref(target) {
for ancestor in target_node.ancestors() {
- let ancestor = ancestor.root();
let ancestor_target = EventTargetCast::from_ref(ancestor.r());
- chain.push(JS::from_rooted(ancestor_target))
+ chain.push(JS::from_ref(ancestor_target))
}
}
@@ -113,10 +112,10 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>,
}
/* default action */
- let target = event.GetTarget().root();
+ let target = event.GetTarget();
match target {
Some(ref target) => {
- let node: Option<JSRef<Node>> = NodeCast::to_ref(target.r());
+ let node: Option<&Node> = NodeCast::to_ref(target.r());
match node {
Some(node) => {
let vtable = vtable_for(&node);