OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 var expectUpdate = false; | |
6 | |
7 var registerServiceWorkerPromise = new Promise(function(resolve, reject) { | |
8 expectUpdate = window.location.hash == '#expect_update'; | |
9 var serviceWorkerRegistration; | |
10 navigator.serviceWorker.register('sw.js').then(function() { | |
11 return navigator.serviceWorker.ready; | |
12 }).then(function(registration) { | |
13 serviceWorkerRegistration = registration; | |
14 | |
15 var promises = [registration.update()]; | |
16 if (expectUpdate) { | |
17 promises.push(new Promise(function(resolve) { | |
18 registration.onupdatefound = function(e) { | |
19 resolve(); | |
20 }; | |
21 })); | |
22 } | |
23 | |
24 return Promise.all(promises); | |
25 }).then(function() { | |
26 var installingWorker = serviceWorkerRegistration.installing; | |
27 if (installingWorker) { | |
28 // If there's an installing worker, wait for waiting worker to exist | |
29 // first. | |
30 installingWorker.onstatechange = function(e) { | |
31 if (installingWorker.state == 'installed') { | |
32 chrome.test.assertTrue(null != serviceWorkerRegistration.waiting); | |
Devlin
2015/12/10 18:16:57
prefer chrome.test.assertTrue(!!serviceWorkerRegis
lazyboy
2015/12/10 18:59:44
Done.
| |
33 resolve(serviceWorkerRegistration.active); | |
34 } | |
35 } | |
36 } else { | |
37 chrome.test.assertFalse(expectUpdate); | |
38 chrome.test.assertEq(null, serviceWorkerRegistration.waiting); | |
39 resolve(serviceWorkerRegistration.active); | |
40 } | |
41 }).catch(function(err) { | |
42 reject(err); | |
43 }); | |
44 }); | |
45 | |
46 registerServiceWorkerPromise.then(function(serviceWorker) { | |
47 var channel = new MessageChannel(); | |
48 channel.port1.onmessage = function(e) { | |
49 chrome.test.log('Message received from SW: ' + e.data); | |
50 var response = e.data; | |
51 if (expectUpdate) | |
52 response += ' (with update)'; | |
53 chrome.test.sendMessage(response); | |
54 }; | |
55 serviceWorker.postMessage('ping', [channel.port2]); | |
56 }).catch(function(err) { | |
57 chrome.test.log(err); | |
58 chrome.test.sendMessage('FAILURE_V2'); | |
59 }); | |
OLD | NEW |