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