diff options
author | Josh Matthews <josh@joshmatthews.net> | 2014-03-31 18:41:28 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2014-05-03 14:18:30 -0400 |
commit | d7b96db33ca8f2b8a162df38e0f00e95f5ea6fa1 (patch) | |
tree | efd1e7f7ec1dd30467c2a67306e1a639837abead /src/components/script/dom/mouseevent.rs | |
parent | ffdc3f5b32a345b88eed774848924e862d47c093 (diff) | |
download | servo-d7b96db33ca8f2b8a162df38e0f00e95f5ea6fa1.tar.gz servo-d7b96db33ca8f2b8a162df38e0f00e95f5ea6fa1.zip |
Implement safe rooting strategy via Unrooted, Root, JSRef, and JS.
Diffstat (limited to 'src/components/script/dom/mouseevent.rs')
-rw-r--r-- | src/components/script/dom/mouseevent.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/components/script/dom/mouseevent.rs b/src/components/script/dom/mouseevent.rs index a1f08aa72e0..b771b1b091c 100644 --- a/src/components/script/dom/mouseevent.rs +++ b/src/components/script/dom/mouseevent.rs @@ -4,7 +4,7 @@ use dom::bindings::codegen::BindingDeclarations::MouseEventBinding; use dom::bindings::codegen::InheritTypes::MouseEventDerived; -use dom::bindings::js::{JS, JSRef, RootCollection, RootedReference}; +use dom::bindings::js::{JS, JSRef, RootCollection, RootedReference, Unrooted}; use dom::bindings::error::Fallible; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::event::{Event, MouseEventTypeId}; @@ -51,7 +51,7 @@ impl MouseEvent { } } - pub fn new(window: &JSRef<Window>) -> JS<MouseEvent> { + pub fn new(window: &JSRef<Window>) -> Unrooted<MouseEvent> { reflect_dom_object(~MouseEvent::new_inherited(), window, MouseEventBinding::Wrap) @@ -59,9 +59,9 @@ impl MouseEvent { pub fn Constructor(owner: &JSRef<Window>, type_: DOMString, - init: &MouseEventBinding::MouseEventInit) -> Fallible<JS<MouseEvent>> { + init: &MouseEventBinding::MouseEventInit) -> Fallible<Unrooted<MouseEvent>> { let roots = RootCollection::new(); - let mut ev = MouseEvent::new(owner); + let mut ev = MouseEvent::new(owner).root(&roots); let view = init.view.as_ref().map(|view| view.root(&roots)); let related_target = init.relatedTarget.as_ref().map(|relatedTarget| relatedTarget.root(&roots)); ev.get_mut().InitMouseEvent(type_, init.bubbles, init.cancelable, view.root_ref(), @@ -69,7 +69,7 @@ impl MouseEvent { init.clientX, init.clientY, init.ctrlKey, init.altKey, init.shiftKey, init.metaKey, init.button, related_target.root_ref()); - Ok(ev) + Ok(Unrooted::new_rooted(&*ev)) } pub fn ScreenX(&self) -> i32 { @@ -113,8 +113,8 @@ impl MouseEvent { 0 } - pub fn GetRelatedTarget(&self) -> Option<JS<EventTarget>> { - self.related_target.clone() + pub fn GetRelatedTarget(&self) -> Option<Unrooted<EventTarget>> { + self.related_target.clone().map(|target| Unrooted::new(target)) } pub fn GetModifierState(&self, _keyArg: DOMString) -> bool { |