aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/interface.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/bindings/interface.rs')
-rw-r--r--components/script/dom/bindings/interface.rs10
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,
));