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

Side by Side Diff: content/test/data/background_sync/background_sync_test_helpers.js

Issue 1344843003: [BackgroundSync] Add browser side support for SyncRegistration.done (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ncn_max
Patch Set: Address comments from PS7 Created 5 years, 3 months 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 var resultQueue = new ResultQueue(); 7 var resultQueue = new ResultQueue();
8 var registrationReference = null;
8 9
9 // Sends data back to the test. This must be in response to an earlier 10 // Sends data back to the test. This must be in response to an earlier
10 // request, but it's ok to respond asynchronously. The request blocks until 11 // request, but it's ok to respond asynchronously. The request blocks until
11 // the response is sent. 12 // the response is sent.
12 function sendResultToTest(result) { 13 function sendResultToTest(result) {
13 console.log('sendResultToTest: ' + result); 14 console.log('sendResultToTest: ' + result);
14 if (window.domAutomationController) { 15 if (window.domAutomationController) {
15 domAutomationController.send('' + result); 16 domAutomationController.send('' + result);
16 } 17 }
17 } 18 }
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return syncRegistration.tag; 107 return syncRegistration.tag;
107 }); 108 });
108 sendResultToTest('ok - ' + tags.toString()); 109 sendResultToTest('ok - ' + tags.toString());
109 }) 110 })
110 .catch(sendErrorToTest); 111 .catch(sendErrorToTest);
111 } 112 }
112 113
113 function completeDelayedOneShot() { 114 function completeDelayedOneShot() {
114 navigator.serviceWorker.ready 115 navigator.serviceWorker.ready
115 .then(function(swRegistration) { 116 .then(function(swRegistration) {
116 swRegistration.active.postMessage('completeDelayedOneShot'); 117 swRegistration.active.postMessage({action: 'completeDelayedOneShot'});
117 sendResultToTest('ok - delay completing'); 118 sendResultToTest('ok - delay completing');
118 }) 119 })
119 .catch(sendErrorToTest); 120 .catch(sendErrorToTest);
120 } 121 }
121 122
122 function rejectDelayedOneShot() { 123 function rejectDelayedOneShot() {
123 navigator.serviceWorker.ready 124 navigator.serviceWorker.ready
124 .then(function(swRegistration) { 125 .then(function(swRegistration) {
125 swRegistration.active.postMessage('rejectDelayedOneShot'); 126 swRegistration.active.postMessage({action: 'rejectDelayedOneShot'});
126 sendResultToTest('ok - delay rejecting'); 127 sendResultToTest('ok - delay rejecting');
127 }) 128 })
128 .catch(sendErrorToTest); 129 .catch(sendErrorToTest);
129 } 130 }
130 131
132 function notifyWhenDoneOneShot(tag) {
133 navigator.serviceWorker.ready
134 .then(function(swRegistration) {
135 swRegistration.active.postMessage({action: 'notifyWhenDone', tag: tag});
136 })
137 .catch(sendErrorToTest);
138 }
139
140 function notifyWhenDoneImmediateOneShot(tag) {
141 if (registrationReference == null) {
142 sendResultToTest('error - must call storeRegistration first');
143 return;
144 }
145
146 registrationReference.done
147 .then(function(success) {
148 sendResultToTest('ok - ' + registrationReference.tag +
149 ' result: ' + success)
150 }, function(err) {
151 sendResultToTest('error - ' + registrationReference.tag + ' failed');
152 })
153 .catch(sendErrorToTest)
154 }
155
156
157 function storeRegistration(tag) {
158 navigator.serviceWorker.ready
159 .then(function(swRegistration) {
160 return swRegistration.sync.getRegistration(tag);
161 })
162 .then(function(syncRegistration) {
163 registrationReference = syncRegistration;
164 sendResultToTest('ok - ' + tag + ' stored');
165 })
166 .catch(sendErrorToTest);
167 }
168
131 // Queue storing asynchronous results received from the Service Worker. Results 169 // Queue storing asynchronous results received from the Service Worker. Results
132 // are sent to the test when requested. 170 // are sent to the test when requested.
133 function ResultQueue() { 171 function ResultQueue() {
134 // Invariant: this.queue.length == 0 || this.pendingGets == 0 172 // Invariant: this.queue.length == 0 || this.pendingGets == 0
135 this.queue = []; 173 this.queue = [];
136 this.pendingGets = 0; 174 this.pendingGets = 0;
137 } 175 }
138 176
139 // Adds a data item to the queue. Will be sent to the test if there are 177 // Adds a data item to the queue. Will be sent to the test if there are
140 // pendingGets. 178 // pendingGets.
(...skipping 20 matching lines...) Expand all
161 // available, otherwise sends null. 199 // available, otherwise sends null.
162 ResultQueue.prototype.popImmediately = function() { 200 ResultQueue.prototype.popImmediately = function() {
163 sendResultToTest(this.queue.length ? this.queue.pop() : null); 201 sendResultToTest(this.queue.length ? this.queue.pop() : null);
164 }; 202 };
165 203
166 navigator.serviceWorker.addEventListener('message', function(event) { 204 navigator.serviceWorker.addEventListener('message', function(event) {
167 var message = event.data; 205 var message = event.data;
168 if (message.type == 'sync') 206 if (message.type == 'sync')
169 resultQueue.push(message.data); 207 resultQueue.push(message.data);
170 }, false); 208 }, false);
OLDNEW
« no previous file with comments | « content/common/background_sync_service.mojom ('k') | content/test/data/background_sync/service_worker.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698