diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index b36f0ebd860..1d1eb1e4fe0 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1569,16 +1569,7 @@ for (uint32_t i = 0; i < length; ++i) { wrappingCode = "" if (not descriptor.interface.isExternal() and not descriptor.interface.isCallback()): - if descriptor.wrapperCache: - wrapMethod = "WrapNewBindingObject" - else: - if not isCreator: - raise MethodNotCreatorError(descriptor.interface.identifier.name) - wrapMethod = "WrapNewBindingNonWrapperCachedObject" - if descriptor.pointerType == '': - wrap = "%s.wrap(cx, ${obj}, ${jsvalPtr} as *mut JSVal)" % result - else: - wrap = "%s(cx, ${obj}, %s as @mut Reflectable, ${jsvalPtr} as *mut JSVal)" % (wrapMethod, result) + wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result # We don't support prefable stuff in workers. assert(not descriptor.prefable or not descriptor.workers) if not descriptor.prefable: @@ -1596,11 +1587,7 @@ for (uint32_t i = 0; i < length; ++i) { failed = wrapAndSetPtr("HandleNewBindingWrappingFailure(cx, ${obj}, %s, ${jsvalPtr})" % result) wrappingCode += wrapAndSetPtr(wrap, failed) else: - #wrap = "WrapObject(cx, ${obj}, %s, %s${jsvalPtr})" % (result, getIID) - if descriptor.pointerType == '': - wrap = "(%s.wrap(cx, ${obj}, ${jsvalPtr}) != 0)" % result - else: - wrap = "if WrapNewBindingObject(cx, ${obj}, %s as @mut Reflectable, ${jsvalPtr}) { 1 } else { 0 };" % result + wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result wrappingCode += wrapAndSetPtr(wrap) return (wrappingCode, False) diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 0cd5456b34e..d6fa0c605ec 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -583,16 +583,14 @@ impl Reflector { } #[fixed_stack_segment] -pub fn WrapNewBindingObject(cx: *JSContext, _scope: *JSObject, - value: @mut Reflectable, - vp: *mut JSVal) -> JSBool { - unsafe { - let reflector = value.mut_reflector(); +pub fn GetReflector(cx: *JSContext, reflector: &Reflector, + vp: *mut JSVal) -> JSBool { let obj = reflector.get_jsobject(); assert!(obj.is_not_null()); - *vp = RUST_OBJECT_TO_JSVAL(obj); - return JS_WrapValue(cx, cast::transmute(vp)); - } + unsafe { + *vp = RUST_OBJECT_TO_JSVAL(obj); + return JS_WrapValue(cx, cast::transmute(vp)); + } } #[fixed_stack_segment]