OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 <script src="resources/test-helpers.js"></script> | 4 <script src="resources/test-helpers.js"></script> |
5 <script> | 5 <script> |
6 var worker_url = 'resources/empty-worker.js'; | 6 var worker_url = 'resources/empty-worker.js'; |
7 | 7 |
8 async_test(function(t) { | 8 async_test(function(t) { |
9 var scope = 'subsequent-register' | 9 var scope = 'scope/subsequent-register'; |
10 var worker; | 10 var worker; |
11 | 11 |
12 service_worker_unregister_and_register(t, worker_url, scope) | 12 service_worker_unregister_and_register(t, worker_url, scope) |
13 .then(function(registered_worker) { | 13 .then(function(registered_worker) { |
14 worker = registered_worker; | 14 worker = registered_worker; |
15 return wait_for_state(t, worker, 'activated'); | 15 return wait_for_state(t, worker, 'activated'); |
16 }) | 16 }) |
17 .then(function() { | 17 .then(function() { |
18 return navigator.serviceWorker.register(worker_url, { scope: scope }); | 18 return navigator.serviceWorker.register(worker_url, { scope: scope }); |
19 }) | 19 }) |
20 .then(function(registered_worker) { | 20 .then(function(registered_worker) { |
21 assert_equals(registered_worker, worker, | 21 assert_equals(registered_worker, worker, |
22 'register should resolve to the same worker'); | 22 'register should resolve to the same worker'); |
23 assert_equals(registered_worker.state, 'activated', | 23 assert_equals(registered_worker.state, 'activated', |
24 'the worker should be in state "activated"'); | 24 'the worker should be in state "activated"'); |
25 service_worker_unregister_and_done(t, scope); | 25 service_worker_unregister_and_done(t, scope); |
26 }) | 26 }) |
27 .catch(unreached_rejection(t)); | 27 .catch(unreached_rejection(t)); |
28 }, 'Subsequent registrations resolve to the same worker'); | 28 }, 'Subsequent registrations resolve to the same worker'); |
29 | 29 |
30 async_test(function(t) { | 30 async_test(function(t) { |
31 var scope = 'concurrent-register' | 31 var scope = 'scope/concurrent-register'; |
32 var worker; | 32 var worker; |
33 | 33 |
34 navigator.serviceWorker.unregister(scope) | 34 navigator.serviceWorker.unregister(scope) |
35 .then(function() { | 35 .then(function() { |
36 var promises = []; | 36 var promises = []; |
37 for (var i = 0; i < 100; ++i) { | 37 for (var i = 0; i < 100; ++i) { |
38 promises.push(navigator.serviceWorker.register(worker_url, | 38 promises.push(navigator.serviceWorker.register(worker_url, |
39 { scope: scope })); | 39 { scope: scope })); |
40 } | 40 } |
41 return Promise.all(promises); | 41 return Promise.all(promises); |
42 }) | 42 }) |
43 .then(function(workers) { | 43 .then(function(workers) { |
44 workers.forEach(function(worker) { | 44 workers.forEach(function(worker) { |
45 assert_equals(worker, workers[0], | 45 assert_equals(worker, workers[0], |
46 'register should resolve to the same worker'); | 46 'register should resolve to the same worker'); |
47 }); | 47 }); |
48 service_worker_unregister_and_done(t, scope); | 48 service_worker_unregister_and_done(t, scope); |
49 }) | 49 }) |
50 .catch(unreached_rejection(t)); | 50 .catch(unreached_rejection(t)); |
51 }, 'Concurrent registrations resolve to the same worker'); | 51 }, 'Concurrent registrations resolve to the same worker'); |
| 52 |
| 53 async_test(function(t) { |
| 54 var scope = 'scope/multiple-frames'; |
| 55 var worker; |
| 56 |
| 57 service_worker_unregister_and_register(t, worker_url, scope) |
| 58 .then(function(registered_worker) { |
| 59 worker = registered_worker; |
| 60 return with_iframe('nothing-here.html'); |
| 61 }) |
| 62 .then(function(frame) { |
| 63 return frame.contentWindow.navigator.serviceWorker.register( |
| 64 worker_url, { scope: scope }); |
| 65 }) |
| 66 .then(function(registered_worker) { |
| 67 assert_not_equals(registered_worker, worker); |
| 68 service_worker_unregister_and_done(t, scope); |
| 69 }) |
| 70 .catch(unreached_rejection(t)); |
| 71 }, 'Registrations in separate frames resolve to different workers'); |
52 </script> | 72 </script> |
OLD | NEW |