| OLD | NEW |
| 1 if (window.testRunner) { | 1 if (window.testRunner) { |
| 2 testRunner.dumpAsText(); | 2 testRunner.dumpAsText(); |
| 3 testRunner.waitUntilDone(); | 3 testRunner.waitUntilDone(); |
| 4 } | 4 } |
| 5 | 5 |
| 6 description("This test checks the various use cases around sending multiple port
s through MessagePort.postMessage"); | 6 description("This test checks the various use cases around sending multiple port
s through MessagePort.postMessage"); |
| 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 channel.port1.postMessage("noport"); | 13 channel.port1.postMessage("noport"); |
| 14 channel.port1.postMessage("zero ports", []); | 14 channel.port1.postMessage("zero ports", []); |
| 15 channel.port1.postMessage("two ports", [channel2.port1, channel2.port2]); | 15 channel.port1.postMessage("two ports", [channel2.port1, channel2.port2]); |
| 16 | 16 |
| 17 // Now test various failure cases | 17 // Now test various failure cases |
| 18 shouldThrow('channel.port1.postMessage("same port", [channel.port1])'); | 18 shouldThrow('channel.port1.postMessage("same port", [channel.port1])', "'DataClo
neError: An object could not be cloned.'"); |
| 19 shouldThrow('channel.port1.postMessage("entangled port", [channel.port2])'); | 19 shouldThrow('channel.port1.postMessage("entangled port", [channel.port2])', "'Da
taCloneError: An object could not be cloned.'"); |
| 20 shouldThrow('channel.port1.postMessage("null port", [channel3.port1, null, chann
el3.port2])'); | 20 shouldThrow('channel.port1.postMessage("null port", [channel3.port1, null, chann
el3.port2])', "'DataCloneError: An object could not be cloned.'"); |
| 21 shouldThrow('channel.port1.postMessage("notAPort", [channel3.port1, {}, channel3
.port2])'); | 21 shouldThrow('channel.port1.postMessage("notAPort", [channel3.port1, {}, channel3
.port2])', "'DataCloneError: An object could not be cloned.'"); |
| 22 shouldThrow('channel.port1.postMessage("duplicate port", [channel3.port1, channe
l3.port1])'); | 22 shouldThrow('channel.port1.postMessage("duplicate port", [channel3.port1, channe
l3.port1])', "'DataCloneError: An object could not be cloned.'"); |
| 23 // Should be OK to send channel3.port1 (should not have been disentangled by the
previous failed calls). | 23 // Should be OK to send channel3.port1 (should not have been disentangled by the
previous failed calls). |
| 24 channel.port1.postMessage("entangled ports", [channel3.port1, channel3.port2]); | 24 channel.port1.postMessage("entangled ports", [channel3.port1, channel3.port2]); |
| 25 | 25 |
| 26 shouldThrow('channel.port1.postMessage("notAnArray", channel3.port1)') | 26 shouldThrow('channel.port1.postMessage("notAnArray", channel3.port1)', "'TypeErr
or: Type error'") |
| 27 shouldThrow('channel.port1.postMessage("notASequence", [{length: 3}])'); | 27 shouldThrow('channel.port1.postMessage("notASequence", [{length: 3}])', "'DataCl
oneError: An object could not be cloned.'"); |
| 28 | 28 |
| 29 // Should not crash (we should figure out that the array contains undefined | 29 // Should not crash (we should figure out that the array contains undefined |
| 30 // entries). | 30 // entries). |
| 31 var largePortArray = []; | 31 var largePortArray = []; |
| 32 largePortArray[1234567890] = channel4.port1; | 32 largePortArray[1234567890] = channel4.port1; |
| 33 shouldThrow('channel.port1.postMessage("largeSequence", largePortArray)'); | 33 shouldThrow('channel.port1.postMessage("largeSequence", largePortArray)', "'Data
CloneError: An object could not be cloned.'"); |
| 34 | 34 |
| 35 channel.port1.postMessage("done"); | 35 channel.port1.postMessage("done"); |
| 36 | 36 |
| 37 function testTransfers() { | 37 function testTransfers() { |
| 38 var channel0 = new MessageChannel(); | 38 var channel0 = new MessageChannel(); |
| 39 | 39 |
| 40 var c1 = new MessageChannel(); | 40 var c1 = new MessageChannel(); |
| 41 channel0.port1.postMessage({id:"send-port", port:c1.port1}, [c1.port1]); | 41 channel0.port1.postMessage({id:"send-port", port:c1.port1}, [c1.port1]); |
| 42 var c2 = new MessageChannel(); | 42 var c2 = new MessageChannel(); |
| 43 channel0.port1.postMessage({id:"send-port-twice", port0:c2.port1, port1:c2.p
ort1}, [c2.port1]); | 43 channel0.port1.postMessage({id:"send-port-twice", port0:c2.port1, port1:c2.p
ort1}, [c2.port1]); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 if (event.ports.length == 2) | 138 if (event.ports.length == 2) |
| 139 testPassed("event.ports contains two ports when two ports re-sent af
ter error"); | 139 testPassed("event.ports contains two ports when two ports re-sent af
ter error"); |
| 140 else | 140 else |
| 141 testFailed("event.ports contained " + event.ports.length + " when tw
o ports re-sent after error"); | 141 testFailed("event.ports contained " + event.ports.length + " when tw
o ports re-sent after error"); |
| 142 } else if (event.data == "done") { | 142 } else if (event.data == "done") { |
| 143 testTransfers(); | 143 testTransfers(); |
| 144 } else | 144 } else |
| 145 testFailed("Received unexpected message: " + event.data); | 145 testFailed("Received unexpected message: " + event.data); |
| 146 } | 146 } |
| 147 | 147 |
| OLD | NEW |