Upstream version 10.39.225.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     service_worker_unregister(t, scope).then(doTest);
13
14     function doTest() {
15         with_iframe(scope, t.step_func(onIframeLoad));
16     }
17
18     function onIframeLoad(frame) {
19         var w = frame.contentWindow;
20         if (reloaded) {
21             assert_true(w.navigator.serviceWorker.controller instanceof w.ServiceWorker,
22                         'controller should be a ServiceWorker object upon reload');
23             service_worker_unregister_and_done(t, scope);
24             return;
25         }
26
27         w.navigator.serviceWorker.register('empty-worker.js',
28                                            {scope: 'blank.html'})
29         .then(function(registration) {
30             return wait_for_update(t, registration);
31           })
32         .then(function(worker) {
33             return wait_for_state(t, worker, 'activated');
34           })
35         .then(function() {
36             assert_equals(w.navigator.serviceWorker.controller, null,
37                           'controller should be null until the document is reloaded');
38             reloaded = true;
39             w.location.reload();
40           })
41         .catch(unreached_rejection(t));
42     }
43 });
44 </script>
45 </body>