Web Inspector: REGRESSION (r238602): Elements: deleting the last child of a collapsed...
[WebKit-https.git] / LayoutTests / workers / message-port.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 </head>
6 <body>
7 <script>
8 description("Sends ArrayBuffers through MessagePorts.");
9 window.jsTestIsAsync = true;
10
11 function test(data, postMessage, checkResult) {
12     return new Promise(function (resolve) {
13         const channel = new MessageChannel();
14
15         channel.port1.onmessage = event => {
16             if (!event.data)
17                 debug("message data null!");
18             postMessage(event.data, event.target);
19         };
20
21         channel.port2.onmessage = event => {
22             checkResult(event.data);
23             resolve();
24         };
25
26         postMessage(data, channel.port2);
27     });
28 }
29
30 function testEmptyArray(buf) {
31     const array = new Float64Array(buf);
32     if (!array.length)
33         testPassed(`successfully transferred array of length 0`);
34     else
35         testFailed(`${array} should be a Float64Array of length 0`);
36 }
37
38 const array = new Float64Array([Math.PI]);
39 const emptyArray = new Float64Array();
40 const emptyArray2 = new Float64Array();
41
42 test(
43     { buf: [array.buffer, emptyArray.buffer] },
44     (data, port) => port.postMessage({ buf: data.buf }, data.buf),
45     data => {
46         const array = new Float64Array(data.buf[0]);
47         if (array[0] === Math.PI)
48             testPassed(`array[0] contains ${Math.PI}`);
49         else
50             testFailed(`${array[0]} should be ${Math.PI}`);
51
52         testEmptyArray(data.buf[1]);
53     }
54 ).then(() =>
55     test(
56         { buf: emptyArray2.buffer },
57         (data, port) => port.postMessage({ buf: data.buf }, [data.buf]),
58         data => testEmptyArray(data.buf)
59     ),
60 ).then(finishJSTest);
61 </script>
62 </body>
63 </html>