Index: third_party/WebKit/LayoutTests/http/tests/budget/resources/instrumentation-service-worker.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/budget/resources/instrumentation-service-worker.js b/third_party/WebKit/LayoutTests/http/tests/budget/resources/instrumentation-service-worker.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..87b4e4a165b539a12f0f6cb6caae826a1148fc92 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/budget/resources/instrumentation-service-worker.js |
@@ -0,0 +1,56 @@ |
+// Allows a document to exercise the Budget API within a service worker by sending commands. |
+ |
+self.addEventListener('message', function(workerEvent) { |
+ port = workerEvent.data; |
+ |
+ // Listen to incoming commands on the message port. |
+ port.onmessage = function(event) { |
+ if (typeof event.data != 'object' || !event.data.command) |
+ return; |
+ var options = event.data.options || {} |
Peter Beverloo
2016/08/24 15:28:23
;
harkness
2016/08/24 16:22:50
Done.
|
+ switch (event.data.command) { |
+ |
+ case 'getCost': |
+ navigator.budget.getCost('silent-push').then(function(cost) { |
+ port.postMessage({ command: event.data.command, |
+ success: true, |
+ cost: cost }); |
Peter Beverloo
2016/08/24 15:28:23
The alignment of this (and lines 23+, 31+, 39+ and
harkness
2016/08/24 16:22:50
Done.
|
+ }).catch(makeErrorHandler(event.data.command)); |
+ break; |
+ |
+ case 'getCostInvalidType': |
+ navigator.budget.getCost('frobinator').then(function(cost) { |
+ port.postMessage({ command: event.data.command, |
+ success: true, |
+ cost: cost }); |
+ }).catch(makeErrorHandler(event.data.command)); |
+ break; |
+ |
+ case 'getBudget': |
+ navigator.budget.getBudget().then(budget => { |
+ port.postMessage({ command: event.data.command, |
+ success: true, |
+ budgetAt: budget[0].budgetAt, |
+ time: budget[0].time }); |
+ }).catch(makeErrorHandler(event.data.command)); |
+ break; |
+ |
+ default: |
+ port.postMessage({ command: 'error', |
+ errorMessage: 'Invalid command: ' + event.data.command }); |
+ break; |
+ } |
+ }; |
+ |
+ // Notify the controller that the worker is now available. |
+ port.postMessage('ready'); |
+}); |
+ |
+function makeErrorHandler(command) { |
+ return function(error) { |
+ var errorMessage = error ? error.message : 'unknown error'; |
+ port.postMessage({ command: command, |
+ success: false, |
+ errorMessage: errorMessage }); |
+ }; |
+} |