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.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs
index 81149f8e193..0afcfcba266 100644
--- a/components/script/dom/promise.rs
+++ b/components/script/dom/promise.rs
@@ -23,8 +23,8 @@ use js::conversions::ToJSValConvertible;
use js::jsapi::{CallOriginalPromiseResolve, CallOriginalPromiseReject, CallOriginalPromiseThen};
use js::jsapi::{JSAutoCompartment, CallArgs, JS_GetFunctionObject, JS_NewFunction};
use js::jsapi::{JSContext, HandleValue, HandleObject, IsPromiseObject, GetFunctionNativeReserved};
-use js::jsapi::{JS_ClearPendingException, JSObject, AddRawValueRoot, RemoveRawValueRoot};
-use js::jsapi::{MutableHandleObject, NewPromiseObject, ResolvePromise, RejectPromise};
+use js::jsapi::{JS_ClearPendingException, JSObject, AddRawValueRoot, RemoveRawValueRoot, PromiseState};
+use js::jsapi::{MutableHandleObject, NewPromiseObject, ResolvePromise, RejectPromise, GetPromiseState};
use js::jsapi::{SetFunctionNativeReserved, NewFunctionWithReserved, AddPromiseReactions};
use js::jsval::{JSVal, UndefinedValue, ObjectValue, Int32Value};
use std::ptr;
@@ -200,6 +200,15 @@ impl Promise {
}
#[allow(unsafe_code)]
+ pub fn is_settled(&self) -> bool {
+ let state = unsafe { GetPromiseState(self.promise_obj()) };
+ match state {
+ PromiseState::Rejected | PromiseState::Fulfilled => true,
+ _ => false
+ }
+ }
+
+ #[allow(unsafe_code)]
fn promise_obj(&self) -> HandleObject {
let obj = self.reflector().get_jsobject();
unsafe {