// META: global=window,worker // META: script=/wasm/jsapi/wasm-module-builder.js // META: script=/wasm/jsapi/assertions.js // META: script=/wasm/jsapi/instanceTestFactory.js let emptyModuleBinary; setup(() => { emptyModuleBinary = new WasmModuleBuilder().toBuffer(); }); for (const [name, fn] of instanceTestFactory) { promise_test(async () => { const { buffer, args, exports, verify } = fn(); const response = new Response(buffer, { "headers": { "Content-Type": "application/wasm" } }); const result = await WebAssembly.instantiateStreaming(response, ...args); assert_WebAssemblyInstantiatedSource(result, exports); verify(result.instance); }, name); } promise_test(async () => { const builder = new WasmModuleBuilder(); builder.addImportedGlobal("module", "global", kWasmI32); const buffer = builder.toBuffer(); const response = new Response(buffer, { "headers": { "Content-Type": "application/wasm" } }); const order = []; const imports = { get module() { order.push("module getter"); return { get global() { order.push("global getter"); return 0; }, } }, }; const expected = [ "module getter", "global getter", ]; const p = WebAssembly.instantiateStreaming(response, imports); assert_array_equals(order, []); const result = await p; assert_WebAssemblyInstantiatedSource(result, {}); assert_array_equals(order, expected); }, "Synchronous options handling");