summaryrefslogtreecommitdiffstats
path: root/dom/promise/tests/test_webassembly_compile_worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/promise/tests/test_webassembly_compile_worker.js')
-rw-r--r--dom/promise/tests/test_webassembly_compile_worker.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/dom/promise/tests/test_webassembly_compile_worker.js b/dom/promise/tests/test_webassembly_compile_worker.js
new file mode 100644
index 0000000000..90c3551137
--- /dev/null
+++ b/dom/promise/tests/test_webassembly_compile_worker.js
@@ -0,0 +1,55 @@
+const sampleURL = "test_webassembly_compile_sample.wasm";
+const sampleExportName = "run";
+const sampleResult = 1275;
+
+/* eslint-disable no-throw-literal */
+
+function checkSampleModule(m) {
+ if (!(m instanceof WebAssembly.Module)) {
+ throw "not a module";
+ }
+ var i = new WebAssembly.Instance(m);
+ if (!(i instanceof WebAssembly.Instance)) {
+ throw "not an instance";
+ }
+ if (i.exports[sampleExportName]() !== sampleResult) {
+ throw "wrong result";
+ }
+}
+
+function checkSampleInstance(i) {
+ if (!(i instanceof WebAssembly.Instance)) {
+ throw "not an instance";
+ }
+ if (i.exports[sampleExportName]() !== sampleResult) {
+ throw "wrong result";
+ }
+}
+
+const initObj = { headers: { "Content-Type": "application/wasm" } };
+
+onmessage = e => {
+ WebAssembly.compile(e.data)
+ .then(m => checkSampleModule(m))
+ .then(() => WebAssembly.instantiate(e.data))
+ .then(({ module, instance }) => {
+ checkSampleModule(module);
+ checkSampleInstance(instance);
+ })
+ .then(() => WebAssembly.compileStreaming(new Response(e.data, initObj)))
+ .then(m => checkSampleModule(m))
+ .then(() => WebAssembly.instantiateStreaming(new Response(e.data, initObj)))
+ .then(({ module, instance }) => {
+ checkSampleModule(module);
+ checkSampleInstance(instance);
+ })
+ .then(() => WebAssembly.compileStreaming(fetch(sampleURL)))
+ .then(m => checkSampleModule(m))
+ .then(() => WebAssembly.instantiateStreaming(fetch(sampleURL)))
+ .then(({ module, instance }) => {
+ checkSampleModule(module);
+ checkSampleInstance(instance);
+ })
+ .then(() => postMessage("ok"))
+ .catch(err => postMessage("fail: " + err));
+};