Stop implementing Reflectable for JS<T> (fixes #2285).

It's not generally safe to expose the contents of a JS<T>.
This commit is contained in:
Ms2ger 2015-09-13 16:47:06 +02:00
parent ca5e7097a0
commit 3781567c19
2 changed files with 6 additions and 13 deletions

View file

@ -88,6 +88,12 @@ impl<T: Reflectable> JS<T> {
}
}
impl<T: Reflectable> JSTraceable for JS<T> {
fn trace(&self, trc: *mut JSTracer) {
trace_reflector(trc, "", unsafe { (**self.ptr).reflector() });
}
}
/// An unrooted reference to a DOM object for use in layout. `Layout*Helpers`
/// traits must be implemented on this.
#[allow_unrooted_interior]
@ -148,13 +154,6 @@ impl LayoutJS<Node> {
}
}
impl<T: Reflectable> Reflectable for JS<T> {
fn reflector(&self) -> &Reflector {
unsafe {
(**self.ptr).reflector()
}
}
}
/// A trait to be implemented for JS-managed types that can be stored in
/// mutable member fields.

View file

@ -88,12 +88,6 @@ pub trait JSTraceable {
fn trace(&self, trc: *mut JSTracer);
}
impl<T: Reflectable> JSTraceable for JS<T> {
fn trace(&self, trc: *mut JSTracer) {
trace_reflector(trc, "", self.reflector());
}
}
no_jsmanaged_fields!(EncodingRef);
no_jsmanaged_fields!(Reflector);