| 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 |