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"); | |
15 worker.postMessage("noport"); | 14 worker.postMessage("noport"); |
16 worker.postMessage("zero ports", []); | 15 worker.postMessage("zero ports", []); |
17 worker.postMessage("two ports", [channel2.port1, channel2.port2]); | 16 worker.postMessage("two ports", [channel2.port1, channel2.port2]); |
18 | 17 |
19 // Now test various failure cases | 18 // Now test various failure cases |
20 shouldThrow("worker.postMessage()"); | |
21 shouldThrow('worker.postMessage("null port", [channel3.port1, null, channel3.por
t2])'); | 19 shouldThrow('worker.postMessage("null port", [channel3.port1, null, channel3.por
t2])'); |
22 shouldThrow('worker.postMessage("notAPort", [channel3.port1, {}, channel3.port2]
)'); | 20 shouldThrow('worker.postMessage("notAPort", [channel3.port1, {}, channel3.port2]
)'); |
23 // Should be OK to send channel3.port1/2 (should not have been disentangled by t
he previous failed calls). | 21 // Should be OK to send channel3.port1/2 (should not have been disentangled by t
he previous failed calls). |
24 worker.postMessage("failed ports", [channel3.port1, channel3.port2]); | 22 worker.postMessage("failed ports", [channel3.port1, channel3.port2]); |
25 | 23 |
26 shouldThrow('worker.postMessage("notAnArray", channel3.port1)') | 24 shouldThrow('worker.postMessage("notAnArray", channel3.port1)') |
27 shouldThrow('worker.postMessage("notASequence", [{length: 3}])'); | 25 shouldThrow('worker.postMessage("notASequence", [{length: 3}])'); |
28 | 26 |
29 worker.postMessage("done", [channel.port2]); | 27 worker.postMessage("done", [channel.port2]); |
30 worker.onmessage = function(event) { | 28 worker.onmessage = function(event) { |
31 // Report results from worker thread. | 29 // Report results from worker thread. |
32 if (event.data == "done") | 30 if (event.data == "done") |
33 channel.port1.onmessage = done; | 31 channel.port1.onmessage = done; |
34 else if (event.data.indexOf("PASS") == 0) | 32 else if (event.data.indexOf("PASS") == 0) |
35 testPassed(event.data.substring(4)); | 33 testPassed(event.data.substring(4)); |
36 else if (event.data.indexOf("FAIL") == 0) | 34 else if (event.data.indexOf("FAIL") == 0) |
37 testFailed(event.data.substring(4)); | 35 testFailed(event.data.substring(4)); |
38 else | 36 else |
39 testFailed("Unexpected result: " + event.data); | 37 testFailed("Unexpected result: " + event.data); |
40 } | 38 } |
| 39 |
OLD | NEW |