| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 // The ResultQueue is a mechanism for passing messages back to the test | 7 // The ResultQueue is a mechanism for passing messages back to the test |
| 8 // framework. | 8 // framework. |
| 9 var resultQueue = new ResultQueue(); | 9 var resultQueue = new ResultQueue(); |
| 10 | 10 |
| 11 // Waits for the given ServiceWorkerRegistration to become ready. |
| 12 // Shim for https://github.com/w3c/ServiceWorker/issues/770. |
| 13 function swRegistrationReady(reg) { |
| 14 return new Promise((resolve, reject) => { |
| 15 if (reg.active) { |
| 16 resolve(); |
| 17 return; |
| 18 } |
| 19 |
| 20 if (!reg.installing && !reg.waiting) { |
| 21 reject(Error('Install failed')); |
| 22 return; |
| 23 } |
| 24 |
| 25 (reg.installing || reg.waiting).addEventListener('statechange', function() { |
| 26 if (this.state == 'redundant') { |
| 27 reject(Error('Install failed')); |
| 28 } else if (this.state == 'activated') { |
| 29 resolve(); |
| 30 } |
| 31 }); |
| 32 }); |
| 33 } |
| 34 |
| 11 function registerServiceWorker() { | 35 function registerServiceWorker() { |
| 12 // The base dir used to resolve service_worker.js. | 36 // The base dir used to resolve service_worker.js. |
| 13 navigator.serviceWorker.register('service_worker.js', {scope: './'}).then( | 37 navigator.serviceWorker.register('service_worker.js', { |
| 14 function(swRegistration) { | 38 scope: './' |
| 15 sendResultToTest('ok - service worker registered'); | 39 }).then(swRegistrationReady).then(() => { |
| 16 }, sendErrorToTest); | 40 sendResultToTest('ok - service worker registered'); |
| 41 }).catch(sendErrorToTest); |
| 17 } | 42 } |
| 18 | 43 |
| 19 // Query for the budget and return the current total. | 44 // Query for the budget and return the current total. |
| 20 function documentGetBudget() { | 45 function documentGetBudget() { |
| 21 navigator.budget.getBudget().then(function(budget) { | 46 navigator.budget.getBudget().then(function(budget) { |
| 22 sendResultToTest("ok - budget returned value of " + budget[0].budgetAt); | 47 sendResultToTest("ok - budget returned value of " + budget[0].budgetAt); |
| 23 }, function() { | 48 }, function() { |
| 24 sendResultToTest("failed - unable to get budget values"); | 49 sendResultToTest("failed - unable to get budget values"); |
| 25 }); | 50 }); |
| 26 } | 51 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 53 } | 78 } |
| 54 } | 79 } |
| 55 | 80 |
| 56 navigator.serviceWorker.addEventListener('message', function(event) { | 81 navigator.serviceWorker.addEventListener('message', function(event) { |
| 57 var message = JSON.parse(event.data); | 82 var message = JSON.parse(event.data); |
| 58 if (message.type == 'push') | 83 if (message.type == 'push') |
| 59 resultQueue.push(message.data); | 84 resultQueue.push(message.data); |
| 60 else | 85 else |
| 61 sendResultToTest(message.data); | 86 sendResultToTest(message.data); |
| 62 }, false); | 87 }, false); |
| OLD | NEW |