aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/reflector.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/bindings/reflector.rs')
-rw-r--r--components/script/dom/bindings/reflector.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs
index d5280712a03..74c039688f7 100644
--- a/components/script/dom/bindings/reflector.rs
+++ b/components/script/dom/bindings/reflector.rs
@@ -4,19 +4,25 @@
//! The `Reflector` struct.
-use dom::bindings::global::{GlobalRef, GlobalRoot, global_root_from_reflector};
+use dom::bindings::conversions::DerivedFrom;
+use dom::bindings::global::{GlobalRoot, global_root_from_reflector};
use dom::bindings::js::Root;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleObject, JSContext, JSObject};
use std::cell::UnsafeCell;
use std::ptr;
/// Create the reflector for a new DOM object and yield ownership to the
/// reflector.
-pub fn reflect_dom_object<T: Reflectable>(obj: Box<T>,
- global: GlobalRef,
- wrap_fn: fn(*mut JSContext, GlobalRef, Box<T>) -> Root<T>)
- -> Root<T> {
- wrap_fn(global.get_cx(), global, obj)
+pub fn reflect_dom_object<T, U>(
+ obj: Box<T>,
+ global: &U,
+ wrap_fn: fn(*mut JSContext, &GlobalScope, Box<T>) -> Root<T>)
+ -> Root<T>
+ where T: Reflectable, U: DerivedFrom<GlobalScope>
+{
+ let global_scope = global.upcast();
+ wrap_fn(global_scope.get_cx(), global_scope, obj)
}
/// A struct to store a reference to the reflector of a DOM object.