summaryrefslogtreecommitdiffstats
path: root/dom/xhr/tests/common_temporaryFileBlob.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/xhr/tests/common_temporaryFileBlob.js
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/xhr/tests/common_temporaryFileBlob.js')
-rw-r--r--dom/xhr/tests/common_temporaryFileBlob.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/dom/xhr/tests/common_temporaryFileBlob.js b/dom/xhr/tests/common_temporaryFileBlob.js
new file mode 100644
index 0000000000..a84d58dd77
--- /dev/null
+++ b/dom/xhr/tests/common_temporaryFileBlob.js
@@ -0,0 +1,126 @@
+// This file expects next() to be defined in the scope it is imported into.
+/* global next */
+var data = new Array(256).join("1234567890ABCDEF");
+
+function createXHR() {
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "temporaryFileBlob.sjs");
+ xhr.responseType = "blob";
+ xhr.send({
+ toString() {
+ return data;
+ },
+ });
+ return xhr;
+}
+
+function test_simple() {
+ info("Simple test");
+
+ var xhr = createXHR();
+
+ xhr.onloadend = function () {
+ ok(xhr.response instanceof Blob, "We have a blob!");
+ ok(!(xhr.response instanceof File), "Our blob is not a file!");
+ if ("SpecialPowers" in self) {
+ is(
+ SpecialPowers.wrap(xhr.response).blobImplType,
+ "StreamBlobImpl[TemporaryFileBlobImpl]",
+ "We have a blob stored into a stream file"
+ );
+ }
+ is(xhr.response.size, data.length, "Data length matches");
+
+ var fr = new FileReader();
+ fr.readAsText(xhr.response);
+ fr.onload = function () {
+ is(fr.result, data, "Data content matches");
+ next();
+ };
+ };
+}
+
+function test_abort() {
+ info("Aborting during onloading");
+
+ var xhr = createXHR();
+
+ xhr.onprogress = function () {
+ xhr.abort();
+ };
+
+ xhr.onloadend = function () {
+ ok(!xhr.response, "We should not have a Blob!");
+ next();
+ };
+}
+
+function test_reuse() {
+ info("Reuse test");
+
+ var xhr = createXHR();
+
+ var count = 0;
+ xhr.onloadend = function () {
+ ok(xhr.response instanceof Blob, "We have a blob!");
+ ok(!(xhr.response instanceof File), "Our blob is not a file!");
+ if ("SpecialPowers" in self) {
+ is(
+ SpecialPowers.wrap(xhr.response).blobImplType,
+ "StreamBlobImpl[TemporaryFileBlobImpl]",
+ "We have a blob stored into a stream file"
+ );
+ }
+ is(xhr.response.size, data.length, "Data length matches");
+
+ var fr = new FileReader();
+ fr.readAsText(xhr.response);
+ fr.onload = function () {
+ is(fr.result, data, "Data content matches");
+ if (++count > 2) {
+ next();
+ return;
+ }
+
+ xhr.open("POST", "temporaryFileBlob.sjs");
+ xhr.responseType = "blob";
+ xhr.send({
+ toString() {
+ return data;
+ },
+ });
+ };
+ };
+}
+
+function test_worker_generic(test) {
+ 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(test);
+}
+
+function test_worker() {
+ info("XHR in workers");
+ test_worker_generic("simple");
+}
+
+function test_worker_abort() {
+ info("XHR in workers");
+ test_worker_generic("abort");
+}
+
+function test_worker_reuse() {
+ info("XHR in workers");
+ test_worker_generic("reuse");
+}