aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py6
-rw-r--r--src/components/script/dom/bindings/domparser.rs10
-rw-r--r--src/components/script/dom/bindings/element.rs18
-rw-r--r--src/components/script/dom/bindings/node.rs14
-rw-r--r--src/components/script/dom/bindings/utils.rs14
-rw-r--r--src/components/script/dom/blob.rs10
-rw-r--r--src/components/script/dom/characterdata.rs6
-rw-r--r--src/components/script/dom/clientrect.rs12
-rw-r--r--src/components/script/dom/clientrectlist.rs12
-rw-r--r--src/components/script/dom/document.rs20
-rw-r--r--src/components/script/dom/element.rs6
-rw-r--r--src/components/script/dom/event.rs11
-rw-r--r--src/components/script/dom/eventtarget.rs10
-rw-r--r--src/components/script/dom/formdata.rs11
-rw-r--r--src/components/script/dom/htmlcollection.rs11
-rw-r--r--src/components/script/dom/htmldocument.rs6
-rw-r--r--src/components/script/dom/htmlelement.rs6
-rw-r--r--src/components/script/dom/mouseevent.rs8
-rw-r--r--src/components/script/dom/navigator.rs10
-rw-r--r--src/components/script/dom/node.rs8
-rw-r--r--src/components/script/dom/uievent.rs8
-rw-r--r--src/components/script/dom/validitystate.rs9
-rw-r--r--src/components/script/dom/window.rs9
-rw-r--r--src/components/script/dom/windowproxy.rs10
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 {