diff options
author | ddh <dianehosfelt@gmail.com> | 2017-05-09 14:27:12 +0100 |
---|---|---|
committer | ddh <dianehosfelt@gmail.com> | 2017-05-09 14:27:12 +0100 |
commit | 3acac9d8e09518b9d8cb0a2ff674717b8b83e952 (patch) | |
tree | cded8be5d0af821ca3a36fb9a1382614da834681 /components/script/dom/bindings/utils.rs | |
parent | aa7b4f61622e7d96cca29e5c8680dc7b1af31353 (diff) | |
download | servo-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.rs | 11 |
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() } |