diff options
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r-- | components/script/dom/bindings/utils.rs | 56 |
1 files changed, 8 insertions, 48 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 6b2856e7a9e..ac902a5d68c 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -7,8 +7,7 @@ use dom::bindings::codegen::InterfaceObjectMap; use dom::bindings::codegen::PrototypeList; use dom::bindings::codegen::PrototypeList::{MAX_PROTO_CHAIN_LENGTH, PROTO_OR_IFACE_LENGTH}; -use dom::bindings::conversions::{DOM_OBJECT_SLOT, is_dom_class}; -use dom::bindings::conversions::{jsstring_to_str, private_from_proto_check}; +use dom::bindings::conversions::{is_dom_class, jsstring_to_str, private_from_proto_check}; use dom::bindings::error::throw_invalid_this; use dom::bindings::inheritance::TopTypeId; use dom::bindings::str::DOMString; @@ -21,20 +20,18 @@ use js::glue::{CallJitGetterOp, CallJitMethodOp, CallJitSetterOp, IsWrapper}; use js::glue::{GetCrossCompartmentWrapper, WrapperNew}; use js::glue::{RUST_FUNCTION_VALUE_TO_JITINFO, RUST_JSID_IS_INT, RUST_JSID_IS_STRING}; use js::glue::{RUST_JSID_TO_INT, RUST_JSID_TO_STRING, UnwrapObject}; -use js::jsapi::{CallArgs, CompartmentOptions, DOMCallbacks, GetGlobalForObjectCrossCompartment}; -use js::jsapi::{HandleId, HandleObject, HandleValue, Heap, JSAutoCompartment, JSClass, JSContext}; -use js::jsapi::{JSJitInfo, JSObject, JSTraceOp, JSTracer, JSVersion, JSWrapObjectCallbacks}; -use js::jsapi::{JS_DeletePropertyById, JS_EnumerateStandardClasses, JS_FireOnNewGlobalObject}; +use js::jsapi::{CallArgs, DOMCallbacks, GetGlobalForObjectCrossCompartment}; +use js::jsapi::{HandleId, HandleObject, HandleValue, Heap, JSAutoCompartment, JSContext}; +use js::jsapi::{JSJitInfo, JSObject, JSTracer, JSWrapObjectCallbacks}; +use js::jsapi::{JS_DeletePropertyById, JS_EnumerateStandardClasses}; use js::jsapi::{JS_ForwardGetPropertyTo, JS_GetClass, JS_GetLatin1StringCharsAndLength}; use js::jsapi::{JS_GetProperty, JS_GetPrototype, JS_GetReservedSlot, JS_HasProperty}; -use js::jsapi::{JS_HasPropertyById, JS_IsExceptionPending, JS_IsGlobalObject, JS_NewGlobalObject}; +use js::jsapi::{JS_HasPropertyById, JS_IsExceptionPending, JS_IsGlobalObject}; use js::jsapi::{JS_ResolveStandardClass, JS_SetProperty, ToWindowProxyIfWindow}; -use js::jsapi::{JS_SetReservedSlot, JS_StringHasLatin1Chars, MutableHandleValue}; -use js::jsapi::{ObjectOpResult, OnNewGlobalHookOption}; -use js::jsval::{JSVal, ObjectValue, PrivateValue, UndefinedValue}; +use js::jsapi::{JS_StringHasLatin1Chars, MutableHandleValue, ObjectOpResult}; +use js::jsval::{JSVal, ObjectValue, UndefinedValue}; use js::rust::{GCMethods, ToString}; use libc; -use std::default::Default; use std::ffi::CString; use std::os::raw::c_void; use std::ptr; @@ -296,43 +293,6 @@ pub fn has_property_on_prototype(cx: *mut JSContext, proxy: HandleObject, id: Ha }) || found } -/// Create a DOM global object with the given class. -pub fn create_dom_global(cx: *mut JSContext, - class: *const JSClass, - private: *const libc::c_void, - trace: JSTraceOp) - -> *mut JSObject { - unsafe { - let mut options = CompartmentOptions::default(); - options.behaviors_.version_ = JSVersion::JSVERSION_ECMA_5; - options.creationOptions_.traceGlobal_ = trace; - options.creationOptions_.sharedMemoryAndAtomics_ = true; - - rooted!(in(cx) let obj = - JS_NewGlobalObject(cx, - class, - ptr::null_mut(), - OnNewGlobalHookOption::DontFireOnNewGlobalHook, - &options)); - if obj.is_null() { - return ptr::null_mut(); - } - - // Initialize the reserved slots before doing amything that can GC, to - // avoid getting trace hooks called on a partially initialized object. - JS_SetReservedSlot(obj.get(), DOM_OBJECT_SLOT, PrivateValue(private)); - let proto_array: Box<ProtoOrIfaceArray> = - box [0 as *mut JSObject; PROTO_OR_IFACE_LENGTH]; - JS_SetReservedSlot(obj.get(), - DOM_PROTOTYPE_SLOT, - PrivateValue(Box::into_raw(proto_array) as *const libc::c_void)); - - let _ac = JSAutoCompartment::new(cx, obj.get()); - JS_FireOnNewGlobalObject(cx, obj.handle()); - obj.get() - } -} - /// Drop the resources held by reserved slots of a global object pub unsafe fn finalize_global(obj: *mut JSObject) { let protolist = get_proto_or_iface_array(obj); |