Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / serviceworker / controller-on-reload.html
1 <!DOCTYPE html>
2 <title>Service Worker: Controller on reload</title>
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script>
6 <body>
7 <script>
8 var t = async_test('controller is set upon reload after registration');
9 t.step(function() {
10     var reloaded = false;
11     var scope = 'resources/blank.html';
12     navigator.serviceWorker.unregister(scope).then(
13         doTest,
14         unreached_rejection(t, 'Unregister should not fail')
15     );
16
17     function doTest() {
18         with_iframe(scope, t.step_func(onIframeLoad));
19     }
20
21     function onIframeLoad(frame) {
22         var w = frame.contentWindow;
23         if (reloaded) {
24             assert_true(w.navigator.serviceWorker.controller instanceof w.ServiceWorker,
25                         'controller should be a ServiceWorker object upon reload');
26             service_worker_unregister_and_done(t, scope);
27             return;
28         }
29
30         w.navigator.serviceWorker.register('worker-no-op.js',
31                                            {scope: 'blank.html'})
32         .then(function(registration) {
33             return wait_for_update(t, registration);
34           })
35         .then(function(worker) {
36             return wait_for_state(t, worker, 'activated');
37           })
38         .then(function() {
39             assert_equals(w.navigator.serviceWorker.controller, null,
40                           'controller should be null until the document is reloaded');
41             reloaded = true;
42             w.location.reload();
43           })
44         .catch(unreached_rejection(t));
45     }
46 });
47 </script>
48 </body>