OLD | NEW |
1 // TODO(nhiroki): stop using global states because service workers can be killed | |
2 // at any point (http://crbug.com/558244). | |
3 self.state = 'starting'; | 1 self.state = 'starting'; |
4 | 2 |
5 self.addEventListener('install', function() { | 3 self.addEventListener('install', function() { |
6 self.state = 'installing'; | 4 self.state = 'installing'; |
7 }); | 5 }); |
8 | 6 |
9 self.addEventListener('activate', function() { | |
10 self.state = 'activating'; | |
11 }); | |
12 | |
13 self.addEventListener('message', function(event) { | 7 self.addEventListener('message', function(event) { |
14 var port = event.data.port; | 8 var port = event.data.port; |
15 if (self.state !== 'installing') { | 9 if (self.state !== 'installing') { |
16 port.postMessage('FAIL: Worker should be waiting in installed state'); | 10 port.postMessage('FAIL: Worker should be waiting in installed state'); |
17 return; | 11 return; |
18 } | 12 } |
19 event.waitUntil(self.skipWaiting() | 13 self.skipWaiting() |
20 .then(function(result) { | 14 .then(function(result) { |
21 if (result !== undefined) { | 15 if (result !== undefined) { |
22 port.postMessage('FAIL: Promise should be resolved with undefined'); | 16 port.postMessage('FAIL: Promise should be resolved with undefined'); |
23 return; | 17 return; |
24 } | 18 } |
25 if (self.state !== 'activating') { | |
26 port.postMessage( | |
27 'FAIL: Promise should be resolved after worker activated'); | |
28 return; | |
29 } | |
30 port.postMessage('PASS'); | 19 port.postMessage('PASS'); |
31 }) | 20 }) |
32 .catch(function(e) { | 21 .catch(function(e) { |
33 port.postMessage('FAIL: unexpected exception: ' + e); | 22 port.postMessage('FAIL: unexpected exception: ' + e); |
34 })); | 23 }); |
35 }); | 24 }); |
OLD | NEW |