Bug 1319992: P0. Have CompletionPromise returns a RefPtr<MozPromise>. r?bholley
This allows to easily chain Then with CompletionPromise. It's also more consistent that way.
MozReview-Commit-ID: HUING0eOLNJ
--- a/xpcom/threads/MozPromise.h
+++ b/xpcom/threads/MozPromise.h
@@ -273,17 +273,17 @@ public:
{
public:
virtual void Disconnect() = 0;
// MSVC complains when an inner class (ThenValueBase::{Resolve,Reject}Runnable)
// tries to access an inherited protected member.
bool IsDisconnected() const { return mDisconnected; }
- virtual MozPromise* CompletionPromise() = 0;
+ virtual RefPtr<MozPromise> CompletionPromise() = 0;
virtual void AssertIsDead() = 0;
protected:
Request() : mComplete(false), mDisconnected(false) {}
virtual ~Request() {}
bool mComplete;
@@ -330,17 +330,17 @@ protected:
private:
RefPtr<ThenValueBase> mThenValue;
RefPtr<MozPromise> mPromise;
};
explicit ThenValueBase(AbstractThread* aResponseTarget, const char* aCallSite)
: mResponseTarget(aResponseTarget), mCallSite(aCallSite) {}
- MozPromise* CompletionPromise() override
+ RefPtr<MozPromise> CompletionPromise() override
{
MOZ_DIAGNOSTIC_ASSERT(mResponseTarget->IsCurrentThreadIn());
MOZ_DIAGNOSTIC_ASSERT(!Request::mComplete);
if (!mCompletionPromise) {
mCompletionPromise = new MozPromise::Private(
"<completion promise>", true /* aIsCompletionPromise */);
}
return mCompletionPromise;