From d79660e989eb445ac0378ac8aa20727d723dfdfa Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 9 Feb 2016 16:35:38 +0100 Subject: [PATCH] Give WindowProxy objects an innerObject hook. This ensures that UncheckedUnwrap(obj, /* stopAtOuter = */ true) will indeed stop at the WindowProxy ("outer window", in older SpiderMonkey jargon), which is necessary to prevent raw Window ("inner window") objects becoming visible to JavaScript code, or tripping assertions that we don't do that. --- components/script/dom/browsingcontext.rs | 8 ++------ components/servo/Cargo.lock | 2 +- ports/cef/Cargo.lock | 2 +- ports/gonk/Cargo.lock | 2 +- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/components/script/dom/browsingcontext.rs b/components/script/dom/browsingcontext.rs index b63fbaa6fc5..d9b75153a1f 100644 --- a/components/script/dom/browsingcontext.rs +++ b/components/script/dom/browsingcontext.rs @@ -12,7 +12,7 @@ use dom::document::Document; use dom::element::Element; use dom::window::Window; use js::JSCLASS_IS_GLOBAL; -use js::glue::{CreateWrapperProxyHandler, ProxyTraps, WrapperNew}; +use js::glue::{CreateWrapperProxyHandler, ProxyTraps, NewWindowProxy}; use js::glue::{GetProxyPrivate, SetProxyExtra}; use js::jsapi::{Handle, JS_ForwardSetPropertyTo, ObjectOpResult, RootedObject, RootedValue}; use js::jsapi::{HandleId, HandleObject, MutableHandle, MutableHandleValue}; @@ -56,11 +56,7 @@ impl BrowsingContext { assert!(((*JS_GetClass(parent.get())).flags & JSCLASS_IS_GLOBAL) != 0); let _ac = JSAutoCompartment::new(cx, parent.get()); let window_proxy = RootedObject::new(cx, - WrapperNew(cx, - parent, - handler, - ptr::null(), - true)); + NewWindowProxy(cx, parent, handler)); assert!(!window_proxy.ptr.is_null()); let object = box BrowsingContext::new_inherited(document, frame_element); diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 9e06a30a581..ea50fcb800a 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -928,7 +928,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.1" -source = "git+https://github.com/servo/rust-mozjs#b96675b217534c7742cbfda8150ea0536aedbdfb" +source = "git+https://github.com/servo/rust-mozjs#6b53c4937b67dc71414d37dd3f4ad5cf407b2c2b" dependencies = [ "heapsize 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 74345761087..a98fd38aae4 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -859,7 +859,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.1" -source = "git+https://github.com/servo/rust-mozjs#b96675b217534c7742cbfda8150ea0536aedbdfb" +source = "git+https://github.com/servo/rust-mozjs#6b53c4937b67dc71414d37dd3f4ad5cf407b2c2b" dependencies = [ "heapsize 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index ae03a327090..1f9299b58ca 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -841,7 +841,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.1" -source = "git+https://github.com/servo/rust-mozjs#b96675b217534c7742cbfda8150ea0536aedbdfb" +source = "git+https://github.com/servo/rust-mozjs#6b53c4937b67dc71414d37dd3f4ad5cf407b2c2b" dependencies = [ "heapsize 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",