Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1114)

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/stashed-ports-worker.js

Issue 1063533002: Initial implementation of stashed message ports, layout tests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@stashed-ports
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 importScripts('worker-testharness.js');
2
3 // Helper method that waits for a reply on a port, and resolves a promise with
4 // the reply.
5 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.
6 return new Promise(function(resolve) {
7 var resolved = false;
8 port.onmessage = test.step_func(function(event) {
9 assert_false(resolved);
10 resolved = true;
11 resolve(event.data);
12 });
13 });
14 }
15
16 test(function(test) {
17 var channel = new MessageChannel();
18 var name = 'somename';
19 var stashed_port = self.ports.add(name, channel.port1);
20 assert_equals(stashed_port.name, name);
21 }, 'Name set when adding port is set correctly.');
22
23 promise_test(function(test) {
24 var channel = new MessageChannel();
25 var stashed_port = self.ports.add('', channel.port1);
26 stashed_port.postMessage('pingy ping');
27 return wait_for_reply(test, channel.port2)
28 .then(test.step_func(function(reply) {
29 assert_equals(reply, 'pingy ping');
30 }));
31 }, 'Messages posted into stashed port arrive on other side.');
32
33 function wait_for_message(test, name) {
34 return new Promise(function(resolve) {
35 var event_handler = function(e) {
36 if (e.source.name === name) {
37 self.ports.removeEventListener('message', event_handler);
38 resolve(e);
39 }
40 };
41 self.ports.addEventListener('message', event_handler);
42 });
43 }
44
45 promise_test(function(test) {
46 var channel = new MessageChannel();
47 var name = 'test_events';
48 var stashed_port = self.ports.add(name, channel.port1);
49 channel.port2.postMessage('ping blah');
50 return wait_for_message(test, name)
51 .then(test.step_func(function(reply) {
52 assert_equals(reply.data, 'ping blah');
53 assert_equals(reply.source, stashed_port);
54 }));
55 }, '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.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698