Access-Control-Expose-Headers parsed incorrectly
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / wasm / wasm_stream_compile_test.html
1 <!DOCTYPE html>
2 <script src="/resources/testharness.js"></script>
3 <script src="/resources/testharnessreport.js"></script>
4 <script src="/common/get-host-info.sub.js"></script>
5 <script>
6
7   promise_test(async function() {
8       var response = await fetch('resources/incrementer.wasm');
9       const module = await WebAssembly.compileStreaming(response);
10       assert_true(module instanceof WebAssembly.Module);
11   }, "compileStreaming using resolved response");
12
13   promise_test(async function() {
14       var response = await fetch('resources/incrementer.wasm');
15       const module = await WebAssembly.compileStreaming(response);
16       const instance = new WebAssembly.Instance(module);
17       assert_true(instance instanceof WebAssembly.Instance);
18   }, "compileStreaming using resolved response and check instantiate");
19
20   promise_test(async function() {
21       var result = fetch('resources/incrementer.wasm');
22       const module = await WebAssembly.compileStreaming(result);
23       const instance = new WebAssembly.Instance(module);
24       assert_true(instance instanceof WebAssembly.Instance);
25   }, "compileStreaming using promise response from fetch and check instantiate");
26
27   promise_test(async function() {
28     try {
29       var result = fetch('resources/incrementer.wrong_mime_type.wasm');
30       const module = await WebAssembly.compileStreaming(result);
31       assert_true(false);
32     } catch (e) {
33       assert_true(e.message.includes('MIME type'));
34       assert_true(e instanceof Error);
35     }
36   }, "compileStreaming raise error if wrong mime type");
37
38   promise_test(async function() {
39     try {
40       var result = fetch('resources/incrementer.no_mime_type.wasm');
41       const module = await WebAssembly.compileStreaming(result);
42       assert_true(false);
43     } catch (e) {
44       assert_true(e.message.includes('MIME type'));
45       assert_true(e instanceof Error);
46     }
47   }, "compileStreaming raise error if no mime type");
48
49   promise_test(async function() {
50     try {
51       var result = fetch('resources/incrementer1.wasm');
52       const module = await WebAssembly.compileStreaming(result);
53       assert_true(false);
54     } catch (e) {
55       assert_equals(e.message, "Response has not returned OK status");
56       assert_true(e instanceof Error);
57     }
58   }, "compileStreaming raise error if 404 status");
59
60   const getWasmUrl = fileName => { 
61     var host_info = get_host_info();
62     var url = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT  +  '/wasm/';
63     return url + fileName + "?pipe=header(Access-Control-Allow-Origin,*)";
64   };
65
66   promise_test(async function() {
67       var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "cors"} );
68       const module = await WebAssembly.compileStreaming(result);
69       assert_true(module instanceof WebAssembly.Module);
70   }, "compileStreaming check CORS");
71
72   promise_test(async function() {
73     try {
74       var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "no-cors"} );
75       const module = await WebAssembly.compileStreaming(result);
76       assert_true(false);
77     } catch (e) {
78       assert_equals(e.message, "Response is not CORS-same-origin");
79       assert_true(e instanceof Error);
80     }
81   }, "compileStreaming raise error if no-cors");
82
83   promise_test(async function() {
84     const module = await fetch('resources/incrementer.wasm')
85       .then(v => v.arrayBuffer())
86       .then(v => WebAssembly.compileStreaming(new Response(v, { headers: { "Content-Type" : "application/wasm" }})));
87     assert_true(module instanceof WebAssembly.Module);
88   }, "compileStreaming receive promise with response created from ArrayBuffer");
89
90   promise_test(async function() {
91     const module = await fetch('resources/incrementer.wasm')
92       .then(v => v.arrayBuffer())
93       .then(buffer => {
94         const stream = new ReadableStream({ 
95           start(controller) {
96             (async () => {
97               await Promise.resolve().then(() => controller.enqueue(buffer.slice(0, 20)));
98               await Promise.resolve().then(() => controller.enqueue(buffer.slice(20, buffer.byteLength)));
99               await Promise.resolve().then(() => controller.close());
100             })();
101           }
102         });
103         return stream; 
104       }) 
105       .then(stream => WebAssembly.compileStreaming(new Response(stream, { headers: { "Content-Type" : "application/wasm" }})));
106     assert_true(module instanceof WebAssembly.Module);
107   }, "compileStreaming receive response that deliver data by chunks as bufferArray");
108 </script>
109