Bug 604026 - Sync event loops in workers should be created only if compatible with the worker shutdown status

This commit is contained in:
janekptacijarabaci 2018-07-05 13:04:44 +02:00 committed by Roy Tam
commit 98546534b0
17 changed files with 102 additions and 56 deletions

View file

@ -950,7 +950,7 @@ ImageBitmap::CreateInternal(nsIGlobalObject* aGlobal, ImageData& aImageData,
imageSize,
aCropRect,
getter_AddRefs(data));
task->Dispatch(aRv);
task->Dispatch(Terminating, aRv);
}
if (NS_WARN_IF(!data)) {
@ -1377,10 +1377,10 @@ private:
RefPtr<DecodeBlobInMainThreadSyncTask> task =
new DecodeBlobInMainThreadSyncTask(mWorkerPrivate, *mBlob, mCropRect,
getter_AddRefs(data), sourceSize);
task->Dispatch(rv); // This is a synchronous call.
task->Dispatch(Terminating, rv); // This is a synchronous call.
// In case the worker is terminating, this rejection can be handled.
if (NS_WARN_IF(rv.Failed())) {
// XXXbz does this really make sense if we're shutting down? Ah, well.
mPromise->MaybeReject(rv);
return nullptr;
}
@ -2104,7 +2104,10 @@ ImageBitmap::Create(nsIGlobalObject* aGlobal,
aFormat,
aLayout,
getter_AddRefs(data));
task->Dispatch(aRv);
task->Dispatch(Terminating, aRv);
if (aRv.Failed()) {
return promise.forget();
}
}
if (NS_WARN_IF(!data)) {