diff --git a/components/script/dom/customelementregistry.rs b/components/script/dom/customelementregistry.rs index 74df800bba5..b4ad9365f4f 100644 --- a/components/script/dom/customelementregistry.rs +++ b/components/script/dom/customelementregistry.rs @@ -343,7 +343,7 @@ impl CustomElementRegistryMethods for CustomElementRegistry { // Step 1 if !is_valid_custom_element_name(&name) { let promise = Promise::new(global_scope); - promise.reject_native(global_scope.get_cx(), &DOMException::new(global_scope, DOMErrorName::SyntaxError)); + promise.reject_native(&DOMException::new(global_scope, DOMErrorName::SyntaxError)); return promise } diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index a0ad29753ba..9ba110456c8 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -162,7 +162,9 @@ impl Promise { } #[allow(unsafe_code)] - pub fn reject_native(&self, cx: *mut JSContext, val: &T) where T: ToJSValConvertible { + pub fn reject_native(&self, val: &T) where T: ToJSValConvertible { + let cx = self.global().get_cx(); + let _ac = JSAutoCompartment::new(cx, self.reflector().get_jsobject().get()); rooted!(in(cx) let mut v = UndefinedValue()); unsafe { val.to_jsval(cx, v.handle_mut()); diff --git a/components/script/dom/vr.rs b/components/script/dom/vr.rs index 651c85c8f6f..226979d0888 100644 --- a/components/script/dom/vr.rs +++ b/components/script/dom/vr.rs @@ -73,7 +73,7 @@ impl VRMethods for VR { } }, Err(e) => { - promise.reject_native(promise.global().get_cx(), &e); + promise.reject_native(&e); return promise; } } diff --git a/components/script/dom/vrdisplay.rs b/components/script/dom/vrdisplay.rs index de488f0c5e2..97e126db4ed 100644 --- a/components/script/dom/vrdisplay.rs +++ b/components/script/dom/vrdisplay.rs @@ -284,7 +284,7 @@ impl VRDisplayMethods for VRDisplay { // WebVR spec: If canPresent is false the promise MUST be rejected if !self.display.borrow().capabilities.can_present { let msg = "VRDisplay canPresent is false".to_string(); - promise.reject_native(promise.global().get_cx(), &msg); + promise.reject_native(&msg); return promise; } @@ -294,7 +294,7 @@ impl VRDisplayMethods for VRDisplay { // That functionality is not allowed by this revision of the spec. if layers.len() != 1 { let msg = "The number of layers must be 1".to_string(); - promise.reject_native(promise.global().get_cx(), &msg); + promise.reject_native(&msg); return promise; } @@ -311,7 +311,7 @@ impl VRDisplayMethods for VRDisplay { }, Err(msg) => { let msg = msg.to_string(); - promise.reject_native(promise.global().get_cx(), &msg); + promise.reject_native(&msg); return promise; } }; @@ -338,7 +338,7 @@ impl VRDisplayMethods for VRDisplay { promise.resolve_native(&()); }, Err(e) => { - promise.reject_native(promise.global().get_cx(), &e); + promise.reject_native(&e); } } @@ -353,7 +353,7 @@ impl VRDisplayMethods for VRDisplay { // WebVR spec: If the VRDisplay is not presenting the promise MUST be rejected. if !self.presenting.get() { let msg = "VRDisplay is not presenting".to_string(); - promise.reject_native(promise.global().get_cx(), &msg); + promise.reject_native(&msg); return promise; } @@ -369,7 +369,7 @@ impl VRDisplayMethods for VRDisplay { promise.resolve_native(&()); }, Err(e) => { - promise.reject_native(promise.global().get_cx(), &e); + promise.reject_native(&e); } }