diff options
Diffstat (limited to 'src')
24 files changed, 158 insertions, 87 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index bb2a779dd04..70977eb6e6b 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -2464,7 +2464,7 @@ class CGAbstractMethod(CGThing): def CreateBindingJSObject(descriptor, parent=None): if descriptor.proxy: - handler = """ //let reflector = ptr::to_unsafe_ptr(aObject.reflector()); + handler = """ //let reflector = aObject.mut_reflector(); let page = page_from_context(aCx); let handler = (*page).js_info.get_ref().dom_static.proxy_handlers.get(&(PrototypeList::id::%s as uint)); @@ -2520,7 +2520,7 @@ class CGWrapWithCacheMethod(CGAbstractMethod): return ptr::null(); } - let reflector = ptr::to_mut_unsafe_ptr(aObject.reflector()); + let reflector = aObject.mut_reflector(); %s //NS_ADDREF(aObject); @@ -2529,7 +2529,7 @@ class CGWrapWithCacheMethod(CGAbstractMethod): return obj;""" % (CreateBindingJSObject(self.descriptor, "parent")) else: - return """ let reflector = ptr::to_mut_unsafe_ptr(aObject.reflector()); + return """ let reflector = aObject.mut_reflector(); %s let proto = GetProtoObject(aCx, obj, obj); JS_SetPrototype(aCx, obj, proto); diff --git a/src/components/script/dom/bindings/domparser.rs b/src/components/script/dom/bindings/domparser.rs index 14b1f776fc9..09117e1c758 100644 --- a/src/components/script/dom/bindings/domparser.rs +++ b/src/components/script/dom/bindings/domparser.rs @@ -10,11 +10,13 @@ use dom::domparser::DOMParser; use js::jsapi::{JSContext, JSObject, JSVal}; use js::glue::{RUST_OBJECT_TO_JSVAL}; -use std::cast; - impl Reflectable for DOMParser { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 4f118153582..d20573ecae9 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -12,10 +12,14 @@ use js::jsapi::{JSContext, JSObject, JSTracer}; macro_rules! generate_cacheable_wrapper( ($name: path, $wrap: path) => ( impl Reflectable for $name { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.element.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.element.mut_reflector() + } + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; $wrap(cx, scope, self, &mut unused) @@ -27,10 +31,14 @@ macro_rules! generate_cacheable_wrapper( macro_rules! generate_cacheable_wrapper_htmlelement( ($name: path, $wrap: path) => ( impl Reflectable for $name { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.htmlelement.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.htmlelement.mut_reflector() + } + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; $wrap(cx, scope, self, &mut unused) @@ -42,10 +50,14 @@ macro_rules! generate_cacheable_wrapper_htmlelement( macro_rules! generate_cacheable_wrapper_node( ($name: path, $wrap: path) => ( impl Reflectable for $name { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.node.mut_reflector() + } + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; $wrap(cx, scope, self, &mut unused) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index db0d574e766..d1f60eb21e8 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -96,11 +96,15 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> *JSObject } impl Reflectable for AbstractNode<ScriptView> { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { + do self.with_base |base| { + unsafe { cast::transmute(base.reflector()) } + } + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { do self.with_mut_base |base| { - unsafe { - cast::transmute(&base.reflector_) - } + unsafe { cast::transmute(base.reflector()) } } } @@ -117,7 +121,7 @@ impl Traceable for Node<ScriptView> { return; } debug!("tracing %s", name); - let mut node = node.unwrap(); + let node = node.unwrap(); let obj = node.reflector().get_jsobject(); assert!(obj.is_not_null()); unsafe { diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 1354924bdf6..bb374e9cf36 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -528,7 +528,8 @@ pub fn initialize_global(global: *JSObject) { } pub trait Reflectable { - fn reflector(&mut self) -> &mut Reflector; + fn reflector<'a>(&'a self) -> &'a Reflector; + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector; fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject; } @@ -561,7 +562,7 @@ pub fn WrapNewBindingObject(cx: *JSContext, scope: *JSObject, value: @mut Reflectable, vp: *mut JSVal) -> JSBool { unsafe { - let reflector = value.reflector(); + let reflector = value.mut_reflector(); let obj = reflector.get_jsobject(); if obj.is_not_null() /*&& js::GetObjectCompartment(obj) == js::GetObjectCompartment(scope)*/ { *vp = RUST_OBJECT_TO_JSVAL(obj); @@ -589,7 +590,7 @@ pub fn WrapNativeParent(cx: *JSContext, scope: *JSObject, mut p: Option<@mut Ref return obj; } let obj = p.wrap_object_shared(cx, scope); - p.reflector().set_jsobject(obj); + p.mut_reflector().set_jsobject(obj); obj } None => unsafe { JS_GetGlobalObject(cx) } @@ -733,10 +734,9 @@ pub trait DerivedWrapper { impl DerivedWrapper for AbstractNode<ScriptView> { #[fixed_stack_segment] fn wrap(&mut self, cx: *JSContext, _scope: *JSObject, vp: *mut JSVal) -> i32 { - let cache = self.reflector(); - let wrapper = cache.get_jsobject(); - if wrapper.is_not_null() { - unsafe { *vp = RUST_OBJECT_TO_JSVAL(wrapper) }; + let obj = self.reflector().get_jsobject(); + if obj.is_not_null() { + unsafe { *vp = RUST_OBJECT_TO_JSVAL(obj) }; return 1; } unsafe { *vp = RUST_OBJECT_TO_JSVAL(node::create(cx, self)) }; diff --git a/src/components/script/dom/blob.rs b/src/components/script/dom/blob.rs index 69ecf68a978..34d7399d871 100644 --- a/src/components/script/dom/blob.rs +++ b/src/components/script/dom/blob.rs @@ -8,8 +8,6 @@ use script_task::{page_from_context}; use js::jsapi::{JSContext, JSObject}; -use std::cast; - pub struct Blob { reflector_: Reflector } @@ -23,8 +21,12 @@ impl Blob { } impl Reflectable for Blob { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index b1953dbaaae..cff259aff83 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -59,10 +59,14 @@ impl CharacterData { } impl Reflectable for CharacterData { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.node.mut_reflector() + } + fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"need to implement wrapping"); } diff --git a/src/components/script/dom/clientrect.rs b/src/components/script/dom/clientrect.rs index a9d48819839..acbd2a42916 100644 --- a/src/components/script/dom/clientrect.rs +++ b/src/components/script/dom/clientrect.rs @@ -9,8 +9,6 @@ use script_task::page_from_context; use js::jsapi::{JSObject, JSContext, JSVal}; use js::glue::RUST_OBJECT_TO_JSVAL; -use std::cast; - pub struct ClientRect { reflector_: Reflector, top: f32, @@ -62,10 +60,12 @@ impl ClientRect { } impl Reflectable for ClientRect { - fn reflector(&mut self) -> &mut Reflector { - unsafe { - cast::transmute(&self.reflector_) - } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/clientrectlist.rs b/src/components/script/dom/clientrectlist.rs index f7f283a2ecd..2c6af49971e 100644 --- a/src/components/script/dom/clientrectlist.rs +++ b/src/components/script/dom/clientrectlist.rs @@ -9,8 +9,6 @@ use script_task::page_from_context; use js::jsapi::{JSObject, JSContext}; -use std::cast; - pub struct ClientRectList { reflector_: Reflector, rects: ~[@mut ClientRect] @@ -49,10 +47,12 @@ impl ClientRectList { } impl Reflectable for ClientRectList { - fn reflector(&mut self) -> &mut Reflector { - unsafe { - cast::transmute(&self.reflector_) - } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 0d928282d92..10aa88d8e73 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -144,9 +144,15 @@ impl ReflectableDocument for Document { } impl Reflectable for AbstractDocument { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { do self.with_mut_base |doc| { - doc.reflector() + unsafe { cast::transmute(doc.reflector()) } + } + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + do self.with_mut_base |doc| { + unsafe { cast::transmute(doc.mut_reflector()) } } } @@ -185,10 +191,12 @@ impl DerivedWrapper for AbstractDocument { impl Reflectable for Document { - fn reflector(&mut self) -> &mut Reflector { - unsafe { - cast::transmute(&self.reflector_) - } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index b1ea94914e1..7f0857894b9 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -30,10 +30,14 @@ pub struct Element { } impl Reflectable for Element { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.node.mut_reflector() + } + fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!("no wrapping") } diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index 3088c4c577e..5d2380f4b13 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -14,9 +14,6 @@ use js::jsapi::{JSObject, JSContext, JSVal}; use script_task::page_from_context; -use std::cast; - - pub enum Event_ { ResizeEvent(uint, uint), ReflowEvent, @@ -114,8 +111,12 @@ impl Event { } impl Reflectable for Event { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index 215f3d894a6..b95fee8ffa4 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -9,8 +9,6 @@ use script_task::page_from_context; use js::glue::RUST_OBJECT_TO_JSVAL; use js::jsapi::{JSObject, JSContext, JSVal}; -use std::cast; - pub struct EventTarget { reflector_: Reflector } @@ -28,8 +26,12 @@ impl EventTarget { } impl Reflectable for EventTarget { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index fe80238ba34..55f14b481dd 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -11,7 +11,6 @@ use script_task::{page_from_context}; use js::jsapi::{JSObject, JSContext, JSVal}; use js::glue::RUST_OBJECT_TO_JSVAL; -use std::cast; use std::hashmap::HashMap; enum FormDatum { @@ -50,10 +49,12 @@ impl FormData { } impl Reflectable for FormData { - fn reflector(&mut self) -> &mut Reflector { - unsafe { - cast::transmute(&self.reflector_) - } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/htmlcollection.rs b/src/components/script/dom/htmlcollection.rs index c9e51454ab7..b14825ed732 100644 --- a/src/components/script/dom/htmlcollection.rs +++ b/src/components/script/dom/htmlcollection.rs @@ -10,7 +10,6 @@ use script_task::page_from_context; use js::jsapi::{JSObject, JSContext}; -use std::cast; use std::ptr; pub struct HTMLCollection { @@ -69,10 +68,12 @@ impl BindingObject for HTMLCollection { } impl Reflectable for HTMLCollection { - fn reflector(&mut self) -> &mut Reflector { - unsafe { - cast::transmute(&self.reflector_) - } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/htmldocument.rs b/src/components/script/dom/htmldocument.rs index d8ed4e28621..b81b4886aff 100644 --- a/src/components/script/dom/htmldocument.rs +++ b/src/components/script/dom/htmldocument.rs @@ -200,10 +200,14 @@ impl HTMLDocument { } impl Reflectable for HTMLDocument { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.parent.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.parent.mut_reflector() + } + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; HTMLDocumentBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/components/script/dom/htmlelement.rs b/src/components/script/dom/htmlelement.rs index e84ec55cf12..26143c3d55f 100644 --- a/src/components/script/dom/htmlelement.rs +++ b/src/components/script/dom/htmlelement.rs @@ -150,10 +150,14 @@ impl HTMLElement { } impl Reflectable for HTMLElement { - fn reflector(&mut self) -> &mut Reflector { + fn reflector<'a>(&'a self) -> &'a Reflector { self.element.reflector() } + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.element.mut_reflector() + } + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; HTMLElementBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/components/script/dom/mouseevent.rs b/src/components/script/dom/mouseevent.rs index 1f6968235eb..2ce0e558efd 100644 --- a/src/components/script/dom/mouseevent.rs +++ b/src/components/script/dom/mouseevent.rs @@ -143,8 +143,12 @@ impl MouseEvent { } impl Reflectable for MouseEvent { - fn reflector(&mut self) -> &mut Reflector { - return self.parent.reflector() + fn reflector<'a>(&'a self) -> &'a Reflector { + self.parent.reflector() + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.parent.mut_reflector() } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/navigator.rs b/src/components/script/dom/navigator.rs index 54363b6414d..d6970da34b2 100644 --- a/src/components/script/dom/navigator.rs +++ b/src/components/script/dom/navigator.rs @@ -9,8 +9,6 @@ use script_task::{page_from_context}; use js::jsapi::{JSContext, JSObject}; -use std::cast; - pub struct Navigator { reflector_: Reflector } @@ -88,8 +86,12 @@ impl Navigator { } impl Reflectable for Navigator { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 0a7512c7b7f..49b2e982fd9 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -790,8 +790,12 @@ impl VoidPtrLike for AbstractNode<LayoutView> { } impl Reflectable for Node<ScriptView> { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&mut self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs index d4b6b89c20e..7b021b08673 100644 --- a/src/components/script/dom/uievent.rs +++ b/src/components/script/dom/uievent.rs @@ -116,8 +116,12 @@ impl UIEvent { } impl Reflectable for UIEvent { - fn reflector(&mut self) -> &mut Reflector { - return self.parent.reflector() + fn reflector<'a>(&'a self) -> &'a Reflector { + self.parent.reflector() + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + self.parent.mut_reflector() } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/validitystate.rs b/src/components/script/dom/validitystate.rs index 0aeab8ae72a..73819ca9839 100644 --- a/src/components/script/dom/validitystate.rs +++ b/src/components/script/dom/validitystate.rs @@ -5,7 +5,6 @@ use dom::bindings::utils::{Reflector, BindingObject, Reflectable}; use dom::bindings::codegen::ValidityStateBinding; use js::jsapi::{JSContext, JSObject}; -use std::cast; pub struct ValidityState { reflector_: Reflector, @@ -60,8 +59,12 @@ impl ValidityState { } impl Reflectable for ValidityState { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index f05fda15e4b..e148eef10a1 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -19,7 +19,6 @@ use js::jsapi::{JSObject, JSContext, JS_DefineProperty, JS_CallTracer}; use js::jsapi::{JSPropertyOp, JSStrictPropertyOp, JSTracer, JSTRACE_OBJECT}; use js::{JSVAL_NULL, JSPROP_ENUMERATE}; -use std::cast; use std::cell::Cell; use std::comm; use std::comm::SharedChan; @@ -136,8 +135,12 @@ impl Window { } impl Reflectable for Window { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(&self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { diff --git a/src/components/script/dom/windowproxy.rs b/src/components/script/dom/windowproxy.rs index 2a6bf88930f..235facca913 100644 --- a/src/components/script/dom/windowproxy.rs +++ b/src/components/script/dom/windowproxy.rs @@ -7,8 +7,6 @@ use script_task::page_from_context; use js::jsapi::{JSContext, JSObject}; -use std::cast; - pub struct WindowProxy { reflector_: Reflector } @@ -35,8 +33,12 @@ impl BindingObject for WindowProxy { } impl Reflectable for WindowProxy { - fn reflector(&mut self) -> &mut Reflector { - unsafe { cast::transmute(self.reflector_) } + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } + + fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { + &mut self.reflector_ } fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { |