From 3d94f32cfc5d14d4f349e5b757be18ff6f2a9150 Mon Sep 17 00:00:00 2001 From: Domenico Rizzo Date: Wed, 18 Dec 2024 04:10:48 +0100 Subject: [PATCH] modified Promise::new_resolved/new_rejected signature (#34658) added rooted undefined value initialization for rval removed unused import Signed-off-by: Domenico Rizzo --- components/script/dom/promise.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index b58caf9e825..f4098ad3d0e 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -150,24 +150,32 @@ impl Promise { pub fn new_resolved( global: &GlobalScope, cx: SafeJSContext, - value: HandleValue, + value: impl ToJSValConvertible, ) -> Fallible> { let _ac = JSAutoRealm::new(*cx, global.reflector().get_jsobject().get()); - rooted!(in(*cx) let p = unsafe { CallOriginalPromiseResolve(*cx, value) }); - assert!(!p.handle().is_null()); - Ok(Promise::new_with_js_promise(p.handle(), cx)) + unsafe { + rooted!(in(*cx) let mut rval = UndefinedValue()); + value.to_jsval(*cx, rval.handle_mut()); + rooted!(in(*cx) let p = CallOriginalPromiseResolve(*cx, rval.handle())); + assert!(!p.handle().is_null()); + Ok(Promise::new_with_js_promise(p.handle(), cx)) + } } #[allow(crown::unrooted_must_root, unsafe_code)] pub fn new_rejected( global: &GlobalScope, cx: SafeJSContext, - value: HandleValue, + value: impl ToJSValConvertible, ) -> Fallible> { let _ac = JSAutoRealm::new(*cx, global.reflector().get_jsobject().get()); - rooted!(in(*cx) let p = unsafe { CallOriginalPromiseReject(*cx, value) }); - assert!(!p.handle().is_null()); - Ok(Promise::new_with_js_promise(p.handle(), cx)) + unsafe { + rooted!(in(*cx) let mut rval = UndefinedValue()); + value.to_jsval(*cx, rval.handle_mut()); + rooted!(in(*cx) let p = CallOriginalPromiseReject(*cx, rval.handle())); + assert!(!p.handle().is_null()); + Ok(Promise::new_with_js_promise(p.handle(), cx)) + } } #[allow(unsafe_code)]