mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Make Promise::Reject and Resolve take a &GlobalScope
This commit is contained in:
parent
26455b8a67
commit
02d38e74e9
4 changed files with 12 additions and 11 deletions
|
@ -817,16 +817,16 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
||||||
{ // Scope for our JSAutoCompartment.
|
{ // Scope for our JSAutoCompartment.
|
||||||
|
|
||||||
rooted!(in(cx) let globalObj = CurrentGlobalOrNull(cx));
|
rooted!(in(cx) let globalObj = CurrentGlobalOrNull(cx));
|
||||||
let promiseGlobal = global_root_from_object_maybe_wrapped(globalObj.handle().get());
|
let promiseGlobal = global_scope_from_object_maybe_wrapped(globalObj.handle().get());
|
||||||
|
|
||||||
rooted!(in(cx) let mut valueToResolve = $${val}.get());
|
rooted!(in(cx) let mut valueToResolve = $${val}.get());
|
||||||
if !JS_WrapValue(cx, valueToResolve.handle_mut()) {
|
if !JS_WrapValue(cx, valueToResolve.handle_mut()) {
|
||||||
$*{exceptionCode}
|
$*{exceptionCode}
|
||||||
}
|
}
|
||||||
match Promise::Resolve(promiseGlobal.r(), cx, valueToResolve.handle()) {
|
match Promise::Resolve(&promiseGlobal, cx, valueToResolve.handle()) {
|
||||||
Ok(value) => value,
|
Ok(value) => value,
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
throw_dom_exception(cx, promiseGlobal.r().as_global_scope(), error);
|
throw_dom_exception(cx, &promiseGlobal, error);
|
||||||
$*{exceptionCode}
|
$*{exceptionCode}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5501,7 +5501,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
|
||||||
'dom::bindings::constant::ConstantVal',
|
'dom::bindings::constant::ConstantVal',
|
||||||
'dom::bindings::global::GlobalRef',
|
'dom::bindings::global::GlobalRef',
|
||||||
'dom::bindings::global::global_root_from_object',
|
'dom::bindings::global::global_root_from_object',
|
||||||
'dom::bindings::global::global_root_from_object_maybe_wrapped',
|
'dom::bindings::global::global_scope_from_object_maybe_wrapped',
|
||||||
'dom::bindings::global::global_scope_from_reflector',
|
'dom::bindings::global::global_scope_from_reflector',
|
||||||
'dom::bindings::interface::ConstructorClassHook',
|
'dom::bindings::interface::ConstructorClassHook',
|
||||||
'dom::bindings::interface::InterfaceConstructorBehavior',
|
'dom::bindings::interface::InterfaceConstructorBehavior',
|
||||||
|
|
|
@ -163,10 +163,12 @@ pub unsafe fn global_root_from_context(cx: *mut JSContext) -> GlobalRoot {
|
||||||
|
|
||||||
/// Returns the global object of the realm that the given JS object was created in,
|
/// Returns the global object of the realm that the given JS object was created in,
|
||||||
/// after unwrapping any wrappers.
|
/// after unwrapping any wrappers.
|
||||||
pub unsafe fn global_root_from_object_maybe_wrapped(mut obj: *mut JSObject) -> GlobalRoot {
|
pub unsafe fn global_scope_from_object_maybe_wrapped(
|
||||||
|
mut obj: *mut JSObject)
|
||||||
|
-> Root<GlobalScope> {
|
||||||
if IsWrapper(obj) {
|
if IsWrapper(obj) {
|
||||||
obj = UnwrapObject(obj, /* stopAtWindowProxy = */ 0);
|
obj = UnwrapObject(obj, /* stopAtWindowProxy = */ 0);
|
||||||
assert!(!obj.is_null());
|
assert!(!obj.is_null());
|
||||||
}
|
}
|
||||||
global_root_from_object(obj)
|
global_scope_from_object(obj)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ use dom::bindings::callback::CallbackContainer;
|
||||||
use dom::bindings::codegen::Bindings::PromiseBinding::AnyCallback;
|
use dom::bindings::codegen::Bindings::PromiseBinding::AnyCallback;
|
||||||
use dom::bindings::conversions::root_from_object;
|
use dom::bindings::conversions::root_from_object;
|
||||||
use dom::bindings::error::{Error, Fallible};
|
use dom::bindings::error::{Error, Fallible};
|
||||||
use dom::bindings::global::GlobalRef;
|
|
||||||
use dom::bindings::js::MutHeapJSVal;
|
use dom::bindings::js::MutHeapJSVal;
|
||||||
use dom::bindings::reflector::{Reflectable, MutReflectable, Reflector};
|
use dom::bindings::reflector::{Reflectable, MutReflectable, Reflector};
|
||||||
use dom::globalscope::GlobalScope;
|
use dom::globalscope::GlobalScope;
|
||||||
|
@ -113,7 +112,7 @@ impl Promise {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unrooted_must_root, unsafe_code)]
|
#[allow(unrooted_must_root, unsafe_code)]
|
||||||
pub fn Resolve(global: GlobalRef,
|
pub fn Resolve(global: &GlobalScope,
|
||||||
cx: *mut JSContext,
|
cx: *mut JSContext,
|
||||||
value: HandleValue) -> Fallible<Rc<Promise>> {
|
value: HandleValue) -> Fallible<Rc<Promise>> {
|
||||||
let _ac = JSAutoCompartment::new(cx, global.reflector().get_jsobject().get());
|
let _ac = JSAutoCompartment::new(cx, global.reflector().get_jsobject().get());
|
||||||
|
@ -125,7 +124,7 @@ impl Promise {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unrooted_must_root, unsafe_code)]
|
#[allow(unrooted_must_root, unsafe_code)]
|
||||||
pub fn Reject(global: GlobalRef,
|
pub fn Reject(global: &GlobalScope,
|
||||||
cx: *mut JSContext,
|
cx: *mut JSContext,
|
||||||
value: HandleValue) -> Fallible<Rc<Promise>> {
|
value: HandleValue) -> Fallible<Rc<Promise>> {
|
||||||
let _ac = JSAutoCompartment::new(cx, global.reflector().get_jsobject().get());
|
let _ac = JSAutoCompartment::new(cx, global.reflector().get_jsobject().get());
|
||||||
|
|
|
@ -656,12 +656,12 @@ impl TestBindingMethods for TestBinding {
|
||||||
|
|
||||||
#[allow(unrooted_must_root)]
|
#[allow(unrooted_must_root)]
|
||||||
fn ReturnResolvedPromise(&self, cx: *mut JSContext, v: HandleValue) -> Fallible<Rc<Promise>> {
|
fn ReturnResolvedPromise(&self, cx: *mut JSContext, v: HandleValue) -> Fallible<Rc<Promise>> {
|
||||||
Promise::Resolve(self.global().r(), cx, v)
|
Promise::Resolve(&self.global_scope(), cx, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unrooted_must_root)]
|
#[allow(unrooted_must_root)]
|
||||||
fn ReturnRejectedPromise(&self, cx: *mut JSContext, v: HandleValue) -> Fallible<Rc<Promise>> {
|
fn ReturnRejectedPromise(&self, cx: *mut JSContext, v: HandleValue) -> Fallible<Rc<Promise>> {
|
||||||
Promise::Reject(self.global().r(), cx, v)
|
Promise::Reject(&self.global_scope(), cx, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn PromiseResolveNative(&self, cx: *mut JSContext, p: &Promise, v: HandleValue) {
|
fn PromiseResolveNative(&self, cx: *mut JSContext, p: &Promise, v: HandleValue) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue