Index: LayoutTests/http/tests/serviceworker/resources/postmessage-msgport-to-client-worker.js |
diff --git a/LayoutTests/http/tests/serviceworker/resources/postmessage-msgport-to-client-worker.js b/LayoutTests/http/tests/serviceworker/resources/postmessage-msgport-to-client-worker.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..16e16d36dc5e75fb28a5461a1fea1868afb785a2 |
--- /dev/null |
+++ b/LayoutTests/http/tests/serviceworker/resources/postmessage-msgport-to-client-worker.js |
@@ -0,0 +1,18 @@ |
+self.onmessage = function(e) { |
+ self.clients.getServiced().then(function(clients) { |
+ clients.forEach(function(client) { |
+ var messageChannel = new MessageChannel(); |
+ messageChannel.port1.onmessage = onMessageViaMessagePort.bind(null, client); |
+ client.postMessage({port: messageChannel.port2}, [messageChannel.port2]); |
+ }); |
+ }); |
+}; |
+ |
+function onMessageViaMessagePort(client, e) { |
+ var message = e.data; |
+ if ('value' in message) { |
+ client.postMessage({ack: 'Acking value: ' + message.value}); |
+ } else if ('done' in message) { |
+ client.postMessage({done: true}); |
+ } |
+} |