OLD | NEW |
1 description("This test checks the various use cases around sending multiple port
s through Worker.postMessage"); | 1 description("This test checks the various use cases around sending multiple port
s through Worker.postMessage"); |
2 | 2 |
3 if (window.testRunner) { | 3 if (window.testRunner) { |
4 testRunner.dumpAsText(); | 4 testRunner.dumpAsText(); |
5 testRunner.waitUntilDone(); | 5 testRunner.waitUntilDone(); |
6 } | 6 } |
7 | 7 |
8 var channel = new MessageChannel(); | 8 var channel = new MessageChannel(); |
9 var channel2 = new MessageChannel(); | 9 var channel2 = new MessageChannel(); |
10 var channel3 = new MessageChannel(); | 10 var channel3 = new MessageChannel(); |
11 var channel4 = new MessageChannel(); | 11 var channel4 = new MessageChannel(); |
12 | 12 |
13 var worker = new Worker("resources/worker-thread-multi-port.js"); | 13 var worker = new Worker("resources/worker-thread-multi-port.js"); |
| 14 worker.postMessage("noargs"); |
14 worker.postMessage("noport"); | 15 worker.postMessage("noport"); |
15 worker.postMessage("zero ports", []); | 16 worker.postMessage("zero ports", []); |
16 worker.postMessage("two ports", [channel2.port1, channel2.port2]); | 17 worker.postMessage("two ports", [channel2.port1, channel2.port2]); |
17 | 18 |
18 // Now test various failure cases | 19 // Now test various failure cases |
| 20 shouldThrow("worker.postMessage()"); |
19 shouldThrow('worker.postMessage("null port", [channel3.port1, null, channel3.por
t2])'); | 21 shouldThrow('worker.postMessage("null port", [channel3.port1, null, channel3.por
t2])'); |
20 shouldThrow('worker.postMessage("notAPort", [channel3.port1, {}, channel3.port2]
)'); | 22 shouldThrow('worker.postMessage("notAPort", [channel3.port1, {}, channel3.port2]
)'); |
21 // Should be OK to send channel3.port1/2 (should not have been disentangled by t
he previous failed calls). | 23 // Should be OK to send channel3.port1/2 (should not have been disentangled by t
he previous failed calls). |
22 worker.postMessage("failed ports", [channel3.port1, channel3.port2]); | 24 worker.postMessage("failed ports", [channel3.port1, channel3.port2]); |
23 | 25 |
24 shouldThrow('worker.postMessage("notAnArray", channel3.port1)') | 26 shouldThrow('worker.postMessage("notAnArray", channel3.port1)') |
25 shouldThrow('worker.postMessage("notASequence", [{length: 3}])'); | 27 shouldThrow('worker.postMessage("notASequence", [{length: 3}])'); |
26 | 28 |
27 worker.postMessage("done", [channel.port2]); | 29 worker.postMessage("done", [channel.port2]); |
28 worker.onmessage = function(event) { | 30 worker.onmessage = function(event) { |
29 // Report results from worker thread. | 31 // Report results from worker thread. |
30 if (event.data == "done") | 32 if (event.data == "done") |
31 channel.port1.onmessage = done; | 33 channel.port1.onmessage = done; |
32 else if (event.data.indexOf("PASS") == 0) | 34 else if (event.data.indexOf("PASS") == 0) |
33 testPassed(event.data.substring(4)); | 35 testPassed(event.data.substring(4)); |
34 else if (event.data.indexOf("FAIL") == 0) | 36 else if (event.data.indexOf("FAIL") == 0) |
35 testFailed(event.data.substring(4)); | 37 testFailed(event.data.substring(4)); |
36 else | 38 else |
37 testFailed("Unexpected result: " + event.data); | 39 testFailed("Unexpected result: " + event.data); |
38 } | 40 } |
39 | |
OLD | NEW |