OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <title>Service Worker: postMessage to Client</title> |
| 3 <script src="../resources/testharness.js"></script> |
| 4 <script src="../resources/testharnessreport.js"></script> |
| 5 <script src="resources/test-helpers.js"></script> |
| 6 <script> |
| 7 var t = async_test('postMessage MessagePorts from ServiceWorker to Client'); |
| 8 t.step(function() { |
| 9 var scope = 'resources/blank.html' |
| 10 navigator.serviceWorker.unregister(scope).then( |
| 11 doRegister, |
| 12 unreached_rejection(t, 'Unregister should not fail') |
| 13 ); |
| 14 |
| 15 function doRegister() { |
| 16 navigator.serviceWorker.register( |
| 17 'resources/postmessage-msgport-to-client-worker.js', {scope: scope} |
| 18 ).then( |
| 19 onRegister, |
| 20 unreached_rejection(t, 'Registration should succeed, but failed') |
| 21 ); |
| 22 } |
| 23 |
| 24 function onRegister(worker) { |
| 25 worker.addEventListener('statechange', t.step_func(function(event) { |
| 26 if (event.target.state == 'active') |
| 27 onActive(); |
| 28 })); |
| 29 } |
| 30 |
| 31 function onActive() { |
| 32 with_iframe(scope, t.step_func(function(frame) { |
| 33 var w = frame.contentWindow; |
| 34 w.onmessage = t.step_func(onMessage); |
| 35 w.navigator.serviceWorker.current.postMessage('ping'); |
| 36 })); |
| 37 } |
| 38 |
| 39 var result = []; |
| 40 var expected = [ |
| 41 'Acking value: 1', |
| 42 'Acking value: 2', |
| 43 ]; |
| 44 |
| 45 function onMessage(e) { |
| 46 var message = e.data; |
| 47 if ('port' in message) { |
| 48 port = message.port; |
| 49 port.postMessage({value: 1}); |
| 50 port.postMessage({value: 2}); |
| 51 port.postMessage({done: true}); |
| 52 } else if ('ack' in message) { |
| 53 result.push(message.ack); |
| 54 } else if ('done' in message) { |
| 55 assert_array_equals(result, expected, 'Worker should post back expec
ted values via MessagePort.'); |
| 56 t.done(); |
| 57 } else { |
| 58 assert_unreached('Got unexpected message from ServiceWorker'); |
| 59 } |
| 60 } |
| 61 }); |
| 62 </script> |
OLD | NEW |