| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <title>Tests that postMessage works during and after terminating a service worke
r</title> | 2 <title>Tests that postMessage works during and after terminating a service worke
r</title> |
| 3 <script src="../../resources/testharness.js"></script> | 3 <script src="../../resources/testharness.js"></script> |
| 4 <script src="../../resources/testharnessreport.js"></script> | 4 <script src="../../resources/testharnessreport.js"></script> |
| 5 <script src="../../resources/testharness-helpers.js"></script> | 5 <script src="../../resources/testharness-helpers.js"></script> |
| 6 <script src="../resources/test-helpers.js"></script> | 6 <script src="../resources/test-helpers.js"></script> |
| 7 <script> | 7 <script> |
| 8 function send_ping(worker) { | 8 function send_ping(worker) { |
| 9 return new Promise(function(resolve) { | 9 return new Promise(function(resolve) { |
| 10 var channel = new MessageChannel(); | 10 var channel = new MessageChannel(); |
| 11 channel.port1.onmessage = function(message) { | 11 channel.port1.onmessage = function(message) { |
| 12 resolve(message.data); | 12 resolve(message.data); |
| 13 }; | 13 }; |
| 14 worker.postMessage({port: channel.port2}, [channel.port2]); | 14 worker.postMessage({port: channel.port2}, [channel.port2]); |
| 15 }); | 15 }); |
| 16 } | 16 } |
| 17 | 17 |
| 18 promise_test(function(test) { | 18 promise_test(function(test) { |
| 19 var worker = 'resources/ping-worker.js'; | 19 var worker = 'resources/ping-worker.js'; |
| 20 var scope = 'resources/blank.html'; | 20 var scope = 'resources/blank.html'; |
| 21 var sw; | 21 var sw; |
| 22 return service_worker_unregister_and_register(test, worker, scope) | 22 return service_worker_unregister_and_register(test, worker, scope) |
| 23 .then(function(registration) { | 23 .then(function(registration) { |
| 24 return wait_for_update(test, registration); | 24 sw = registration.installing; |
| 25 }) | |
| 26 .then(function(worker) { | |
| 27 sw = worker; | |
| 28 return send_ping(sw); | 25 return send_ping(sw); |
| 29 }) | 26 }) |
| 30 .then(function(reply) { | 27 .then(function(reply) { |
| 31 assert_equals(reply, 0); | 28 assert_equals(reply, 0); |
| 32 return internals.terminateServiceWorker(sw); | 29 return internals.terminateServiceWorker(sw); |
| 33 }) | 30 }) |
| 34 .then(function() { | 31 .then(function() { |
| 35 return send_ping(sw); | 32 return send_ping(sw); |
| 36 }) | 33 }) |
| 37 .then(function(reply) { | 34 .then(function(reply) { |
| 38 assert_equals(reply, 0); | 35 assert_equals(reply, 0); |
| 39 return send_ping(sw); | 36 return send_ping(sw); |
| 40 }) | 37 }) |
| 41 .then(function(reply) { | 38 .then(function(reply) { |
| 42 assert_equals(reply, 1); | 39 assert_equals(reply, 1); |
| 43 return service_worker_unregister_and_done(test, scope); | 40 return service_worker_unregister_and_done(test, scope); |
| 44 }); | 41 }); |
| 45 }, 'postMessage to a terminated service worker.'); | 42 }, 'postMessage to a terminated service worker.'); |
| 46 </script> | 43 </script> |
| OLD | NEW |