Bug 1821563 - Do not create a promise from an uncatchable exception r=mgaudet

Differential Revision: https://phabricator.services.mozilla.com/D172654
This commit is contained in:
Kagami Sascha Rosylight 2023-03-15 14:38:05 +00:00
Родитель ec1af0401e
Коммит 35fe8e091d
2 изменённых файлов: 24 добавлений и 0 удалений

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

@ -35,6 +35,10 @@ MOZ_CAN_RUN_SCRIPT static already_AddRefed<Promise> PromisifyAlgorithm(
aFunc(aRv);
}
if (aRv.IsUncatchableException()) {
return nullptr;
}
if (aRv.Failed()) {
return Promise::CreateRejectedWithErrorResult(aGlobal, aRv);
}

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

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html class="test-wait">
<script id="workerScript" type="text/worker">
// Blob will pass a huge Uint8Array object whose stringification will take long
const encoder = new TextEncoderStream()
const blob = new Blob([new ArrayBuffer(1338720)])
const writable = new WritableStream()
blob.stream().pipeThrough(encoder).pipeTo(writable)
// Wait a bit for the piping to start
Promise.resolve().then(() => postMessage('started'));
</script>
<script>
const worker = new Worker(URL.createObjectURL(new Blob([
document.getElementById("workerScript").textContent
])))
worker.onmessage = () => {
worker.terminate();
document.documentElement.classList.remove("test-wait");
};
</script>