Bug 1499105 - P2 - NormalFileHandleOp::Cleanup() no longer asserts mResponseSent when called after failed initialization r=janv

If NormalFileHandleOp's initialisation fails, it is not possible to send a failure response, which is why mResponseSent remains `false`. To not assert the value of mResponseSent in such cases, check for a new Boolean member mEnqueued has been introduced. If mEnqueued is `false`, that suggests initialization failure.

Differential Revision: https://phabricator.services.mozilla.com/D59326

--HG--
extra : moz-landing-system : lando
This commit is contained in:
ssengupta 2020-01-10 16:16:13 +00:00
Родитель a27e13bf52
Коммит f026ab19d2
1 изменённых файлов: 14 добавлений и 2 удалений

Просмотреть файл

@ -307,6 +307,9 @@ class FileHandleOp {
protected:
nsCOMPtr<nsIEventTarget> mOwningEventTarget;
RefPtr<FileHandle> mFileHandle;
#ifdef DEBUG
bool mEnqueued;
#endif
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FileHandleOp)
@ -335,7 +338,12 @@ class FileHandleOp {
protected:
FileHandleOp(FileHandle* aFileHandle)
: mOwningEventTarget(GetCurrentThreadSerialEventTarget()),
mFileHandle(aFileHandle) {
mFileHandle(aFileHandle)
#ifdef DEBUG
,
mEnqueued(false)
#endif
{
AssertIsOnOwningThread();
MOZ_ASSERT(aFileHandle);
}
@ -1673,6 +1681,10 @@ void FileHandleOp::Enqueue() {
fileHandleThreadPool->Enqueue(mFileHandle, this, false);
#ifdef DEBUG
mEnqueued = true;
#endif
mFileHandle->NoteActiveRequest();
}
@ -1725,7 +1737,7 @@ bool NormalFileHandleOp::Init(FileHandle* aFileHandle) {
void NormalFileHandleOp::Cleanup() {
AssertIsOnOwningThread();
MOZ_ASSERT(mFileHandle);
MOZ_ASSERT_IF(!IsActorDestroyed(), mResponseSent);
MOZ_ASSERT_IF(mEnqueued && !IsActorDestroyed(), mResponseSent);
mFileHandle = nullptr;
}