instantiateStreaming.any.js (1490B)
1 // META: global=window,worker 2 // META: script=/wasm/jsapi/wasm-module-builder.js 3 // META: script=/wasm/jsapi/assertions.js 4 // META: script=/wasm/jsapi/instanceTestFactory.js 5 6 let emptyModuleBinary; 7 setup(() => { 8 emptyModuleBinary = new WasmModuleBuilder().toBuffer(); 9 }); 10 11 for (const [name, fn] of instanceTestFactory) { 12 promise_test(async () => { 13 const { buffer, args, exports, verify } = fn(); 14 const response = new Response(buffer, { "headers": { "Content-Type": "application/wasm" } }); 15 const result = await WebAssembly.instantiateStreaming(response, ...args); 16 assert_WebAssemblyInstantiatedSource(result, exports); 17 verify(result.instance); 18 }, name); 19 } 20 21 promise_test(async () => { 22 const builder = new WasmModuleBuilder(); 23 builder.addImportedGlobal("module", "global", kWasmI32); 24 const buffer = builder.toBuffer(); 25 const response = new Response(buffer, { "headers": { "Content-Type": "application/wasm" } }); 26 const order = []; 27 28 const imports = { 29 get module() { 30 order.push("module getter"); 31 return { 32 get global() { 33 order.push("global getter"); 34 return 0; 35 }, 36 } 37 }, 38 }; 39 40 const expected = [ 41 "module getter", 42 "global getter", 43 ]; 44 const p = WebAssembly.instantiateStreaming(response, imports); 45 assert_array_equals(order, []); 46 const result = await p; 47 assert_WebAssemblyInstantiatedSource(result, {}); 48 assert_array_equals(order, expected); 49 }, "Synchronous options handling");