/work/obj-fuzz/dist/include/mozilla/dom/Promise.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
5 | | * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef mozilla_dom_Promise_h |
8 | | #define mozilla_dom_Promise_h |
9 | | |
10 | | #include "mozilla/Attributes.h" |
11 | | #include "mozilla/ErrorResult.h" |
12 | | #include "mozilla/Move.h" |
13 | | #include "mozilla/TimeStamp.h" |
14 | | #include "mozilla/TypeTraits.h" |
15 | | #include "mozilla/dom/BindingDeclarations.h" |
16 | | #include "nsCycleCollectionParticipant.h" |
17 | | #include "mozilla/dom/PromiseBinding.h" |
18 | | #include "mozilla/dom/ToJSValue.h" |
19 | | #include "mozilla/WeakPtr.h" |
20 | | #include "nsWrapperCache.h" |
21 | | #include "nsAutoPtr.h" |
22 | | #include "js/TypeDecls.h" |
23 | | #include "jspubtd.h" |
24 | | |
25 | | class nsIGlobalObject; |
26 | | |
27 | | namespace mozilla { |
28 | | |
29 | | namespace dom { |
30 | | |
31 | | class AnyCallback; |
32 | | class MediaStreamError; |
33 | | class PromiseInit; |
34 | | class PromiseNativeHandler; |
35 | | class PromiseDebugging; |
36 | | |
37 | | #define NS_PROMISE_IID \ |
38 | | { 0x1b8d6215, 0x3e67, 0x43ba, \ |
39 | | { 0x8a, 0xf9, 0x31, 0x5e, 0x8f, 0xce, 0x75, 0x65 } } |
40 | | |
41 | | class Promise : public nsISupports, |
42 | | public SupportsWeakPtr<Promise> |
43 | | { |
44 | | friend class PromiseTask; |
45 | | friend class PromiseWorkerProxy; |
46 | | friend class PromiseWorkerProxyRunnable; |
47 | | |
48 | | public: |
49 | | NS_DECLARE_STATIC_IID_ACCESSOR(NS_PROMISE_IID) |
50 | | NS_DECL_CYCLE_COLLECTING_ISUPPORTS_FINAL |
51 | | NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Promise) |
52 | | MOZ_DECLARE_WEAKREFERENCE_TYPENAME(Promise) |
53 | | |
54 | | // Promise creation tries to create a JS reflector for the Promise, so is |
55 | | // fallible. Furthermore, we don't want to do JS-wrapping on a 0-refcount |
56 | | // object, so we addref before doing that and return the addrefed pointer |
57 | | // here. |
58 | | static already_AddRefed<Promise> |
59 | | Create(nsIGlobalObject* aGlobal, ErrorResult& aRv); |
60 | | |
61 | | // Reports a rejected Promise by sending an error report. |
62 | | static void ReportRejectedPromise(JSContext* aCx, JS::HandleObject aPromise); |
63 | | |
64 | | typedef void (Promise::*MaybeFunc)(JSContext* aCx, |
65 | | JS::Handle<JS::Value> aValue); |
66 | | |
67 | | void MaybeResolve(JSContext* aCx, |
68 | | JS::Handle<JS::Value> aValue); |
69 | | void MaybeReject(JSContext* aCx, |
70 | | JS::Handle<JS::Value> aValue); |
71 | | |
72 | | // Helpers for using Promise from C++. |
73 | | // Most DOM objects are handled already. To add a new type T, add a |
74 | | // ToJSValue overload in ToJSValue.h. |
75 | | // aArg is a const reference so we can pass rvalues like integer constants |
76 | | template <typename T> |
77 | 0 | void MaybeResolve(T&& aArg) { |
78 | 0 | MaybeSomething(std::forward<T>(aArg), &Promise::MaybeResolve); |
79 | 0 | } Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<FallibleTArray<mozilla::dom::IOActivityDataDictionary>&>(FallibleTArray<mozilla::dom::IOActivityDataDictionary>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<JS::Handle<JS::Value>&>(JS::Handle<JS::Value>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PrecompiledScript>&>(RefPtr<mozilla::dom::PrecompiledScript>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<nsTString<char16_t> >&>(nsTArray<nsTString<char16_t> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::VRMockDisplay>&>(RefPtr<mozilla::dom::VRMockDisplay>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::VRMockController*>(mozilla::dom::VRMockController*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<bool>(bool&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::Animation*>(mozilla::dom::Animation*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<JS::Rooted<JS::Value>&>(JS::Rooted<JS::Value>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<JS::Handle<JS::Value> const&>(JS::Handle<JS::Value> const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<JS::Heap<JS::Value>&>(JS::Heap<JS::Value>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::battery::BatteryManager>&>(RefPtr<mozilla::dom::battery::BatteryManager>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<RefPtr<mozilla::dom::VRDisplay> >&>(nsTArray<RefPtr<mozilla::dom::VRDisplay> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<JS::Rooted<JSObject*>&>(JS::Rooted<JSObject*>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsIDocument*>(nsIDocument*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Promise>&>(RefPtr<mozilla::dom::Promise>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<bool const&>(bool const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::cache::Cache>&>(RefPtr<mozilla::dom::cache::Cache>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<nsTString<char16_t> > const&>(nsTArray<nsTString<char16_t> > const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Response>&>(RefPtr<mozilla::dom::Response>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<AutoTArray<RefPtr<mozilla::dom::Response>, 256ul>&>(AutoTArray<RefPtr<mozilla::dom::Response>, 256ul>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<AutoTArray<RefPtr<mozilla::dom::Request>, 256ul>&>(AutoTArray<RefPtr<mozilla::dom::Request>, 256ul>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Blob>&>(RefPtr<mozilla::dom::Blob>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::ImageBitmap>&>(RefPtr<mozilla::dom::ImageBitmap>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<mozilla::dom::ChannelPixelLayout>&>(nsTArray<mozilla::dom::ChannelPixelLayout>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Client>&>(RefPtr<mozilla::dom::Client>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Client> >(RefPtr<mozilla::dom::Client>&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<RefPtr<mozilla::dom::Client> >&>(nsTArray<RefPtr<mozilla::dom::Client> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::TypedArrayCreator<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >&>(mozilla::dom::TypedArrayCreator<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<bool&>(bool&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::CryptoKey>&>(RefPtr<mozilla::dom::CryptoKey>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::JsonWebKey&>(mozilla::dom::JsonWebKey&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::CryptoKeyPair&>(mozilla::dom::CryptoKeyPair&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::DataTransfer> const&>(RefPtr<mozilla::dom::DataTransfer> const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTAutoStringN<char16_t, 64ul>&>(nsTAutoStringN<char16_t, 64ul>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::Sequence<RefPtr<mozilla::dom::File> >&>(mozilla::dom::Sequence<RefPtr<mozilla::dom::File> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::FormData>&>(RefPtr<mozilla::dom::FormData>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTString<char16_t>&>(nsTString<char16_t>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::File>&>(RefPtr<mozilla::dom::File>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<FallibleTArray<mozilla::dom::OwningFileOrDirectory>&>(FallibleTArray<mozilla::dom::OwningFileOrDirectory>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::Directory>&>(RefPtr<mozilla::dom::Directory>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<FallibleTArray<RefPtr<mozilla::dom::File> >&>(FallibleTArray<RefPtr<mozilla::dom::File> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<unsigned int const&>(unsigned int const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::Sequence<mozilla::dom::OwningFileOrDirectory>&>(mozilla::dom::Sequence<mozilla::dom::OwningFileOrDirectory>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTSubstringTuple<char16_t> const>(nsTSubstringTuple<char16_t> const&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTAutoStringN<char16_t, 64ul> const&>(nsTAutoStringN<char16_t, 64ul> const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<NS_ConvertUTF8toUTF16>(NS_ConvertUTF8toUTF16&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<int>(int&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<unsigned int&>(unsigned int&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::DOMMediaStream>&>(RefPtr<mozilla::DOMMediaStream>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<RefPtr<mozilla::dom::MediaDeviceInfo> >&>(nsTArray<RefPtr<mozilla::dom::MediaDeviceInfo> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::MediaKeySystemAccess>&>(RefPtr<mozilla::dom::MediaKeySystemAccess>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::MediaKeySession>&>(RefPtr<mozilla::dom::MediaKeySession>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::MediaKeys>&>(RefPtr<mozilla::dom::MediaKeys>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::MediaKeyStatus&>(mozilla::dom::MediaKeyStatus&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::UniquePtr<mozilla::dom::MediaCapabilitiesInfo, mozilla::DefaultDelete<mozilla::dom::MediaCapabilitiesInfo> > >(mozilla::UniquePtr<mozilla::dom::MediaCapabilitiesInfo, mozilla::DefaultDelete<mozilla::dom::MediaCapabilitiesInfo> >&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsresult const&>(nsresult const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::AudioBuffer*&>(mozilla::dom::AudioBuffer*&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::AudioBuffer>&>(RefPtr<mozilla::dom::AudioBuffer>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::RTCCertificate>&>(RefPtr<mozilla::dom::RTCCertificate>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::MIDIAccess*>(mozilla::dom::MIDIAccess*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::MIDIPort*>(mozilla::dom::MIDIPort*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<AutoTArray<RefPtr<mozilla::dom::Notification>, 5ul>&>(AutoTArray<RefPtr<mozilla::dom::Notification>, 5ul>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::NotificationPermission&>(mozilla::dom::NotificationPermission&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::PushPermissionState&>(mozilla::dom::PushPermissionState&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PushSubscription>&>(RefPtr<mozilla::dom::PushSubscription>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::StorageEstimate&>(mozilla::dom::StorageEstimate&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PermissionStatus>&>(RefPtr<mozilla::dom::PermissionStatus>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PublicKeyCredential>&>(RefPtr<mozilla::dom::PublicKeyCredential>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PaymentResponse>&>(RefPtr<mozilla::dom::PaymentResponse>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::ServiceWorkerRegistration>&>(RefPtr<mozilla::dom::ServiceWorkerRegistration>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<RefPtr<mozilla::dom::ServiceWorkerRegistration> >&>(nsTArray<RefPtr<mozilla::dom::ServiceWorkerRegistration> >&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::ServiceWorkerRegistration> const&>(RefPtr<mozilla::dom::ServiceWorkerRegistration> const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::PresentationAvailability*>(mozilla::dom::PresentationAvailability*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PresentationConnection>&>(RefPtr<mozilla::dom::PresentationConnection>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::PresentationConnectionList*>(mozilla::dom::PresentationConnectionList*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::dom::PresentationAvailability>&>(RefPtr<mozilla::dom::PresentationAvailability>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::FontFace*>(mozilla::dom::FontFace*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<mozilla::dom::FontFaceSet*>(mozilla::dom::FontFaceSet*&&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<RefPtr<mozilla::PreloadedStyleSheet>&>(RefPtr<mozilla::PreloadedStyleSheet>&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<nsTArray<unsigned char> const&>(nsTArray<unsigned char> const&) Unexecuted instantiation: void mozilla::dom::Promise::MaybeResolve<FallibleTArray<mozilla::dom::PerformanceInfoDictionary>&>(FallibleTArray<mozilla::dom::PerformanceInfoDictionary>&) |
80 | | |
81 | | void MaybeResolveWithUndefined(); |
82 | | |
83 | 0 | inline void MaybeReject(nsresult aArg) { |
84 | 0 | MOZ_ASSERT(NS_FAILED(aArg)); |
85 | 0 | MaybeSomething(aArg, &Promise::MaybeReject); |
86 | 0 | } |
87 | | |
88 | 0 | inline void MaybeReject(ErrorResult& aArg) { |
89 | 0 | MOZ_ASSERT(aArg.Failed()); |
90 | 0 | MaybeSomething(aArg, &Promise::MaybeReject); |
91 | 0 | } |
92 | | |
93 | | void MaybeReject(const RefPtr<MediaStreamError>& aArg); |
94 | | |
95 | | void MaybeRejectWithUndefined(); |
96 | | |
97 | | // DO NOT USE MaybeRejectBrokenly with in new code. Promises should be |
98 | | // rejected with Error instances. |
99 | | // Note: MaybeRejectBrokenly is a template so we can use it with DOMException |
100 | | // without instantiating the DOMException specialization of MaybeSomething in |
101 | | // every translation unit that includes this header, because that would |
102 | | // require use to include DOMException.h either here or in all those |
103 | | // translation units. |
104 | | template<typename T> |
105 | | void MaybeRejectBrokenly(const T& aArg); // Not implemented by default; see |
106 | | // specializations in the .cpp for |
107 | | // the T values we support. |
108 | | |
109 | | // WebIDL |
110 | | |
111 | | nsIGlobalObject* GetParentObject() const |
112 | 0 | { |
113 | 0 | return mGlobal; |
114 | 0 | } |
115 | | |
116 | | // Do the equivalent of Promise.resolve in the compartment of aGlobal. The |
117 | | // compartment of aCx is ignored. Errors are reported on the ErrorResult; if |
118 | | // aRv comes back !Failed(), this function MUST return a non-null value. |
119 | | static already_AddRefed<Promise> |
120 | | Resolve(nsIGlobalObject* aGlobal, JSContext* aCx, |
121 | | JS::Handle<JS::Value> aValue, ErrorResult& aRv); |
122 | | |
123 | | // Do the equivalent of Promise.reject in the compartment of aGlobal. The |
124 | | // compartment of aCx is ignored. Errors are reported on the ErrorResult; if |
125 | | // aRv comes back !Failed(), this function MUST return a non-null value. |
126 | | static already_AddRefed<Promise> |
127 | | Reject(nsIGlobalObject* aGlobal, JSContext* aCx, |
128 | | JS::Handle<JS::Value> aValue, ErrorResult& aRv); |
129 | | |
130 | | // Do the equivalent of Promise.all in the current compartment of aCx. Errors |
131 | | // are reported on the ErrorResult; if aRv comes back !Failed(), this function |
132 | | // MUST return a non-null value. |
133 | | static already_AddRefed<Promise> |
134 | | All(JSContext* aCx, const nsTArray<RefPtr<Promise>>& aPromiseList, |
135 | | ErrorResult& aRv); |
136 | | |
137 | | void |
138 | | Then(JSContext* aCx, |
139 | | // aCalleeGlobal may not be in the compartment of aCx, when called over |
140 | | // Xrays. |
141 | | JS::Handle<JSObject*> aCalleeGlobal, |
142 | | AnyCallback* aResolveCallback, AnyCallback* aRejectCallback, |
143 | | JS::MutableHandle<JS::Value> aRetval, |
144 | | ErrorResult& aRv); |
145 | | |
146 | | template <typename Callback, typename... Args> |
147 | | using IsHandlerCallback = |
148 | | IsSame<already_AddRefed<Promise>, |
149 | | decltype(DeclVal<Callback>()( |
150 | | (JSContext*)(nullptr), |
151 | | DeclVal<JS::Handle<JS::Value>>(), |
152 | | DeclVal<Args>()...))>; |
153 | | |
154 | | template <typename Callback, typename... Args> |
155 | | using ThenResult = typename EnableIf< |
156 | | IsHandlerCallback<Callback, Args...>::value, |
157 | | Result<RefPtr<Promise>, nsresult>>::Type; |
158 | | |
159 | | // Similar to the JavaScript Then() function. Accepts a single lambda function |
160 | | // argument, which it attaches as a native resolution handler, and returns a |
161 | | // new promise which resolves with that handler's return value, or propagates |
162 | | // any rejections from this promise. |
163 | | // |
164 | | // Any additional arguments passed after the callback function are stored and |
165 | | // passed as additional arguments to the function when it is called. These |
166 | | // values will participate in cycle collection for the promise handler, and |
167 | | // therefore may safely form reference cycles with the promise chain. |
168 | | // |
169 | | // Any strong references required by the callback should be passed in this |
170 | | // manner, rather than using lambda capture, lambda captures do not support |
171 | | // cycle collection, and can easily lead to leaks. |
172 | | // |
173 | | // Does not currently support rejection handlers. |
174 | | template <typename Callback, typename... Args> |
175 | | ThenResult<Callback, Args...> |
176 | | ThenWithCycleCollectedArgs(Callback&& aOnResolve, Args&&... aArgs); |
177 | | |
178 | | Result<RefPtr<Promise>, nsresult> |
179 | | ThenWithoutCycleCollection( |
180 | | const std::function<already_AddRefed<Promise>(JSContext*, |
181 | | JS::HandleValue)>& aCallback); |
182 | | |
183 | | JSObject* PromiseObj() const |
184 | 0 | { |
185 | 0 | return mPromiseObj; |
186 | 0 | } |
187 | | |
188 | | void AppendNativeHandler(PromiseNativeHandler* aRunnable); |
189 | | |
190 | | JSObject* GlobalJSObject() const; |
191 | | |
192 | | JS::Compartment* Compartment() const; |
193 | | |
194 | | // Create a dom::Promise from a given SpiderMonkey Promise object. |
195 | | // aPromiseObj MUST be in the compartment of aGlobal's global JS object. |
196 | | static already_AddRefed<Promise> |
197 | | CreateFromExisting(nsIGlobalObject* aGlobal, |
198 | | JS::Handle<JSObject*> aPromiseObj); |
199 | | |
200 | | enum class PromiseState { |
201 | | Pending, |
202 | | Resolved, |
203 | | Rejected |
204 | | }; |
205 | | |
206 | | PromiseState State() const; |
207 | | |
208 | | protected: |
209 | | struct PromiseCapability; |
210 | | |
211 | | // Do NOT call this unless you're Promise::Create or |
212 | | // Promise::CreateFromExisting. I wish we could enforce that from inside this |
213 | | // class too, somehow. |
214 | | explicit Promise(nsIGlobalObject* aGlobal); |
215 | | |
216 | | virtual ~Promise(); |
217 | | |
218 | | // Do JS-wrapping after Promise creation. Passing null for aDesiredProto will |
219 | | // use the default prototype for the sort of Promise we have. |
220 | | void CreateWrapper(JS::Handle<JSObject*> aDesiredProto, ErrorResult& aRv); |
221 | | |
222 | | private: |
223 | | template <typename T> |
224 | 0 | void MaybeSomething(T&& aArgument, MaybeFunc aFunc) { |
225 | 0 | MOZ_ASSERT(PromiseObj()); // It was preserved! |
226 | 0 |
|
227 | 0 | AutoEntryScript aes(mGlobal, "Promise resolution or rejection"); |
228 | 0 | JSContext* cx = aes.cx(); |
229 | 0 |
|
230 | 0 | JS::Rooted<JS::Value> val(cx); |
231 | 0 | if (!ToJSValue(cx, std::forward<T>(aArgument), &val)) { |
232 | 0 | HandleException(cx); |
233 | 0 | return; |
234 | 0 | } |
235 | 0 | |
236 | 0 | (this->*aFunc)(cx, val); |
237 | 0 | } Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsresult&>(nsresult&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::ErrorResult&>(mozilla::ErrorResult&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<FallibleTArray<mozilla::dom::IOActivityDataDictionary>&>(FallibleTArray<mozilla::dom::IOActivityDataDictionary>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<JS::Handle<JS::Value>&>(JS::Handle<JS::Value>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PrecompiledScript>&>(RefPtr<mozilla::dom::PrecompiledScript>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<nsTString<char16_t> >&>(nsTArray<nsTString<char16_t> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::VRMockDisplay>&>(RefPtr<mozilla::dom::VRMockDisplay>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::VRMockController*>(mozilla::dom::VRMockController*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<bool>(bool&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::Animation*>(mozilla::dom::Animation*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<JS::Rooted<JS::Value>&>(JS::Rooted<JS::Value>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<JS::Handle<JS::Value> const&>(JS::Handle<JS::Value> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<JS::Heap<JS::Value>&>(JS::Heap<JS::Value>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::battery::BatteryManager>&>(RefPtr<mozilla::dom::battery::BatteryManager>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<RefPtr<mozilla::dom::VRDisplay> >&>(nsTArray<RefPtr<mozilla::dom::VRDisplay> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<JS::Rooted<JSObject*>&>(JS::Rooted<JSObject*>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsIDocument*>(nsIDocument*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Promise>&>(RefPtr<mozilla::dom::Promise>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<bool const&>(bool const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::cache::Cache>&>(RefPtr<mozilla::dom::cache::Cache>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<nsTString<char16_t> > const&>(nsTArray<nsTString<char16_t> > const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Response>&>(RefPtr<mozilla::dom::Response>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<AutoTArray<RefPtr<mozilla::dom::Response>, 256ul>&>(AutoTArray<RefPtr<mozilla::dom::Response>, 256ul>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<AutoTArray<RefPtr<mozilla::dom::Request>, 256ul>&>(AutoTArray<RefPtr<mozilla::dom::Request>, 256ul>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Blob>&>(RefPtr<mozilla::dom::Blob>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::ImageBitmap>&>(RefPtr<mozilla::dom::ImageBitmap>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<mozilla::dom::ChannelPixelLayout>&>(nsTArray<mozilla::dom::ChannelPixelLayout>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Client>&>(RefPtr<mozilla::dom::Client>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Client> >(RefPtr<mozilla::dom::Client>&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<RefPtr<mozilla::dom::Client> >&>(nsTArray<RefPtr<mozilla::dom::Client> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::TypedArrayCreator<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >&>(mozilla::dom::TypedArrayCreator<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<bool&>(bool&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::CryptoKey>&>(RefPtr<mozilla::dom::CryptoKey>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::JsonWebKey&>(mozilla::dom::JsonWebKey&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::CryptoKeyPair&>(mozilla::dom::CryptoKeyPair&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::DataTransfer> const&>(RefPtr<mozilla::dom::DataTransfer> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTAutoStringN<char16_t, 64ul>&>(nsTAutoStringN<char16_t, 64ul>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::Sequence<RefPtr<mozilla::dom::File> >&>(mozilla::dom::Sequence<RefPtr<mozilla::dom::File> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::FormData>&>(RefPtr<mozilla::dom::FormData>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTString<char16_t>&>(nsTString<char16_t>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::File>&>(RefPtr<mozilla::dom::File>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<FallibleTArray<mozilla::dom::OwningFileOrDirectory>&>(FallibleTArray<mozilla::dom::OwningFileOrDirectory>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::Directory>&>(RefPtr<mozilla::dom::Directory>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<FallibleTArray<RefPtr<mozilla::dom::File> >&>(FallibleTArray<RefPtr<mozilla::dom::File> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<unsigned int const&>(unsigned int const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::Sequence<mozilla::dom::OwningFileOrDirectory>&>(mozilla::dom::Sequence<mozilla::dom::OwningFileOrDirectory>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTSubstringTuple<char16_t> const>(nsTSubstringTuple<char16_t> const&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTAutoStringN<char16_t, 64ul> const&>(nsTAutoStringN<char16_t, 64ul> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<NS_ConvertUTF8toUTF16>(NS_ConvertUTF8toUTF16&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<int>(int&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<unsigned int&>(unsigned int&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::DOMMediaStream>&>(RefPtr<mozilla::DOMMediaStream>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<RefPtr<mozilla::dom::MediaDeviceInfo> >&>(nsTArray<RefPtr<mozilla::dom::MediaDeviceInfo> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::MediaKeySystemAccess>&>(RefPtr<mozilla::dom::MediaKeySystemAccess>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::MediaKeySession>&>(RefPtr<mozilla::dom::MediaKeySession>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::MediaKeys>&>(RefPtr<mozilla::dom::MediaKeys>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::MediaKeyStatus&>(mozilla::dom::MediaKeyStatus&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::UniquePtr<mozilla::dom::MediaCapabilitiesInfo, mozilla::DefaultDelete<mozilla::dom::MediaCapabilitiesInfo> > >(mozilla::UniquePtr<mozilla::dom::MediaCapabilitiesInfo, mozilla::DefaultDelete<mozilla::dom::MediaCapabilitiesInfo> >&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsresult const&>(nsresult const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::AudioBuffer*&>(mozilla::dom::AudioBuffer*&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::AudioBuffer>&>(RefPtr<mozilla::dom::AudioBuffer>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::RTCCertificate>&>(RefPtr<mozilla::dom::RTCCertificate>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::MIDIAccess*>(mozilla::dom::MIDIAccess*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::MIDIPort*>(mozilla::dom::MIDIPort*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<AutoTArray<RefPtr<mozilla::dom::Notification>, 5ul>&>(AutoTArray<RefPtr<mozilla::dom::Notification>, 5ul>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::NotificationPermission&>(mozilla::dom::NotificationPermission&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::PushPermissionState&>(mozilla::dom::PushPermissionState&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PushSubscription>&>(RefPtr<mozilla::dom::PushSubscription>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::StorageEstimate&>(mozilla::dom::StorageEstimate&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PermissionStatus>&>(RefPtr<mozilla::dom::PermissionStatus>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::MediaStreamError> const&>(RefPtr<mozilla::dom::MediaStreamError> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::DOMException> const&>(RefPtr<mozilla::dom::DOMException> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTSubstring<char16_t> const&>(nsTSubstring<char16_t> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PublicKeyCredential>&>(RefPtr<mozilla::dom::PublicKeyCredential>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PaymentResponse>&>(RefPtr<mozilla::dom::PaymentResponse>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::ServiceWorkerRegistration>&>(RefPtr<mozilla::dom::ServiceWorkerRegistration>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<RefPtr<mozilla::dom::ServiceWorkerRegistration> >&>(nsTArray<RefPtr<mozilla::dom::ServiceWorkerRegistration> >&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::ServiceWorkerRegistration> const&>(RefPtr<mozilla::dom::ServiceWorkerRegistration> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::PresentationAvailability*>(mozilla::dom::PresentationAvailability*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PresentationConnection>&>(RefPtr<mozilla::dom::PresentationConnection>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::PresentationConnectionList*>(mozilla::dom::PresentationConnectionList*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::dom::PresentationAvailability>&>(RefPtr<mozilla::dom::PresentationAvailability>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::FontFace*>(mozilla::dom::FontFace*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<mozilla::dom::FontFaceSet*>(mozilla::dom::FontFaceSet*&&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<RefPtr<mozilla::PreloadedStyleSheet>&>(RefPtr<mozilla::PreloadedStyleSheet>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<nsTArray<unsigned char> const&>(nsTArray<unsigned char> const&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) Unexecuted instantiation: void mozilla::dom::Promise::MaybeSomething<FallibleTArray<mozilla::dom::PerformanceInfoDictionary>&>(FallibleTArray<mozilla::dom::PerformanceInfoDictionary>&, void (mozilla::dom::Promise::*)(JSContext*, JS::Handle<JS::Value>)) |
238 | | |
239 | | void HandleException(JSContext* aCx); |
240 | | |
241 | | RefPtr<nsIGlobalObject> mGlobal; |
242 | | |
243 | | JS::Heap<JSObject*> mPromiseObj; |
244 | | }; |
245 | | |
246 | | NS_DEFINE_STATIC_IID_ACCESSOR(Promise, NS_PROMISE_IID) |
247 | | |
248 | | } // namespace dom |
249 | | } // namespace mozilla |
250 | | |
251 | | #endif // mozilla_dom_Promise_h |