Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1677)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/budget/resources/instrumentation-service-worker.js

Issue 2571453002: Expose the BudgetService interface to Workers. (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698