mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1842007 - Part 8: Remove DomPromiseListener r=dom-core,edgar
Differential Revision: https://phabricator.services.mozilla.com/D183027
This commit is contained in:
parent
2cc2490039
commit
9f2c8f0585
@ -15,51 +15,4 @@ namespace mozilla::dom {
|
||||
|
||||
NS_IMPL_ISUPPORTS0(MozPromiseRejectOnDestructionBase)
|
||||
|
||||
NS_IMPL_ISUPPORTS0(DomPromiseListener)
|
||||
|
||||
DomPromiseListener::DomPromiseListener(CallbackTypeResolved&& aResolve,
|
||||
CallbackTypeRejected&& aReject)
|
||||
: mResolve(std::move(aResolve)), mReject(std::move(aReject)) {}
|
||||
|
||||
DomPromiseListener::~DomPromiseListener() {
|
||||
if (mReject) {
|
||||
mReject(NS_BINDING_ABORTED);
|
||||
}
|
||||
}
|
||||
|
||||
void DomPromiseListener::ResolvedCallback(JSContext* aCx,
|
||||
JS::Handle<JS::Value> aValue,
|
||||
ErrorResult& aRv) {
|
||||
if (mResolve) {
|
||||
mResolve(aCx, aValue);
|
||||
}
|
||||
// Let's clear the lambdas in case we have a cycle to ourselves.
|
||||
Clear();
|
||||
}
|
||||
|
||||
void DomPromiseListener::RejectedCallback(JSContext* aCx,
|
||||
JS::Handle<JS::Value> aValue,
|
||||
ErrorResult& aRv) {
|
||||
if (mReject) {
|
||||
nsresult errorCode = NS_ERROR_DOM_NOT_NUMBER_ERR;
|
||||
if (aValue.isInt32()) {
|
||||
errorCode = nsresult(aValue.toInt32());
|
||||
} else if (aValue.isObject()) {
|
||||
RefPtr<::mozilla::dom::DOMException> domException;
|
||||
UNWRAP_OBJECT(DOMException, aValue, domException);
|
||||
if (domException) {
|
||||
errorCode = domException->GetResult();
|
||||
}
|
||||
}
|
||||
mReject(errorCode);
|
||||
}
|
||||
// Let's clear the lambdas in case we have a cycle to ourselves.
|
||||
Clear();
|
||||
}
|
||||
|
||||
void DomPromiseListener::Clear() {
|
||||
mResolve = nullptr;
|
||||
mReject = nullptr;
|
||||
}
|
||||
|
||||
} // namespace mozilla::dom
|
||||
|
@ -73,32 +73,6 @@ class MozPromiseRejectOnDestruction final
|
||||
const char* mCallSite;
|
||||
};
|
||||
|
||||
// This class is used to set C++ callbacks once a dom Promise a resolved or
|
||||
// rejected.
|
||||
class DomPromiseListener final : public PromiseNativeHandler {
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
public:
|
||||
using CallbackTypeResolved =
|
||||
std::function<void(JSContext*, JS::Handle<JS::Value>)>;
|
||||
using CallbackTypeRejected = std::function<void(nsresult)>;
|
||||
|
||||
DomPromiseListener(CallbackTypeResolved&& aResolve,
|
||||
CallbackTypeRejected&& aReject);
|
||||
|
||||
void Clear();
|
||||
|
||||
void ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue,
|
||||
ErrorResult& aRv) override;
|
||||
void RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue,
|
||||
ErrorResult& aRv) override;
|
||||
|
||||
private:
|
||||
~DomPromiseListener();
|
||||
CallbackTypeResolved mResolve;
|
||||
CallbackTypeRejected mReject;
|
||||
};
|
||||
|
||||
} // namespace mozilla::dom
|
||||
|
||||
#endif // mozilla_dom_PromiseNativeHandler_h
|
||||
|
Loading…
Reference in New Issue
Block a user