Upstream version 8.37.180.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / serviceworker / postmessage-to-client.html
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 from ServiceWorker to Client');
8 t.step(function() {
9     var scope = 'resources/blank.html'
10     service_worker_unregister_and_register(
11         t, 'resources/postmessage-to-client-worker.js', scope, onRegister);
12
13     function onRegister(worker) {
14         worker.addEventListener('statechange', t.step_func(function(event) {
15             if (event.target.state == 'active')
16                 onActive();
17         }));
18     }
19
20     function onActive() {
21         with_iframe(scope, t.step_func(function(frame) {
22             var w = frame.contentWindow;
23             w.onmessage = t.step_func(onMessage);
24             w.navigator.serviceWorker.controller.postMessage('ping');
25         }));
26     }
27
28     var result = [];
29     var expected = ['Sending message via clients'];
30
31     function onMessage(e) {
32         var message = e.data;
33         if (message === 'quit') {
34             assert_array_equals(result, expected, 'Worker should post back expected messages.');
35             service_worker_unregister_and_done(t, scope);
36         } else {
37             result.push(message);
38         }
39     }
40 });
41 </script>