Auto merge of #11511 - Ms2ger:jsurl-crash, r=nox

Add a missing JSAutoCompartment to javascript url handling.

- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes OR

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11511)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-05-30 09:58:39 -05:00
commit 3eb9403b4d
2 changed files with 7 additions and 2 deletions

View file

@ -30,6 +30,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootCollection}; use dom::bindings::js::{JS, MutNullableHeap, Root, RootCollection};
use dom::bindings::js::{RootCollectionPtr, RootedReference}; use dom::bindings::js::{RootCollectionPtr, RootedReference};
use dom::bindings::refcounted::{LiveDOMReferences, Trusted}; use dom::bindings::refcounted::{LiveDOMReferences, Trusted};
use dom::bindings::reflector::Reflectable;
use dom::bindings::str::DOMString; use dom::bindings::str::DOMString;
use dom::bindings::trace::JSTraceable; use dom::bindings::trace::JSTraceable;
use dom::bindings::utils::WRAP_CALLBACKS; use dom::bindings::utils::WRAP_CALLBACKS;
@ -54,7 +55,8 @@ use ipc_channel::ipc::{self, IpcSender};
use ipc_channel::router::ROUTER; use ipc_channel::router::ROUTER;
use js::glue::GetWindowProxyClass; use js::glue::GetWindowProxyClass;
use js::jsapi::{DOMProxyShadowsResult, HandleId, HandleObject, RootedValue}; use js::jsapi::{DOMProxyShadowsResult, HandleId, HandleObject, RootedValue};
use js::jsapi::{JSContext, JS_SetWrapObjectCallbacks, JSTracer, SetWindowProxyClass}; use js::jsapi::{JSAutoCompartment, JSContext, JS_SetWrapObjectCallbacks};
use js::jsapi::{JSTracer, SetWindowProxyClass};
use js::jsval::UndefinedValue; use js::jsval::UndefinedValue;
use js::rust::Runtime; use js::rust::Runtime;
use layout_interface::{self, NewLayoutThreadInfo, ReflowQueryType}; use layout_interface::{self, NewLayoutThreadInfo, ReflowQueryType};
@ -1599,6 +1601,7 @@ impl ScriptThread {
// Script source is ready to be evaluated (11.) // Script source is ready to be evaluated (11.)
unsafe { unsafe {
let _ac = JSAutoCompartment::new(self.get_cx(), window.reflector().get_jsobject().get());
let mut jsval = RootedValue::new(self.get_cx(), UndefinedValue()); let mut jsval = RootedValue::new(self.get_cx(), UndefinedValue());
window.evaluate_js_on_global_with_result(&script_source, jsval.handle_mut()); window.evaluate_js_on_global_with_result(&script_source, jsval.handle_mut());
let strval = DOMString::from_jsval(self.get_cx(), let strval = DOMString::from_jsval(self.get_cx(),

View file

@ -1,3 +1,5 @@
[javascript-url-return-value-handling.html] [javascript-url-return-value-handling.html]
type: testharness type: testharness
expected: CRASH [Test that javascript: evaluation only performs a navigation to the\n result when the result is a string value.]
expected: FAIL