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 20 matching lines...) Expand all Loading... |
31 case 'getBudget': | 31 case 'getBudget': |
32 navigator.budget.getBudget().then(budget => { | 32 navigator.budget.getBudget().then(budget => { |
33 port.postMessage({ | 33 port.postMessage({ |
34 command: event.data.command, | 34 command: event.data.command, |
35 success: true, | 35 success: true, |
36 budgetAt: budget[0].budgetAt, | 36 budgetAt: budget[0].budgetAt, |
37 time: budget[0].time }); | 37 time: budget[0].time }); |
38 }).catch(makeErrorHandler(event.data.command)); | 38 }).catch(makeErrorHandler(event.data.command)); |
39 break; | 39 break; |
40 | 40 |
| 41 case 'reserve': |
| 42 navigator.budget.reserve('silent-push').then(success => { |
| 43 port.postMessage({ |
| 44 command: event.data.command, |
| 45 success: success }); |
| 46 }).catch(makeErrorHandler(event.data.command)); |
| 47 break; |
| 48 |
41 default: | 49 default: |
42 port.postMessage({ | 50 port.postMessage({ |
43 command: 'error', | 51 command: 'error', |
44 errorMessage: 'Invalid command: ' + event.data.command }); | 52 errorMessage: 'Invalid command: ' + event.data.command }); |
45 break; | 53 break; |
46 } | 54 } |
47 }; | 55 }; |
48 | 56 |
49 // Notify the controller that the worker is now available. | 57 // Notify the controller that the worker is now available. |
50 port.postMessage('ready'); | 58 port.postMessage('ready'); |
51 }); | 59 }); |
52 | 60 |
53 function makeErrorHandler(command) { | 61 function makeErrorHandler(command) { |
54 return function(error) { | 62 return function(error) { |
55 var errorMessage = error ? error.message : 'unknown error'; | 63 var errorMessage = error ? error.message : 'unknown error'; |
56 port.postMessage({ | 64 port.postMessage({ |
57 command: command, | 65 command: command, |
58 success: false, | 66 success: false, |
59 errorMessage: errorMessage }); | 67 errorMessage: errorMessage }); |
60 }; | 68 }; |
61 } | 69 } |
OLD | NEW |