OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="/js-test-resources/js-test.js"></script> | 2 <title>Service Worker: postMessage</title> |
| 3 <script src="../resources/testharness.js"></script> |
| 4 <script src="../resources/testharnessreport.js"></script> |
3 <script> | 5 <script> |
| 6 var test = async_test('postMessage to a ServiceWorker (and back via MessagePort)
'); |
| 7 test.step(function() { |
4 | 8 |
5 description("Tests postMessage to and from a ServiceWorker"); | 9 navigator.serviceWorker.register('resources/postmessage-worker.js').then( |
6 var jsTestIsAsync = true; | 10 test.step_func(function(worker) { |
| 11 var messageChannel = new MessageChannel(); |
| 12 messageChannel.port1.onmessage = test.step_func(onMessage); |
7 | 13 |
8 evalAndLog("messageChannel = new MessageChannel()"); | 14 worker.postMessage({port: messageChannel.port2}, [messageChannel.por
t2]); |
9 evalAndLog("messageChannel.port1.onmessage = onMessageHandler"); | |
10 | 15 |
11 debug(""); | 16 worker.postMessage({value: 1}); |
12 evalAndLog("navigator.serviceWorker.register('postmessage-worker.js')").then( | 17 worker.postMessage({value: 2}); |
13 function(result) { | 18 worker.postMessage({done: true}); |
14 serviceWorker = result; | 19 }), |
| 20 test.step_func(function(reason) { |
| 21 assert_equals(reason.name, 'DisabledError'); |
| 22 test.done(); |
| 23 })); |
15 | 24 |
16 evalAndLog("serviceWorker.postMessage({port: messageChannel.port2}, [mes
sageChannel.port2])"); | 25 var result = []; |
17 evalAndLog("serviceWorker.postMessage({value: 1})"); | 26 var expected = [ |
18 evalAndLog("serviceWorker.postMessage({value: 2})"); | 27 'Acking value: 1', |
19 evalAndLog("serviceWorker.postMessage({done: true})"); | 28 'Acking value: 2', |
20 }, | 29 ]; |
21 function(reason) { | |
22 testFailed(reason.name); | |
23 finishJSTest(); | |
24 }); | |
25 | 30 |
26 function onMessageHandler(e) { | 31 function onMessage(e) { |
27 message = e.data; | 32 var message = e.data; |
28 debug(""); | 33 if (message === 'quit') { |
29 debug("onMessageHandler: " + JSON.stringify(message)); | 34 assert_array_equals(result, expected); |
30 | 35 test.done(); |
31 if (message === "quit") | 36 } else { |
32 finishJSTest(); | 37 result.push(message); |
33 } | 38 } |
| 39 }; |
| 40 }); |
34 </script> | 41 </script> |
OLD | NEW |