aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/utils.rs
diff options
context:
space:
mode:
authorddh <dianehosfelt@gmail.com>2017-05-09 14:27:12 +0100
committerddh <dianehosfelt@gmail.com>2017-05-09 14:27:12 +0100
commit3acac9d8e09518b9d8cb0a2ff674717b8b83e952 (patch)
treecded8be5d0af821ca3a36fb9a1382614da834681 /components/script/dom/bindings/utils.rs
parentaa7b4f61622e7d96cca29e5c8680dc7b1af31353 (diff)
downloadservo-3acac9d8e09518b9d8cb0a2ff674717b8b83e952.tar.gz
servo-3acac9d8e09518b9d8cb0a2ff674717b8b83e952.zip
investigating failures after filtering wrapper integration with mozjs
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r--components/script/dom/bindings/utils.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index 8d89325641a..72ee79a8da0 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -17,7 +17,7 @@ use heapsize::HeapSizeOf;
use js;
use js::JS_CALLEE;
use js::glue::{CallJitGetterOp, CallJitMethodOp, CallJitSetterOp, IsWrapper};
-use js::glue::{GetCrossCompartmentWrapper, GetSecurityWrapper, WrapperNew};
+use js::glue::{GetCrossCompartmentWrapper, CreateCrossOriginWrapper, GetSecurityWrapper, GetOpaqueWrapper, WrapperNew};
use js::glue::{GetPrincipalOrigin, CreateWrapperProxyHandler, UncheckedUnwrapObject};
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};
@@ -85,6 +85,7 @@ unsafe fn identify_cross_origin_object(obj: HandleObject) -> CrossOriginObjectTy
let obj = UncheckedUnwrapObject(obj.get(), /* stopAtWindowProxy = */ 0);
let obj_class = JS_GetClass(obj);
let name = str::from_utf8(CStr::from_ptr((*obj_class).name).to_bytes()).unwrap().to_owned();
+ println!("{}, {:?}", name, obj);
match &*name {
"Location" => CrossOriginObjectType::CrossOriginLocation,
"Window" => CrossOriginObjectType::CrossOriginWindow,
@@ -119,12 +120,13 @@ unsafe fn target_subsumes_obj(cx: *mut JSContext, obj: HandleObject) -> bool {
//TODO check what type of wrapper we should use to disallow any access
unsafe fn get_opaque_wrapper() -> *const ::libc::c_void {
- GetSecurityWrapper()
+ //GetSecurityWrapper()
+ GetOpaqueWrapper()
}
// FIXME use an actual XOW
unsafe fn get_cross_origin_wrapper() -> *const ::libc::c_void {
- GetSecurityWrapper()
+ CreateCrossOriginWrapper()
}
//TODO is same_origin_domain equivalent to subsumes for our purposes
@@ -139,13 +141,16 @@ pub unsafe extern fn subsumes(obj: *mut JSPrincipals, other: *mut JSPrincipals)
unsafe fn select_wrapper(cx: *mut JSContext, obj: HandleObject) -> *const libc::c_void {
let security_wrapper = !target_subsumes_obj(cx, obj);
if !security_wrapper {
+ println!("CCW");
return GetCrossCompartmentWrapper()
};
if identify_cross_origin_object(obj) != CrossOriginObjectType::CrossOriginOpaque {
+ println!("XOW");
return get_cross_origin_wrapper()
};
+ println!("Opaque");
get_opaque_wrapper()
}