diff options
Diffstat (limited to 'dom/tests/mochitest/fetch/common_temporaryFileBlob.js')
-rw-r--r-- | dom/tests/mochitest/fetch/common_temporaryFileBlob.js | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/dom/tests/mochitest/fetch/common_temporaryFileBlob.js b/dom/tests/mochitest/fetch/common_temporaryFileBlob.js new file mode 100644 index 0000000000..51aed67cf2 --- /dev/null +++ b/dom/tests/mochitest/fetch/common_temporaryFileBlob.js @@ -0,0 +1,146 @@ +var data = new Array(256).join("1234567890ABCDEF"); + +function test_fetch_basic() { + info("Simple fetch test"); + + fetch("/tests/dom/xhr/tests/temporaryFileBlob.sjs", { + method: "POST", + body: data, + }) + .then(response => { + return response.blob(); + }) + .then(blob => { + ok(blob instanceof Blob, "We have a blob!"); + is(blob.size, data.length, "Data length matches"); + if ("SpecialPowers" in self) { + is( + SpecialPowers.wrap(blob).blobImplType, + "StreamBlobImpl[TemporaryFileBlobImpl]", + "We have a blob stored into a stream file" + ); + } + + var fr = new FileReader(); + fr.readAsText(blob); + fr.onload = function () { + is(fr.result, data, "Data content matches"); + next(); + }; + }); +} + +function test_fetch_worker() { + generic_worker_test("fetch in workers", "fetch"); +} + +function test_xhr_basic() { + info("Simple XHR test"); + + let xhr = new XMLHttpRequest(); + xhr.responseType = "blob"; + xhr.open("POST", "/tests/dom/xhr/tests/temporaryFileBlob.sjs"); + xhr.send(data); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + let blob = xhr.response; + + ok(blob instanceof Blob, "We have a blob!"); + is(blob.size, data.length, "Data length matches"); + if ("SpecialPowers" in self) { + is( + SpecialPowers.wrap(blob).blobImplType, + "StreamBlobImpl[TemporaryFileBlobImpl]", + "We have a blob stored into a stream file" + ); + } + + var fr = new FileReader(); + fr.readAsText(blob); + fr.onload = function () { + is(fr.result, data, "Data content matches"); + next(); + }; + } + }; +} + +function test_xhr_worker() { + generic_worker_test("XHR in workers", "xhr"); +} + +function test_response_basic() { + info("Response"); + + let r = new Response(data); + r.blob().then(blob => { + ok(blob instanceof Blob, "We have a blob!"); + is(blob.size, data.length, "Data length matches"); + if ("SpecialPowers" in self) { + is( + SpecialPowers.wrap(blob).blobImplType, + "StreamBlobImpl[TemporaryFileBlobImpl]", + "We have a blob stored into a stream file" + ); + } + + var fr = new FileReader(); + fr.readAsText(blob); + fr.onload = function () { + is(fr.result, data, "Data content matches"); + next(); + }; + }); +} + +function test_response_worker() { + generic_worker_test("Response in workers", "response"); +} + +function test_request_basic() { + info("Request"); + + let r = new Request("https://example.com", { body: data, method: "POST" }); + r.blob().then(blob => { + ok(blob instanceof Blob, "We have a blob!"); + is(blob.size, data.length, "Data length matches"); + if ("SpecialPowers" in self) { + is( + SpecialPowers.wrap(blob).blobImplType, + "StreamBlobImpl[TemporaryFileBlobImpl]", + "We have a blob stored into a stream file" + ); + } + + var fr = new FileReader(); + fr.readAsText(blob); + fr.onload = function () { + is(fr.result, data, "Data content matches"); + next(); + }; + }); +} + +function test_request_worker() { + generic_worker_test("Request in workers", "request"); +} + +function generic_worker_test(title, what) { + info(title); + + var w = new Worker("worker_temporaryFileBlob.js"); + w.onmessage = function (e) { + if (e.data.type == "info") { + info(e.data.msg); + } else if (e.data.type == "check") { + ok(e.data.what, e.data.msg); + } else if (e.data.type == "finish") { + next(); + } else { + ok(false, "Something wrong happened"); + } + }; + + w.postMessage(what); +} |