Add InRealm argument to Callback trait

This commit is contained in:
Tipowol 2020-04-05 19:54:30 +02:00
parent ae49473c25
commit 8a3bf880e9
4 changed files with 34 additions and 24 deletions

View file

@ -6,13 +6,14 @@ use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::trace::JSTraceable;
use crate::dom::globalscope::GlobalScope;
use crate::realms::InRealm;
use dom_struct::dom_struct;
use js::jsapi::JSContext;
use js::rust::HandleValue;
use malloc_size_of::MallocSizeOf;
pub trait Callback: JSTraceable + MallocSizeOf {
fn callback(&self, cx: *mut JSContext, v: HandleValue);
fn callback(&self, cx: *mut JSContext, v: HandleValue, realm: InRealm);
}
#[dom_struct]
@ -38,17 +39,22 @@ impl PromiseNativeHandler {
)
}
fn callback(callback: &Option<Box<dyn Callback>>, cx: *mut JSContext, v: HandleValue) {
fn callback(
callback: &Option<Box<dyn Callback>>,
cx: *mut JSContext,
v: HandleValue,
realm: InRealm,
) {
if let Some(ref callback) = *callback {
callback.callback(cx, v)
callback.callback(cx, v, realm)
}
}
pub fn resolved_callback(&self, cx: *mut JSContext, v: HandleValue) {
PromiseNativeHandler::callback(&self.resolve, cx, v)
pub fn resolved_callback(&self, cx: *mut JSContext, v: HandleValue, realm: InRealm) {
PromiseNativeHandler::callback(&self.resolve, cx, v, realm)
}
pub fn rejected_callback(&self, cx: *mut JSContext, v: HandleValue) {
PromiseNativeHandler::callback(&self.reject, cx, v)
pub fn rejected_callback(&self, cx: *mut JSContext, v: HandleValue, realm: InRealm) {
PromiseNativeHandler::callback(&self.reject, cx, v, realm)
}
}