aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/promise.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/promise.rs')
-rw-r--r--components/script/dom/promise.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs
index 7c98ddbd2ad..38e5a9112ac 100644
--- a/components/script/dom/promise.rs
+++ b/components/script/dom/promise.rs
@@ -52,6 +52,12 @@ pub struct Promise {
permanent_js_root: Heap<JSVal>,
}
+impl PartialEq for Promise {
+ fn eq(&self, other: &Self) -> bool {
+ self.reflector == other.reflector
+ }
+}
+
/// Private helper to enable adding new methods to `Rc<Promise>`.
trait PromiseHelper {
fn initialize(&self, cx: SafeJSContext);
@@ -232,6 +238,18 @@ impl Promise {
}
#[allow(unsafe_code)]
+ pub fn is_rejected(&self) -> bool {
+ let state = unsafe { GetPromiseState(self.promise_obj()) };
+ matches!(state, PromiseState::Rejected)
+ }
+
+ #[allow(unsafe_code)]
+ pub fn is_pending(&self) -> bool {
+ let state = unsafe { GetPromiseState(self.promise_obj()) };
+ matches!(state, PromiseState::Pending)
+ }
+
+ #[allow(unsafe_code)]
pub fn promise_obj(&self) -> HandleObject {
let obj = self.reflector().get_jsobject();
unsafe {