| OLD | NEW |
| 1 // Allows a document to exercise the Budget API within a service worker by sendi
ng commands. | 1 // Allows a document to exercise the Budget API within a service worker by sendi
ng commands. |
| 2 | 2 |
| 3 self.addEventListener('message', function(workerEvent) { | 3 self.addEventListener('message', function(workerEvent) { |
| 4 port = workerEvent.data; | 4 port = workerEvent.data; |
| 5 | 5 |
| 6 // Listen to incoming commands on the message port. | 6 // Listen to incoming commands on the message port. |
| 7 port.onmessage = function(event) { | 7 port.onmessage = function(event) { |
| 8 if (typeof event.data != 'object' || !event.data.command) | 8 if (typeof event.data != 'object' || !event.data.command) |
| 9 return; | 9 return; |
| 10 var options = event.data.options || {}; | 10 var options = event.data.options || {}; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 break; | 39 break; |
| 40 | 40 |
| 41 case 'reserve': | 41 case 'reserve': |
| 42 navigator.budget.reserve('silent-push').then(success => { | 42 navigator.budget.reserve('silent-push').then(success => { |
| 43 port.postMessage({ | 43 port.postMessage({ |
| 44 command: event.data.command, | 44 command: event.data.command, |
| 45 success: success }); | 45 success: success }); |
| 46 }).catch(makeErrorHandler(event.data.command)); | 46 }).catch(makeErrorHandler(event.data.command)); |
| 47 break; | 47 break; |
| 48 | 48 |
| 49 case 'checkInterfaces': |
| 50 let success = false; |
| 51 let message = ""; |
| 52 try { |
| 53 success = 'BudgetService' in self && |
| 54 WorkerNavigator.prototype.hasOwnProperty('budget') && |
| 55 BudgetService.prototype.hasOwnProperty('getCost') && |
| 56 BudgetService.prototype.hasOwnProperty('getBudget') && |
| 57 BudgetService.prototype.hasOwnProperty('reserve') |
| 58 } catch(err) { |
| 59 message = err.message; |
| 60 } |
| 61 port.postMessage({ |
| 62 command: event.data.command, |
| 63 success: success, |
| 64 message: message}); |
| 65 break; |
| 66 |
| 49 default: | 67 default: |
| 50 port.postMessage({ | 68 port.postMessage({ |
| 51 command: 'error', | 69 command: 'error', |
| 52 errorMessage: 'Invalid command: ' + event.data.command }); | 70 errorMessage: 'Invalid command: ' + event.data.command }); |
| 53 break; | 71 break; |
| 54 } | 72 } |
| 55 }; | 73 }; |
| 56 | 74 |
| 57 // Notify the controller that the worker is now available. | 75 // Notify the controller that the worker is now available. |
| 58 port.postMessage('ready'); | 76 port.postMessage('ready'); |
| 59 }); | 77 }); |
| 60 | 78 |
| 61 function makeErrorHandler(command) { | 79 function makeErrorHandler(command) { |
| 62 return function(error) { | 80 return function(error) { |
| 63 var errorMessage = error ? error.message : 'unknown error'; | 81 var errorMessage = error ? error.message : 'unknown error'; |
| 64 port.postMessage({ | 82 port.postMessage({ |
| 65 command: command, | 83 command: command, |
| 66 success: false, | 84 success: false, |
| 67 errorMessage: errorMessage }); | 85 errorMessage: errorMessage }); |
| 68 }; | 86 }; |
| 69 } | 87 } |
| OLD | NEW |