summaryrefslogtreecommitdiffstats
path: root/dom/file/tests/common_blob_types.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/file/tests/common_blob_types.js')
-rw-r--r--dom/file/tests/common_blob_types.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/dom/file/tests/common_blob_types.js b/dom/file/tests/common_blob_types.js
new file mode 100644
index 0000000000..95501e58e5
--- /dev/null
+++ b/dom/file/tests/common_blob_types.js
@@ -0,0 +1,82 @@
+let blobTypes = [
+ {
+ type: "memory",
+ factory: async content => {
+ return new Blob([content]);
+ },
+ blobImplType: "MultipartBlobImpl[StringBlobImpl]",
+ },
+
+ {
+ type: "ipcBlob",
+ factory: async content => {
+ return new Promise(resolve => {
+ let bc1 = new BroadcastChannel("blob tests");
+ bc1.onmessage = e => {
+ resolve(e.data);
+ };
+
+ let bc2 = new BroadcastChannel("blob tests");
+ bc2.postMessage(new Blob([content]));
+ });
+ },
+ blobImplType:
+ "StreamBlobImpl[StreamBlobImpl[MultipartBlobImpl[StringBlobImpl]]]",
+ },
+
+ {
+ type: "memoryBlob",
+ factory: async content => {
+ return new Promise(resolve => {
+ var xhr = new XMLHttpRequest();
+ xhr.open(
+ "POST",
+ "http://mochi.test:8888/browser/dom/xhr/tests/temporaryFileBlob.sjs"
+ );
+ xhr.responseType = "blob";
+ xhr.send(content);
+ xhr.onloadend = _ => {
+ resolve(xhr.response);
+ };
+ });
+ },
+ blobImplType: "MemoryBlobImpl",
+ },
+
+ {
+ type: "temporaryBlob",
+ factory: async content => {
+ await SpecialPowers.pushPrefEnv({
+ set: [["dom.blob.memoryToTemporaryFile", 1]],
+ });
+
+ return new Promise(resolve => {
+ var xhr = new XMLHttpRequest();
+ xhr.open(
+ "POST",
+ "http://mochi.test:8888/browser/dom/xhr/tests/temporaryFileBlob.sjs"
+ );
+ xhr.responseType = "blob";
+ xhr.send(content);
+ xhr.onloadend = _ => {
+ resolve(xhr.response);
+ };
+ });
+ },
+ blobImplType: "StreamBlobImpl[TemporaryFileBlobImpl]",
+ },
+];
+
+async function forEachBlobType(content, cb) {
+ for (let i = 0; i < blobTypes.length; ++i) {
+ info("Running tests for " + blobTypes[i].type);
+ let blob = await blobTypes[i].factory(content);
+ is(
+ SpecialPowers.wrap(blob).blobImplType,
+ blobTypes[i].blobImplType,
+ "Correct blobImplType"
+ );
+ ok(blob instanceof Blob, "Blob created");
+ await cb(blob, content);
+ }
+}