dom/workers/test/test_transferable.html

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:0a506d41e3f7
1 <!--
2 Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/
4 -->
5 <!DOCTYPE HTML>
6 <html>
7 <!--
8 Tests of DOM Worker transferable objects
9 -->
10 <head>
11 <title>Test for DOM Worker transferable objects</title>
12 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
13 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
14 </head>
15 <body>
16 <p id="display"></p>
17 <div id="content" style="display: none">
18
19 </div>
20 <pre id="test">
21 <script class="testbody" language="javascript">
22
23 function test1(sizes) {
24 if (!sizes.length) {
25 runTests();
26 return;
27 }
28
29 var size = sizes.pop();
30
31 var worker = new Worker("transferable_worker.js");
32 worker.onmessage = function(event) {
33 ok(event.data.status, event.data.event);
34 if (!event.data.status) {
35 runTests();
36 return;
37 }
38
39 if ("notEmpty" in event.data && "byteLength" in event.data.notEmpty) {
40 ok(event.data.notEmpty.byteLength != 0,
41 "P: NotEmpty object received: " + event.data.notEmpty.byteLength);
42 }
43
44 if (!event.data.last)
45 return;
46
47 test1(sizes);
48 }
49 worker.onerror = function(event) {
50 ok(false, "No errors!");
51 }
52
53 try {
54 worker.postMessage(42, true);
55 ok(false, "P: PostMessage - Exception for wrong type");
56 } catch(e) {
57 ok(true, "P: PostMessage - Exception for wrong type");
58 }
59
60 try {
61 ab = new ArrayBuffer(size);
62 worker.postMessage(42,[ab, ab]);
63 ok(false, "P: PostMessage - Exception for duplicate");
64 } catch(e) {
65 ok(true, "P: PostMessage - Exception for duplicate");
66 }
67
68 var ab = new ArrayBuffer(size);
69 ok(ab.byteLength == size, "P: The size is: " + size + " == " + ab.byteLength);
70 worker.postMessage({ data: 0, timeout: 0, ab: ab, cb: ab, size: size }, [ab]);
71 ok(ab.byteLength == 0, "P: PostMessage - The size is: 0 == " + ab.byteLength)
72 }
73
74 function test2() {
75 var worker = new Worker("transferable_worker.js");
76 worker.onmessage = function(event) {
77 ok(event.data.status, event.data.event);
78 if (!event.data.status) {
79 runTests();
80 return;
81 }
82
83 if ("notEmpty" in event.data && "byteLength" in event.data.notEmpty) {
84 ok(event.data.notEmpty.byteLength != 0,
85 "P: NotEmpty object received: " + event.data.notEmpty.byteLength);
86 }
87
88 if (event.data.last) {
89 runTests();
90 }
91 }
92 worker.onerror = function(event) {
93 ok(false, "No errors!");
94 }
95
96 var f = new Float32Array([0,1,2,3]);
97 ok(f.byteLength != 0, "P: The size is: " + f.byteLength + " is not 0");
98 worker.postMessage({ event: "P: postMessage with Float32Array", status: true,
99 size: 4, notEmpty: f, bc: [ f, f, { dd: f } ] }, [f.buffer]);
100 ok(f.byteLength == 0, "P: The size is: " + f.byteLength + " is 0");
101 }
102
103 var tests = [
104 function() { test1([1024 * 1024 * 32, 128, 4]); },
105 test2
106 ];
107 function runTests() {
108 if (!tests.length) {
109 SimpleTest.finish();
110 return;
111 }
112
113 var test = tests.shift();
114 test();
115 }
116
117 SimpleTest.waitForExplicitFinish();
118 runTests();
119
120 </script>
121 </pre>
122 </body>
123 </html>

mercurial