Drop the FromJSValConvertible implementation for interfaces.

It doesn't really fit in the design, and native_from_reflector_jsmanaged has
gained the usability improvements that it used to lack.
This commit is contained in:
Ms2ger 2015-04-07 13:11:45 +02:00
parent 1fd609d198
commit 58a8cfda52
2 changed files with 3 additions and 17 deletions

View file

@ -569,17 +569,6 @@ pub fn native_from_reflector_jsmanaged<T>(mut obj: *mut JSObject) -> Result<Unro
} }
} }
impl<T: Reflectable+IDLInterface> FromJSValConvertible for Unrooted<T> {
type Config = ();
fn from_jsval(_cx: *mut JSContext, value: JSVal, _option: ())
-> Result<Unrooted<T>, ()> {
if !value.is_object() {
return Err(());
}
native_from_reflector_jsmanaged(value.to_object())
}
}
impl<T: Reflectable> ToJSValConvertible for Root<T> { impl<T: Reflectable> ToJSValConvertible for Root<T> {
fn to_jsval(&self, cx: *mut JSContext) -> JSVal { fn to_jsval(&self, cx: *mut JSContext) -> JSVal {
self.r().reflector().to_jsval(cx) self.r().reflector().to_jsval(cx)

View file

@ -7,7 +7,7 @@
//! This module contains smart pointers to global scopes, to simplify writing //! This module contains smart pointers to global scopes, to simplify writing
//! code that works in workers as well as window scopes. //! code that works in workers as well as window scopes.
use dom::bindings::conversions::FromJSValConvertible; use dom::bindings::conversions::native_from_reflector_jsmanaged;
use dom::bindings::js::{JS, JSRef, Root, Unrooted}; use dom::bindings::js::{JS, JSRef, Root, Unrooted};
use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers}; use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers};
@ -22,11 +22,8 @@ use js::{JSCLASS_IS_GLOBAL, JSCLASS_IS_DOMJSCLASS};
use js::glue::{GetGlobalForObjectCrossCompartment}; use js::glue::{GetGlobalForObjectCrossCompartment};
use js::jsapi::{JSContext, JSObject}; use js::jsapi::{JSContext, JSObject};
use js::jsapi::{JS_GetClass}; use js::jsapi::{JS_GetClass};
use js::jsval::ObjectOrNullValue;
use url::Url; use url::Url;
use std::ptr;
/// A freely-copyable reference to a rooted global object. /// A freely-copyable reference to a rooted global object.
#[derive(Copy)] #[derive(Copy)]
pub enum GlobalRef<'a> { pub enum GlobalRef<'a> {
@ -189,12 +186,12 @@ pub fn global_object_for_js_object(obj: *mut JSObject) -> GlobalUnrooted {
let global = GetGlobalForObjectCrossCompartment(obj); let global = GetGlobalForObjectCrossCompartment(obj);
let clasp = JS_GetClass(global); let clasp = JS_GetClass(global);
assert!(((*clasp).flags & (JSCLASS_IS_DOMJSCLASS | JSCLASS_IS_GLOBAL)) != 0); assert!(((*clasp).flags & (JSCLASS_IS_DOMJSCLASS | JSCLASS_IS_GLOBAL)) != 0);
match FromJSValConvertible::from_jsval(ptr::null_mut(), ObjectOrNullValue(global), ()) { match native_from_reflector_jsmanaged(global) {
Ok(window) => return GlobalUnrooted::Window(window), Ok(window) => return GlobalUnrooted::Window(window),
Err(_) => (), Err(_) => (),
} }
match FromJSValConvertible::from_jsval(ptr::null_mut(), ObjectOrNullValue(global), ()) { match native_from_reflector_jsmanaged(global) {
Ok(worker) => return GlobalUnrooted::Worker(worker), Ok(worker) => return GlobalUnrooted::Worker(worker),
Err(_) => (), Err(_) => (),
} }