diff options
Diffstat (limited to 'components/script/dom/promise.rs')
-rw-r--r-- | components/script/dom/promise.rs | 18 |
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 { |