OLD | NEW |
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 #include "content/child/background_sync/background_sync_provider.h" | 5 #include "content/child/background_sync/background_sync_provider.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "content/child/background_sync/background_sync_type_converters.h" | 9 #include "content/child/background_sync/background_sync_type_converters.h" |
10 #include "content/child/service_worker/web_service_worker_registration_impl.h" | 10 #include "content/child/service_worker/web_service_worker_registration_impl.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, | 142 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, |
143 BackgroundSyncError error, | 143 BackgroundSyncError error, |
144 const SyncRegistrationPtr& options) { | 144 const SyncRegistrationPtr& options) { |
145 // TODO(iclelland): Determine the correct error message to return in each case | 145 // TODO(iclelland): Determine the correct error message to return in each case |
146 scoped_ptr<blink::WebSyncRegistration> result; | 146 scoped_ptr<blink::WebSyncRegistration> result; |
147 switch (error) { | 147 switch (error) { |
148 case BACKGROUND_SYNC_ERROR_NONE: | 148 case BACKGROUND_SYNC_ERROR_NONE: |
149 if (!options.is_null()) | 149 if (!options.is_null()) |
150 result = | 150 result = |
151 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); | 151 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); |
152 callbacks->onSuccess(result.release()); | 152 callbacks->onSuccess(blink::adoptWebPtr(result.release())); |
153 break; | 153 break; |
154 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 154 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
155 NOTREACHED(); | 155 NOTREACHED(); |
156 break; | 156 break; |
157 case BACKGROUND_SYNC_ERROR_STORAGE: | 157 case BACKGROUND_SYNC_ERROR_STORAGE: |
158 callbacks->onError( | 158 callbacks->onError( |
159 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 159 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
160 "Background Sync is disabled.")); | 160 "Background Sync is disabled.")); |
161 break; | 161 break; |
162 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 162 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
163 callbacks->onError(new blink::WebSyncError( | 163 callbacks->onError(blink::WebSyncError( |
164 blink::WebSyncError::ErrorTypeNoPermission, | 164 blink::WebSyncError::ErrorTypeNoPermission, |
165 "Cannot register a sync event without a window client.")); | 165 "Cannot register a sync event without a window client.")); |
166 break; | 166 break; |
167 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 167 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
168 callbacks->onError( | 168 callbacks->onError( |
169 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 169 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
170 "No service worker is active.")); | 170 "No service worker is active.")); |
171 break; | 171 break; |
172 } | 172 } |
173 } | 173 } |
174 | 174 |
175 void BackgroundSyncProvider::UnregisterCallback( | 175 void BackgroundSyncProvider::UnregisterCallback( |
176 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks, | 176 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks, |
177 BackgroundSyncError error) { | 177 BackgroundSyncError error) { |
178 // TODO(iclelland): Determine the correct error message to return in each case | 178 // TODO(iclelland): Determine the correct error message to return in each case |
179 switch (error) { | 179 switch (error) { |
180 case BACKGROUND_SYNC_ERROR_NONE: | 180 case BACKGROUND_SYNC_ERROR_NONE: |
181 callbacks->onSuccess(new bool(true)); | 181 callbacks->onSuccess(true); |
182 break; | 182 break; |
183 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 183 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
184 callbacks->onSuccess(new bool(false)); | 184 callbacks->onSuccess(false); |
185 break; | 185 break; |
186 case BACKGROUND_SYNC_ERROR_STORAGE: | 186 case BACKGROUND_SYNC_ERROR_STORAGE: |
187 callbacks->onError( | 187 callbacks->onError( |
188 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 188 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
189 "Background Sync is disabled.")); | 189 "Background Sync is disabled.")); |
190 break; | 190 break; |
191 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 191 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
192 // This error should never be returned from | 192 // This error should never be returned from |
193 // BackgroundSyncManager::Unregister | 193 // BackgroundSyncManager::Unregister |
194 NOTREACHED(); | 194 NOTREACHED(); |
195 break; | 195 break; |
196 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 196 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
197 callbacks->onError( | 197 callbacks->onError( |
198 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 198 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
199 "No service worker is active.")); | 199 "No service worker is active.")); |
200 break; | 200 break; |
201 } | 201 } |
202 } | 202 } |
203 | 203 |
204 void BackgroundSyncProvider::GetRegistrationCallback( | 204 void BackgroundSyncProvider::GetRegistrationCallback( |
205 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, | 205 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, |
206 BackgroundSyncError error, | 206 BackgroundSyncError error, |
207 const SyncRegistrationPtr& options) { | 207 const SyncRegistrationPtr& options) { |
208 // TODO(iclelland): Determine the correct error message to return in each case | 208 // TODO(iclelland): Determine the correct error message to return in each case |
209 scoped_ptr<blink::WebSyncRegistration> result; | 209 scoped_ptr<blink::WebSyncRegistration> result; |
210 switch (error) { | 210 switch (error) { |
211 case BACKGROUND_SYNC_ERROR_NONE: | 211 case BACKGROUND_SYNC_ERROR_NONE: |
212 if (!options.is_null()) | 212 if (!options.is_null()) |
213 result = | 213 result = |
214 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); | 214 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); |
215 callbacks->onSuccess(result.release()); | 215 callbacks->onSuccess(blink::adoptWebPtr(result.release())); |
216 break; | 216 break; |
217 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 217 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
218 callbacks->onSuccess(nullptr); | 218 callbacks->onSuccess(nullptr); |
219 break; | 219 break; |
220 case BACKGROUND_SYNC_ERROR_STORAGE: | 220 case BACKGROUND_SYNC_ERROR_STORAGE: |
221 callbacks->onError( | 221 callbacks->onError( |
222 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 222 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
223 "Background Sync is disabled.")); | 223 "Background Sync is disabled.")); |
224 break; | 224 break; |
225 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 225 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
226 // This error should never be returned from | 226 // This error should never be returned from |
227 // BackgroundSyncManager::GetRegistration | 227 // BackgroundSyncManager::GetRegistration |
228 NOTREACHED(); | 228 NOTREACHED(); |
229 break; | 229 break; |
230 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 230 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
231 callbacks->onError( | 231 callbacks->onError( |
232 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 232 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
233 "No service worker is active.")); | 233 "No service worker is active.")); |
234 break; | 234 break; |
235 } | 235 } |
236 } | 236 } |
237 | 237 |
238 void BackgroundSyncProvider::GetRegistrationsCallback( | 238 void BackgroundSyncProvider::GetRegistrationsCallback( |
239 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks, | 239 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks, |
240 BackgroundSyncError error, | 240 BackgroundSyncError error, |
241 const mojo::Array<SyncRegistrationPtr>& registrations) { | 241 const mojo::Array<SyncRegistrationPtr>& registrations) { |
242 // TODO(iclelland): Determine the correct error message to return in each case | 242 // TODO(iclelland): Determine the correct error message to return in each case |
243 blink::WebVector<blink::WebSyncRegistration*>* results; | |
244 switch (error) { | 243 switch (error) { |
245 case BACKGROUND_SYNC_ERROR_NONE: | 244 case BACKGROUND_SYNC_ERROR_NONE: { |
246 results = new blink::WebVector<blink::WebSyncRegistration*>( | 245 blink::WebVector<blink::WebSyncRegistration*> results( |
247 registrations.size()); | 246 registrations.size()); |
248 for (size_t i = 0; i < registrations.size(); ++i) { | 247 for (size_t i = 0; i < registrations.size(); ++i) { |
249 (*results)[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>( | 248 results[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>( |
250 registrations[i]).release(); | 249 registrations[i]) |
| 250 .release(); |
251 } | 251 } |
252 callbacks->onSuccess(results); | 252 callbacks->onSuccess(results); |
253 break; | 253 break; |
| 254 } |
254 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 255 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
255 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 256 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
256 // These errors should never be returned from | 257 // These errors should never be returned from |
257 // BackgroundSyncManager::GetRegistrations | 258 // BackgroundSyncManager::GetRegistrations |
258 NOTREACHED(); | 259 NOTREACHED(); |
259 break; | 260 break; |
260 case BACKGROUND_SYNC_ERROR_STORAGE: | 261 case BACKGROUND_SYNC_ERROR_STORAGE: |
261 callbacks->onError( | 262 callbacks->onError( |
262 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 263 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
263 "Background Sync is disabled.")); | 264 "Background Sync is disabled.")); |
264 break; | 265 break; |
265 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 266 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
266 callbacks->onError( | 267 callbacks->onError( |
267 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 268 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
268 "No service worker is active.")); | 269 "No service worker is active.")); |
269 break; | 270 break; |
270 } | 271 } |
271 } | 272 } |
272 | 273 |
273 void BackgroundSyncProvider::GetPermissionStatusCallback( | 274 void BackgroundSyncProvider::GetPermissionStatusCallback( |
274 scoped_ptr<blink::WebSyncGetPermissionStatusCallbacks> callbacks, | 275 scoped_ptr<blink::WebSyncGetPermissionStatusCallbacks> callbacks, |
275 BackgroundSyncError error, | 276 BackgroundSyncError error, |
276 PermissionStatus status) { | 277 PermissionStatus status) { |
277 // TODO(iclelland): Determine the correct error message to return in each case | 278 // TODO(iclelland): Determine the correct error message to return in each case |
278 switch (error) { | 279 switch (error) { |
279 case BACKGROUND_SYNC_ERROR_NONE: | 280 case BACKGROUND_SYNC_ERROR_NONE: |
280 switch (status) { | 281 switch (status) { |
281 case PERMISSION_STATUS_GRANTED: | 282 case PERMISSION_STATUS_GRANTED: |
282 callbacks->onSuccess(new blink::WebSyncPermissionStatus( | 283 callbacks->onSuccess(blink::WebSyncPermissionStatusGranted); |
283 blink::WebSyncPermissionStatusGranted)); | |
284 break; | 284 break; |
285 case PERMISSION_STATUS_DENIED: | 285 case PERMISSION_STATUS_DENIED: |
286 callbacks->onSuccess(new blink::WebSyncPermissionStatus( | 286 callbacks->onSuccess(blink::WebSyncPermissionStatusDenied); |
287 blink::WebSyncPermissionStatusDenied)); | |
288 break; | 287 break; |
289 case PERMISSION_STATUS_ASK: | 288 case PERMISSION_STATUS_ASK: |
290 callbacks->onSuccess(new blink::WebSyncPermissionStatus( | 289 callbacks->onSuccess(blink::WebSyncPermissionStatusPrompt); |
291 blink::WebSyncPermissionStatusPrompt)); | |
292 break; | 290 break; |
293 } | 291 } |
294 break; | 292 break; |
295 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 293 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
296 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 294 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
297 // These errors should never be returned from | 295 // These errors should never be returned from |
298 // BackgroundSyncManager::GetPermissionStatus | 296 // BackgroundSyncManager::GetPermissionStatus |
299 NOTREACHED(); | 297 NOTREACHED(); |
300 break; | 298 break; |
301 case BACKGROUND_SYNC_ERROR_STORAGE: | 299 case BACKGROUND_SYNC_ERROR_STORAGE: |
302 callbacks->onError( | 300 callbacks->onError( |
303 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 301 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
304 "Background Sync is disabled.")); | 302 "Background Sync is disabled.")); |
305 break; | 303 break; |
306 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 304 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
307 callbacks->onError( | 305 callbacks->onError( |
308 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 306 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
309 "No service worker is active.")); | 307 "No service worker is active.")); |
310 break; | 308 break; |
311 } | 309 } |
312 } | 310 } |
313 | 311 |
314 BackgroundSyncServicePtr& | 312 BackgroundSyncServicePtr& |
315 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { | 313 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { |
316 if (!background_sync_service_.get()) { | 314 if (!background_sync_service_.get()) { |
317 service_registry_->ConnectToRemoteService( | 315 service_registry_->ConnectToRemoteService( |
318 mojo::GetProxy(&background_sync_service_)); | 316 mojo::GetProxy(&background_sync_service_)); |
319 } | 317 } |
320 return background_sync_service_; | 318 return background_sync_service_; |
321 } | 319 } |
322 | 320 |
323 } // namespace content | 321 } // namespace content |
OLD | NEW |