summaryrefslogtreecommitdiffstats
path: root/dom/file/tests/common_blob_reading.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/file/tests/common_blob_reading.js')
-rw-r--r--dom/file/tests/common_blob_reading.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/dom/file/tests/common_blob_reading.js b/dom/file/tests/common_blob_reading.js
new file mode 100644
index 0000000000..5df8419a30
--- /dev/null
+++ b/dom/file/tests/common_blob_reading.js
@@ -0,0 +1,50 @@
+async function testBlobText(blob, content) {
+ let text = await blob.text();
+ is(text, content, "blob.text()");
+}
+
+async function testBlobArrayBuffer(blob, content) {
+ let ab = await blob.arrayBuffer();
+ is(ab.byteLength, content.length, "blob.arrayBuffer()");
+}
+
+async function testBlobStream(blob, content) {
+ let s = await blob.stream();
+ ok(s instanceof ReadableStream, "We have a ReadableStream");
+
+ let data = await s.getReader().read();
+ ok(!data.done, "Nothing is done yet");
+ for (let i = 0; i < data.value.length; ++i) {
+ is(String.fromCharCode(data.value[i]), content[i], "blob.stream() - " + i);
+ }
+}
+
+function workify(func, blob, content) {
+ info("Workifying " + func);
+
+ return new Promise((resolve, reject) => {
+ let worker = new Worker("worker_blob_reading.js");
+ worker.postMessage({ func, blob, content });
+ worker.onmessage = function (e) {
+ if (e.data.type == "done") {
+ resolve();
+ return;
+ }
+
+ if (e.data.type == "error") {
+ reject(e.data.message);
+ return;
+ }
+
+ if (e.data.type == "test") {
+ ok(e.data.test, e.data.message);
+ return;
+ }
+
+ if (e.data.type == "info") {
+ info(e.data.message);
+ return;
+ }
+ };
+ });
+}