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>
7 var t = async_test('postMessage MessagePorts from ServiceWorker to Client');
9 var scope = 'resources/blank.html'
10 navigator.serviceWorker.unregister(scope).then(
12 unreached_rejection(t, 'Unregister should not fail')
15 function doRegister() {
16 navigator.serviceWorker.register(
17 'resources/postmessage-msgport-to-client-worker.js', {scope: scope}
20 unreached_rejection(t, 'Registration should succeed, but failed')
24 function onRegister(worker) {
25 worker.addEventListener('statechange', t.step_func(function(event) {
26 if (event.target.state == 'active')
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');
45 function onMessage(e) {
47 if ('port' in message) {
48 var 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 expected values via MessagePort.');
58 assert_unreached('Got unexpected message from ServiceWorker');