Chromium Code Reviews| Index: LayoutTests/http/tests/serviceworker/resources/stashed-ports-worker.js |
| diff --git a/LayoutTests/http/tests/serviceworker/resources/stashed-ports-worker.js b/LayoutTests/http/tests/serviceworker/resources/stashed-ports-worker.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4254afc06887a6a898910e478b28076691a3d282 |
| --- /dev/null |
| +++ b/LayoutTests/http/tests/serviceworker/resources/stashed-ports-worker.js |
| @@ -0,0 +1,55 @@ |
| +importScripts('worker-testharness.js'); |
| + |
| +// Helper method that waits for a reply on a port, and resolves a promise with |
| +// the reply. |
| +function wait_for_reply(test, port) { |
|
scheib
2015/05/06 22:36:18
wait_for_reply, wait_for_message, very similar nam
Marijn Kruisselbrink
2015/05/13 02:46:02
Done.
|
| + return new Promise(function(resolve) { |
| + var resolved = false; |
| + port.onmessage = test.step_func(function(event) { |
| + assert_false(resolved); |
| + resolved = true; |
| + resolve(event.data); |
| + }); |
| + }); |
| +} |
| + |
| +test(function(test) { |
| + var channel = new MessageChannel(); |
| + var name = 'somename'; |
| + var stashed_port = self.ports.add(name, channel.port1); |
| + assert_equals(stashed_port.name, name); |
| + }, 'Name set when adding port is set correctly.'); |
| + |
| +promise_test(function(test) { |
| + var channel = new MessageChannel(); |
| + var stashed_port = self.ports.add('', channel.port1); |
| + stashed_port.postMessage('pingy ping'); |
| + return wait_for_reply(test, channel.port2) |
| + .then(test.step_func(function(reply) { |
| + assert_equals(reply, 'pingy ping'); |
| + })); |
| + }, 'Messages posted into stashed port arrive on other side.'); |
| + |
| +function wait_for_message(test, name) { |
| + return new Promise(function(resolve) { |
| + var event_handler = function(e) { |
| + if (e.source.name === name) { |
| + self.ports.removeEventListener('message', event_handler); |
| + resolve(e); |
| + } |
| + }; |
| + self.ports.addEventListener('message', event_handler); |
| + }); |
| +} |
| + |
| +promise_test(function(test) { |
| + var channel = new MessageChannel(); |
| + var name = 'test_events'; |
| + var stashed_port = self.ports.add(name, channel.port1); |
| + channel.port2.postMessage('ping blah'); |
| + return wait_for_message(test, name) |
| + .then(test.step_func(function(reply) { |
| + assert_equals(reply.data, 'ping blah'); |
| + assert_equals(reply.source, stashed_port); |
| + })); |
| + }, 'Messages send to stashed port arrive as global events.'); |
|
scheib
2015/05/06 22:36:18
send -> sent
Marijn Kruisselbrink
2015/05/13 02:46:02
Done.
|