diff options
Diffstat (limited to 'components/script/dom/bindings/interface.rs')
-rw-r--r-- | components/script/dom/bindings/interface.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index 82303f800ba..e982a001fb0 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -11,6 +11,7 @@ use crate::dom::bindings::conversions::{get_dom_class, DOM_OBJECT_SLOT}; use crate::dom::bindings::guard::Guard; use crate::dom::bindings::utils::{ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT}; use crate::script_runtime::JSContext as SafeJSContext; +use dom::window::Window; use js::error::throw_type_error; use js::glue::UncheckedUnwrapObject; use js::jsapi::GetWellKnownSymbol; @@ -36,6 +37,8 @@ use js::rust::wrappers::{JS_DefineProperty3, JS_DefineProperty4, JS_DefineProper use js::rust::wrappers::{JS_LinkConstructorAndPrototype, JS_NewObjectWithGivenProto}; use js::rust::{define_methods, define_properties, get_object_class}; use js::rust::{HandleObject, HandleValue, MutableHandleObject, RealmOptions}; +use libc; +use servo_url::MutableOrigin; use std::convert::TryFrom; use std::ptr; @@ -136,6 +139,7 @@ pub unsafe fn create_global_object( private: *const libc::c_void, trace: TraceHook, mut rval: MutableHandleObject, + origin: &MutableOrigin, ) { assert!(rval.is_null()); @@ -145,10 +149,14 @@ pub unsafe fn create_global_object( options.creationOptions_.streams_ = true; select_compartment(cx, &mut options); + let origin = Box::new(origin.clone()); + let mut principal = + CreateRustJSPrincipal(Box::into_raw(origin) as *const ::libc::c_void, None, None); + rval.set(JS_NewGlobalObject( *cx, class, - ptr::null_mut(), + principal, OnNewGlobalHookOption::DontFireOnNewGlobalHook, &*options, )); |