| OLD | NEW |
| (Empty) | |
| 1 <!DOCTYPE html> |
| 2 <title>InstallPhaseEvent: waitUntil</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 function runTest(test, scope, onRegister) { |
| 8 var script = 'resources/install-phase-event-waituntil.js'; |
| 9 test.step(function() { |
| 10 service_worker_unregister_and_register( |
| 11 test, script, scope |
| 12 ).then( |
| 13 test.step_func(onRegister) |
| 14 ); |
| 15 }); |
| 16 } |
| 17 |
| 18 function syncWorker(test, worker, obj) { |
| 19 var channel = new MessageChannel(); |
| 20 channel.port1.onmessage = test.step_func(function(e) { |
| 21 var message = e.data; |
| 22 assert_equals(message, 'SYNC', 'Should receive sync message from worker.
'); |
| 23 obj.synced = true; |
| 24 channel.port1.postMessage('ACK'); |
| 25 }); |
| 26 worker.postMessage({port: channel.port2}, [channel.port2]); |
| 27 } |
| 28 |
| 29 async_test(function(t) { |
| 30 // Passing scope as the test switch for worker script. |
| 31 var scope = 'install-fulfilled'; |
| 32 var onRegister = function(worker) { |
| 33 var obj = {}; |
| 34 worker.onstatechange = t.step_func(function() { |
| 35 if (worker.state == 'installing') { |
| 36 syncWorker(t, worker, obj); |
| 37 } else if (worker.state == 'installed') { |
| 38 assert_true(obj.synced, |
| 39 'state should be "installed" after the waitUntil pro
mise for "oninstall" is fulfilled.'); |
| 40 service_worker_unregister_and_done(t, scope); |
| 41 } |
| 42 }); |
| 43 }; |
| 44 runTest(t, scope, onRegister); |
| 45 }, 'Test install event waitUntil fulfilled'); |
| 46 |
| 47 async_test(function(t) { |
| 48 var scope = 'activate-fulfilled'; |
| 49 var onRegister = function(worker) { |
| 50 var obj = {}; |
| 51 worker.onstatechange = t.step_func(function() { |
| 52 if (worker.state == 'activating') { |
| 53 syncWorker(t, worker, obj); |
| 54 } else if (worker.state == 'activated') { |
| 55 assert_true(obj.synced, |
| 56 'state should be "activated" after the waitUntil pro
mise for "onactivate" is fulfilled.'); |
| 57 service_worker_unregister_and_done(t, scope); |
| 58 } |
| 59 }); |
| 60 }; |
| 61 runTest(t, scope, onRegister); |
| 62 }, 'Test activate event waitUntil fulfilled'); |
| 63 |
| 64 async_test(function(t) { |
| 65 var scope = 'install-rejected'; |
| 66 var onRegister = function(worker) { |
| 67 worker.onstatechange = t.step_func(function() { |
| 68 console.log(worker.state); |
| 69 if (worker.state == 'redundant') |
| 70 service_worker_unregister_and_done(t, scope); |
| 71 }); |
| 72 }; |
| 73 runTest(t, scope, onRegister); |
| 74 }, 'Test install event waitUntil rejected'); |
| 75 |
| 76 async_test(function(t) { |
| 77 var scope = 'activate-rejected'; |
| 78 var onRegister = function(worker) { |
| 79 worker.onstatechange = t.step_func(function() { |
| 80 if (worker.state == 'redundant') |
| 81 service_worker_unregister_and_done(t, scope); |
| 82 }); |
| 83 }; |
| 84 runTest(t, scope, onRegister); |
| 85 }, 'Test activate event waitUntil rejected.'); |
| 86 |
| 87 async_test(function(t) { |
| 88 var scope = 'activate-multiple-fulfilled'; |
| 89 var onRegister = function(worker) { |
| 90 var obj1 = {}; |
| 91 var obj2 = {}; |
| 92 worker.onstatechange = t.step_func(function() { |
| 93 if (worker.state == 'activating') { |
| 94 syncWorker(t, worker, obj1); |
| 95 syncWorker(t, worker, obj2); |
| 96 } else if (worker.state == 'activated') { |
| 97 assert_true(obj1.synced && obj2.synced, |
| 98 'state should be "activated" after all waitUnitl pro
mises for "onactivate" are fulfilled.'); |
| 99 service_worker_unregister_and_done(t, scope); |
| 100 } |
| 101 }); |
| 102 }; |
| 103 runTest(t, scope, onRegister); |
| 104 }, 'Test InstallPhaseEvent multiple waitUntil fulfilled.'); |
| 105 |
| 106 async_test(function(t) { |
| 107 var scope = 'activate-reject-precedence'; |
| 108 var onRegister = function(worker) { |
| 109 worker.onstatechange = t.step_func(function() { |
| 110 if (worker.state == 'redundant') |
| 111 service_worker_unregister_and_done(t, scope); |
| 112 }); |
| 113 }; |
| 114 runTest(t, scope, onRegister); |
| 115 }, 'Test InstallPhaseEvent waitUntil reject precedence.'); |
| 116 </script> |
| OLD | NEW |