From 99574f14d94dfabe96a96fdc010daf1707eb77d7 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 4 Mar 2014 11:41:46 +0100 Subject: [PATCH] Return a JS from global_object_for_{dom,js}_object. --- .../script/dom/bindings/codegen/CodegenRust.py | 3 +-- src/components/script/dom/bindings/utils.rs | 18 ++++++++---------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index cb37bec5a8b..41e86936385 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4805,8 +4805,7 @@ class CGClassConstructHook(CGAbstractExternMethod): def generate_code(self): preamble = """ - let window = global_object_for_js_object(RUST_JSVAL_TO_OBJECT(JS_CALLEE(cx, &*vp))); - let global = JS::from_box(window); + let global = global_object_for_js_object(RUST_JSVAL_TO_OBJECT(JS_CALLEE(cx, &*vp))); let obj = global.reflector().get_jsobject(); """ nativeName = MakeNativeName(self._ctor.identifier.name) diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index adfcc3986c5..b1787f1f071 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -720,32 +720,30 @@ pub fn CreateDOMGlobal(cx: *JSContext, class: *JSClass) -> *JSObject { } /// Returns the global object of the realm that the given JS object was created in. -pub fn global_object_for_js_object(obj: *JSObject) -> *mut Box { +pub fn global_object_for_js_object(obj: *JSObject) -> JS { unsafe { let global = GetGlobalForObjectCrossCompartment(obj); let clasp = JS_GetClass(global); assert!(((*clasp).flags & (JSCLASS_IS_DOMJSCLASS | JSCLASS_IS_GLOBAL)) != 0); // FIXME(jdm): Either don't hardcode or sanity assert prototype stuff. match unwrap_object::<*mut Box>(global, PrototypeList::id::Window, 1) { - Ok(win) => win, + Ok(win) => JS::from_box(win), Err(_) => fail!("found DOM global that doesn't unwrap to Window"), } } } fn cx_for_dom_reflector(obj: *JSObject) -> *JSContext { - unsafe { - let win = global_object_for_js_object(obj); - let js_info = (*win).data.page().js_info(); - match *js_info.get() { - Some(ref info) => info.js_context.borrow().ptr, - None => fail!("no JS context for DOM global") - } + let win = global_object_for_js_object(obj); + let js_info = win.get().page().js_info(); + match *js_info.get() { + Some(ref info) => info.js_context.borrow().ptr, + None => fail!("no JS context for DOM global") } } /// Returns the global object of the realm that the given DOM object was created in. -pub fn global_object_for_dom_object(obj: &T) -> *mut Box { +pub fn global_object_for_dom_object(obj: &T) -> JS { global_object_for_js_object(obj.reflector().get_jsobject()) }