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

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

Issue 1437883002: [Background Sync] Align exposed API with spec (Closed) Base URL: https://chromium.googlesource.com/chromium/src@remove-periodic
Patch Set: Rebase Created 5 years, 1 month 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 var registrationReference = null;
9 9
10 // 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
(...skipping 17 matching lines...) Expand all
28 }) 28 })
29 .then(function(swRegistration) { 29 .then(function(swRegistration) {
30 sendResultToTest('ok - service worker registered'); 30 sendResultToTest('ok - service worker registered');
31 }) 31 })
32 .catch(sendErrorToTest); 32 .catch(sendErrorToTest);
33 } 33 }
34 34
35 function registerOneShot(tag) { 35 function registerOneShot(tag) {
36 navigator.serviceWorker.ready 36 navigator.serviceWorker.ready
37 .then(function(swRegistration) { 37 .then(function(swRegistration) {
38 return swRegistration.sync.register({'tag': tag}); 38 return swRegistration.sync.register(tag);
39 }) 39 })
40 .then(function(syncRegistration) { 40 .then(function() {
41 sendResultToTest('ok - ' + tag + ' registered'); 41 sendResultToTest('ok - ' + tag + ' registered');
42 }) 42 })
43 .catch(sendErrorToTest); 43 .catch(sendErrorToTest);
44 } 44 }
45 45
46 function registerOneShotFromServiceWorker(tag) { 46 function registerOneShotFromServiceWorker(tag) {
47 navigator.serviceWorker.ready 47 navigator.serviceWorker.ready
48 .then(function(swRegistration) { 48 .then(function(swRegistration) {
49 swRegistration.active.postMessage({action: 'registerOneShot', tag: tag}); 49 swRegistration.active.postMessage({action: 'registerOneShot', tag: tag});
50 sendResultToTest('ok - ' + tag + ' register sent to SW'); 50 sendResultToTest('ok - ' + tag + ' register sent to SW');
51 }) 51 })
52 .catch(sendErrorToTest); 52 .catch(sendErrorToTest);
53 } 53 }
54 54
55 function unregisterOneShot(tag) {
56 navigator.serviceWorker.ready
57 .then(function(swRegistration) {
58 return swRegistration.sync.getRegistration(tag);
59 })
60 .then(function(syncRegistration) {
61 if (!syncRegistration) {
62 sendResultToTest('error - ' + tag + ' not found');
63 return;
64 }
65 return syncRegistration.unregister();
66 })
67 .then(function() {
68 sendResultToTest('ok - ' + tag + ' unregistered');
69 })
70 .catch(sendErrorToTest);
71 }
72
73 function unregisterOneShotTwice(tag) {
74 navigator.serviceWorker.ready
75 .then(function(swRegistration) {
76 return swRegistration.sync.getRegistration(tag);
77 })
78 .then(function(syncRegistration) {
79 if (!syncRegistration) {
80 sendResultToTest('error - ' + tag + ' not found');
81 return;
82 }
83 return syncRegistration.unregister();
84 })
85 .then(function() {
86 return syncRegistration.unregister();
87 })
88 .then(sendErrorToTest, function() {
89 sendResultToTest('ok - ' + tag + ' failed to unregister twice');
90 })
91 .catch(sendErrorToTest);
92 }
93
94 function getRegistrationOneShot(tag) { 55 function getRegistrationOneShot(tag) {
95 navigator.serviceWorker.ready 56 navigator.serviceWorker.ready
96 .then(function(swRegistration) { 57 .then(function(swRegistration) {
97 return swRegistration.sync.getRegistration(tag); 58 return swRegistration.sync.getTags();
98 }) 59 })
99 .then(function(syncRegistration) { 60 .then(function(tags) {
100 if (!syncRegistration) { 61 if (tags.indexOf(tag) >= 0) {
62 sendResultToTest('ok - ' + tag + ' found');
63 } else {
101 sendResultToTest('error - ' + tag + ' not found'); 64 sendResultToTest('error - ' + tag + ' not found');
102 return; 65 return;
103 } 66 }
104 sendResultToTest('ok - ' + tag + ' found');
105 }) 67 })
106 .catch(sendErrorToTest); 68 .catch(sendErrorToTest);
107 } 69 }
108 70
109 function getRegistrationOneShotFromServiceWorker(tag) { 71 function getRegistrationOneShotFromServiceWorker(tag) {
110 navigator.serviceWorker.ready 72 navigator.serviceWorker.ready
111 .then(function(swRegistration) { 73 .then(function(swRegistration) {
112 swRegistration.active.postMessage( 74 swRegistration.active.postMessage(
113 {action: 'getRegistrationOneShot', tag: tag}); 75 {action: 'getRegistrationOneShot', tag: tag});
114 sendResultToTest('ok - getRegistration sent to SW'); 76 sendResultToTest('ok - getRegistration sent to SW');
115 }) 77 })
116 .catch(sendErrorToTest); 78 .catch(sendErrorToTest);
117 } 79 }
118 80
119 function getRegistrationsOneShot(tag) { 81 function getRegistrationsOneShot(tag) {
120 navigator.serviceWorker.ready 82 navigator.serviceWorker.ready
121 .then(function(swRegistration) { 83 .then(function(swRegistration) {
122 return swRegistration.sync.getRegistrations(); 84 return swRegistration.sync.getTags();
123 }) 85 })
124 .then(function(syncRegistrations) { 86 .then(function(tags) {
125 var tags = syncRegistrations.map(function(syncRegistration) {
126 return syncRegistration.tag;
127 });
128 sendResultToTest('ok - ' + tags.toString()); 87 sendResultToTest('ok - ' + tags.toString());
129 }) 88 })
130 .catch(sendErrorToTest); 89 .catch(sendErrorToTest);
131 } 90 }
132 91
133 function getRegistrationsOneShotFromServiceWorker() { 92 function getRegistrationsOneShotFromServiceWorker() {
134 navigator.serviceWorker.ready 93 navigator.serviceWorker.ready
135 .then(function(swRegistration) { 94 .then(function(swRegistration) {
136 swRegistration.active.postMessage({action: 'getRegistrationsOneShot'}); 95 swRegistration.active.postMessage({action: 'getRegistrationsOneShot'});
137 sendResultToTest('ok - getRegistrations sent to SW'); 96 sendResultToTest('ok - getRegistrations sent to SW');
(...skipping 12 matching lines...) Expand all
150 109
151 function rejectDelayedOneShot() { 110 function rejectDelayedOneShot() {
152 navigator.serviceWorker.ready 111 navigator.serviceWorker.ready
153 .then(function(swRegistration) { 112 .then(function(swRegistration) {
154 swRegistration.active.postMessage({action: 'rejectDelayedOneShot'}); 113 swRegistration.active.postMessage({action: 'rejectDelayedOneShot'});
155 sendResultToTest('ok - delay rejecting'); 114 sendResultToTest('ok - delay rejecting');
156 }) 115 })
157 .catch(sendErrorToTest); 116 .catch(sendErrorToTest);
158 } 117 }
159 118
160 function notifyWhenFinishedOneShot(tag) {
161 navigator.serviceWorker.ready
162 .then(function(swRegistration) {
163 swRegistration.active.postMessage(
164 {action: 'notifyWhenFinished', tag: tag});
165 })
166 .catch(sendErrorToTest);
167 }
168
169 function notifyWhenFinishedImmediateOneShot(tag) {
170 if (registrationReference == null) {
171 sendResultToTest('error - must call storeRegistration first');
172 return;
173 }
174
175 registrationReference.finished
176 .then(function(success) {
177 sendResultToTest('ok - ' + registrationReference.tag +
178 ' result: true')
179 }, function(err) {
180 sendResultToTest('ok - ' + registrationReference.tag +
181 ' result: false')
182 })
183 .catch(sendErrorToTest)
184 }
185
186
187 function storeRegistration(tag) {
188 navigator.serviceWorker.ready
189 .then(function(swRegistration) {
190 return swRegistration.sync.getRegistration(tag);
191 })
192 .then(function(syncRegistration) {
193 registrationReference = syncRegistration;
jkarlin 2015/11/13 01:32:18 Delete var registrationReference at the top of the
iclelland 2015/11/13 15:26:19 Good catch, thanks. Done.
194 sendResultToTest('ok - ' + tag + ' stored');
195 })
196 .catch(sendErrorToTest);
197 }
198 119
199 // Queue storing asynchronous results received from the Service Worker. Results 120 // Queue storing asynchronous results received from the Service Worker. Results
200 // are sent to the test when requested. 121 // are sent to the test when requested.
201 function ResultQueue() { 122 function ResultQueue() {
202 // Invariant: this.queue.length == 0 || this.pendingGets == 0 123 // Invariant: this.queue.length == 0 || this.pendingGets == 0
203 this.queue = []; 124 this.queue = [];
204 this.pendingGets = 0; 125 this.pendingGets = 0;
205 } 126 }
206 127
207 // Adds a data item to the queue. Will be sent to the test if there are 128 // Adds a data item to the queue. Will be sent to the test if there are
(...skipping 21 matching lines...) Expand all
229 // available, otherwise sends null. 150 // available, otherwise sends null.
230 ResultQueue.prototype.popImmediately = function() { 151 ResultQueue.prototype.popImmediately = function() {
231 sendResultToTest(this.queue.length ? this.queue.pop() : null); 152 sendResultToTest(this.queue.length ? this.queue.pop() : null);
232 }; 153 };
233 154
234 navigator.serviceWorker.addEventListener('message', function(event) { 155 navigator.serviceWorker.addEventListener('message', function(event) {
235 var message = event.data; 156 var message = event.data;
236 if (message.type == 'sync' || message.type === 'register') 157 if (message.type == 'sync' || message.type === 'register')
237 resultQueue.push(message.data); 158 resultQueue.push(message.data);
238 }, false); 159 }, false);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698