| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 delete this; | 220 delete this; |
| 221 } | 221 } |
| 222 | 222 |
| 223 void BackgroundSyncProvider::RegisterCallback( | 223 void BackgroundSyncProvider::RegisterCallback( |
| 224 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, | 224 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, |
| 225 BackgroundSyncError error, | 225 BackgroundSyncError error, |
| 226 const SyncRegistrationPtr& options) { | 226 const SyncRegistrationPtr& options) { |
| 227 // TODO(iclelland): Determine the correct error message to return in each case | 227 // TODO(iclelland): Determine the correct error message to return in each case |
| 228 scoped_ptr<blink::WebSyncRegistration> result; | 228 scoped_ptr<blink::WebSyncRegistration> result; |
| 229 switch (error) { | 229 switch (error) { |
| 230 case BACKGROUND_SYNC_ERROR_NONE: | 230 case BackgroundSyncError::NONE: |
| 231 if (!options.is_null()) | 231 if (!options.is_null()) |
| 232 result = | 232 result = |
| 233 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); | 233 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); |
| 234 callbacks->onSuccess(blink::adoptWebPtr(result.release())); | 234 callbacks->onSuccess(blink::adoptWebPtr(result.release())); |
| 235 break; | 235 break; |
| 236 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 236 case BackgroundSyncError::NOT_FOUND: |
| 237 NOTREACHED(); | 237 NOTREACHED(); |
| 238 break; | 238 break; |
| 239 case BACKGROUND_SYNC_ERROR_STORAGE: | 239 case BackgroundSyncError::STORAGE: |
| 240 callbacks->onError( | 240 callbacks->onError( |
| 241 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 241 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 242 "Background Sync is disabled.")); | 242 "Background Sync is disabled.")); |
| 243 break; | 243 break; |
| 244 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 244 case BackgroundSyncError::NOT_ALLOWED: |
| 245 callbacks->onError( | 245 callbacks->onError( |
| 246 blink::WebSyncError(blink::WebSyncError::ErrorTypeNoPermission, | 246 blink::WebSyncError(blink::WebSyncError::ErrorTypeNoPermission, |
| 247 "Attempted to register a sync event without a " | 247 "Attempted to register a sync event without a " |
| 248 "window or registration tag too long.")); | 248 "window or registration tag too long.")); |
| 249 break; | 249 break; |
| 250 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 250 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 251 callbacks->onError( | 251 callbacks->onError( |
| 252 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 252 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 253 "No service worker is active.")); | 253 "No service worker is active.")); |
| 254 break; | 254 break; |
| 255 } | 255 } |
| 256 } | 256 } |
| 257 | 257 |
| 258 void BackgroundSyncProvider::UnregisterCallback( | 258 void BackgroundSyncProvider::UnregisterCallback( |
| 259 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks, | 259 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks, |
| 260 BackgroundSyncError error) { | 260 BackgroundSyncError error) { |
| 261 // TODO(iclelland): Determine the correct error message to return in each case | 261 // TODO(iclelland): Determine the correct error message to return in each case |
| 262 switch (error) { | 262 switch (error) { |
| 263 case BACKGROUND_SYNC_ERROR_NONE: | 263 case BackgroundSyncError::NONE: |
| 264 callbacks->onSuccess(true); | 264 callbacks->onSuccess(true); |
| 265 break; | 265 break; |
| 266 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 266 case BackgroundSyncError::NOT_FOUND: |
| 267 callbacks->onSuccess(false); | 267 callbacks->onSuccess(false); |
| 268 break; | 268 break; |
| 269 case BACKGROUND_SYNC_ERROR_STORAGE: | 269 case BackgroundSyncError::STORAGE: |
| 270 callbacks->onError( | 270 callbacks->onError( |
| 271 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 271 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 272 "Background Sync is disabled.")); | 272 "Background Sync is disabled.")); |
| 273 break; | 273 break; |
| 274 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 274 case BackgroundSyncError::NOT_ALLOWED: |
| 275 // This error should never be returned from | 275 // This error should never be returned from |
| 276 // BackgroundSyncManager::Unregister | 276 // BackgroundSyncManager::Unregister |
| 277 NOTREACHED(); | 277 NOTREACHED(); |
| 278 break; | 278 break; |
| 279 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 279 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 280 callbacks->onError( | 280 callbacks->onError( |
| 281 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 281 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 282 "No service worker is active.")); | 282 "No service worker is active.")); |
| 283 break; | 283 break; |
| 284 } | 284 } |
| 285 } | 285 } |
| 286 | 286 |
| 287 void BackgroundSyncProvider::GetRegistrationCallback( | 287 void BackgroundSyncProvider::GetRegistrationCallback( |
| 288 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, | 288 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, |
| 289 BackgroundSyncError error, | 289 BackgroundSyncError error, |
| 290 const SyncRegistrationPtr& options) { | 290 const SyncRegistrationPtr& options) { |
| 291 // TODO(iclelland): Determine the correct error message to return in each case | 291 // TODO(iclelland): Determine the correct error message to return in each case |
| 292 scoped_ptr<blink::WebSyncRegistration> result; | 292 scoped_ptr<blink::WebSyncRegistration> result; |
| 293 switch (error) { | 293 switch (error) { |
| 294 case BACKGROUND_SYNC_ERROR_NONE: | 294 case BackgroundSyncError::NONE: |
| 295 if (!options.is_null()) | 295 if (!options.is_null()) |
| 296 result = | 296 result = |
| 297 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); | 297 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); |
| 298 callbacks->onSuccess(blink::adoptWebPtr(result.release())); | 298 callbacks->onSuccess(blink::adoptWebPtr(result.release())); |
| 299 break; | 299 break; |
| 300 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 300 case BackgroundSyncError::NOT_FOUND: |
| 301 callbacks->onSuccess(nullptr); | 301 callbacks->onSuccess(nullptr); |
| 302 break; | 302 break; |
| 303 case BACKGROUND_SYNC_ERROR_STORAGE: | 303 case BackgroundSyncError::STORAGE: |
| 304 callbacks->onError( | 304 callbacks->onError( |
| 305 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 305 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 306 "Background Sync is disabled.")); | 306 "Background Sync is disabled.")); |
| 307 break; | 307 break; |
| 308 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 308 case BackgroundSyncError::NOT_ALLOWED: |
| 309 // This error should never be returned from | 309 // This error should never be returned from |
| 310 // BackgroundSyncManager::GetRegistration | 310 // BackgroundSyncManager::GetRegistration |
| 311 NOTREACHED(); | 311 NOTREACHED(); |
| 312 break; | 312 break; |
| 313 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 313 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 314 callbacks->onError( | 314 callbacks->onError( |
| 315 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 315 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 316 "No service worker is active.")); | 316 "No service worker is active.")); |
| 317 break; | 317 break; |
| 318 } | 318 } |
| 319 } | 319 } |
| 320 | 320 |
| 321 void BackgroundSyncProvider::GetRegistrationsCallback( | 321 void BackgroundSyncProvider::GetRegistrationsCallback( |
| 322 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks, | 322 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks, |
| 323 BackgroundSyncError error, | 323 BackgroundSyncError error, |
| 324 const mojo::Array<SyncRegistrationPtr>& registrations) { | 324 const mojo::Array<SyncRegistrationPtr>& registrations) { |
| 325 // TODO(iclelland): Determine the correct error message to return in each case | 325 // TODO(iclelland): Determine the correct error message to return in each case |
| 326 switch (error) { | 326 switch (error) { |
| 327 case BACKGROUND_SYNC_ERROR_NONE: { | 327 case BackgroundSyncError::NONE: { |
| 328 blink::WebVector<blink::WebSyncRegistration*> results( | 328 blink::WebVector<blink::WebSyncRegistration*> results( |
| 329 registrations.size()); | 329 registrations.size()); |
| 330 for (size_t i = 0; i < registrations.size(); ++i) { | 330 for (size_t i = 0; i < registrations.size(); ++i) { |
| 331 results[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>( | 331 results[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>( |
| 332 registrations[i]) | 332 registrations[i]) |
| 333 .release(); | 333 .release(); |
| 334 } | 334 } |
| 335 callbacks->onSuccess(results); | 335 callbacks->onSuccess(results); |
| 336 break; | 336 break; |
| 337 } | 337 } |
| 338 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 338 case BackgroundSyncError::NOT_FOUND: |
| 339 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 339 case BackgroundSyncError::NOT_ALLOWED: |
| 340 // These errors should never be returned from | 340 // These errors should never be returned from |
| 341 // BackgroundSyncManager::GetRegistrations | 341 // BackgroundSyncManager::GetRegistrations |
| 342 NOTREACHED(); | 342 NOTREACHED(); |
| 343 break; | 343 break; |
| 344 case BACKGROUND_SYNC_ERROR_STORAGE: | 344 case BackgroundSyncError::STORAGE: |
| 345 callbacks->onError( | 345 callbacks->onError( |
| 346 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 346 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 347 "Background Sync is disabled.")); | 347 "Background Sync is disabled.")); |
| 348 break; | 348 break; |
| 349 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 349 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 350 callbacks->onError( | 350 callbacks->onError( |
| 351 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 351 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 352 "No service worker is active.")); | 352 "No service worker is active.")); |
| 353 break; | 353 break; |
| 354 } | 354 } |
| 355 } | 355 } |
| 356 | 356 |
| 357 void BackgroundSyncProvider::GetPermissionStatusCallback( | 357 void BackgroundSyncProvider::GetPermissionStatusCallback( |
| 358 scoped_ptr<blink::WebSyncGetPermissionStatusCallbacks> callbacks, | 358 scoped_ptr<blink::WebSyncGetPermissionStatusCallbacks> callbacks, |
| 359 BackgroundSyncError error, | 359 BackgroundSyncError error, |
| 360 PermissionStatus status) { | 360 PermissionStatus status) { |
| 361 // TODO(iclelland): Determine the correct error message to return in each case | 361 // TODO(iclelland): Determine the correct error message to return in each case |
| 362 switch (error) { | 362 switch (error) { |
| 363 case BACKGROUND_SYNC_ERROR_NONE: | 363 case BackgroundSyncError::NONE: |
| 364 switch (status) { | 364 switch (status) { |
| 365 case PERMISSION_STATUS_GRANTED: | 365 case PermissionStatus::GRANTED: |
| 366 callbacks->onSuccess(blink::WebSyncPermissionStatusGranted); | 366 callbacks->onSuccess(blink::WebSyncPermissionStatusGranted); |
| 367 break; | 367 break; |
| 368 case PERMISSION_STATUS_DENIED: | 368 case PermissionStatus::DENIED: |
| 369 callbacks->onSuccess(blink::WebSyncPermissionStatusDenied); | 369 callbacks->onSuccess(blink::WebSyncPermissionStatusDenied); |
| 370 break; | 370 break; |
| 371 case PERMISSION_STATUS_ASK: | 371 case PermissionStatus::ASK: |
| 372 callbacks->onSuccess(blink::WebSyncPermissionStatusPrompt); | 372 callbacks->onSuccess(blink::WebSyncPermissionStatusPrompt); |
| 373 break; | 373 break; |
| 374 } | 374 } |
| 375 break; | 375 break; |
| 376 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 376 case BackgroundSyncError::NOT_FOUND: |
| 377 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 377 case BackgroundSyncError::NOT_ALLOWED: |
| 378 // These errors should never be returned from | 378 // These errors should never be returned from |
| 379 // BackgroundSyncManager::GetPermissionStatus | 379 // BackgroundSyncManager::GetPermissionStatus |
| 380 NOTREACHED(); | 380 NOTREACHED(); |
| 381 break; | 381 break; |
| 382 case BACKGROUND_SYNC_ERROR_STORAGE: | 382 case BackgroundSyncError::STORAGE: |
| 383 callbacks->onError( | 383 callbacks->onError( |
| 384 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 384 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 385 "Background Sync is disabled.")); | 385 "Background Sync is disabled.")); |
| 386 break; | 386 break; |
| 387 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 387 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 388 callbacks->onError( | 388 callbacks->onError( |
| 389 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 389 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 390 "No service worker is active.")); | 390 "No service worker is active.")); |
| 391 break; | 391 break; |
| 392 } | 392 } |
| 393 } | 393 } |
| 394 | 394 |
| 395 void BackgroundSyncProvider::NotifyWhenFinishedCallback( | 395 void BackgroundSyncProvider::NotifyWhenFinishedCallback( |
| 396 scoped_ptr<blink::WebSyncNotifyWhenFinishedCallbacks> callbacks, | 396 scoped_ptr<blink::WebSyncNotifyWhenFinishedCallbacks> callbacks, |
| 397 BackgroundSyncError error, | 397 BackgroundSyncError error, |
| 398 BackgroundSyncState state) { | 398 BackgroundSyncState state) { |
| 399 switch (error) { | 399 switch (error) { |
| 400 case BACKGROUND_SYNC_ERROR_NONE: | 400 case BackgroundSyncError::NONE: |
| 401 switch (state) { | 401 switch (state) { |
| 402 case BACKGROUND_SYNC_STATE_PENDING: | 402 case BackgroundSyncState::PENDING: |
| 403 case BACKGROUND_SYNC_STATE_FIRING: | 403 case BackgroundSyncState::FIRING: |
| 404 case BACKGROUND_SYNC_STATE_REREGISTERED_WHILE_FIRING: | 404 case BackgroundSyncState::REREGISTERED_WHILE_FIRING: |
| 405 case BACKGROUND_SYNC_STATE_UNREGISTERED_WHILE_FIRING: | 405 case BackgroundSyncState::UNREGISTERED_WHILE_FIRING: |
| 406 NOTREACHED(); | 406 NOTREACHED(); |
| 407 break; | 407 break; |
| 408 case BACKGROUND_SYNC_STATE_SUCCESS: | 408 case BackgroundSyncState::SUCCESS: |
| 409 callbacks->onSuccess(); | 409 callbacks->onSuccess(); |
| 410 break; | 410 break; |
| 411 case BACKGROUND_SYNC_STATE_FAILED: | 411 case BackgroundSyncState::FAILED: |
| 412 case BACKGROUND_SYNC_STATE_UNREGISTERED: | 412 case BackgroundSyncState::UNREGISTERED: |
| 413 callbacks->onError(blink::WebSyncError( | 413 callbacks->onError(blink::WebSyncError( |
| 414 blink::WebSyncError::ErrorTypeAbort, | 414 blink::WebSyncError::ErrorTypeAbort, |
| 415 "Sync failed, unregistered, or overwritten.")); | 415 "Sync failed, unregistered, or overwritten.")); |
| 416 break; | 416 break; |
| 417 } | 417 } |
| 418 break; | 418 break; |
| 419 case BACKGROUND_SYNC_ERROR_NOT_FOUND: | 419 case BackgroundSyncError::NOT_FOUND: |
| 420 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: | 420 case BackgroundSyncError::NOT_ALLOWED: |
| 421 NOTREACHED(); | 421 NOTREACHED(); |
| 422 break; | 422 break; |
| 423 case BACKGROUND_SYNC_ERROR_STORAGE: | 423 case BackgroundSyncError::STORAGE: |
| 424 callbacks->onError( | 424 callbacks->onError( |
| 425 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 425 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 426 "Background Sync is disabled.")); | 426 "Background Sync is disabled.")); |
| 427 break; | 427 break; |
| 428 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 428 case BackgroundSyncError::NO_SERVICE_WORKER: |
| 429 callbacks->onError( | 429 callbacks->onError( |
| 430 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 430 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 431 "No service worker is active.")); | 431 "No service worker is active.")); |
| 432 break; | 432 break; |
| 433 } | 433 } |
| 434 } | 434 } |
| 435 | 435 |
| 436 BackgroundSyncServicePtr& | 436 BackgroundSyncServicePtr& |
| 437 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { | 437 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { |
| 438 if (!background_sync_service_.get()) { | 438 if (!background_sync_service_.get()) { |
| 439 mojo::InterfaceRequest<BackgroundSyncService> request = | 439 mojo::InterfaceRequest<BackgroundSyncService> request = |
| 440 mojo::GetProxy(&background_sync_service_); | 440 mojo::GetProxy(&background_sync_service_); |
| 441 main_thread_task_runner_->PostTask( | 441 main_thread_task_runner_->PostTask( |
| 442 FROM_HERE, | 442 FROM_HERE, |
| 443 base::Bind(&ConnectToServiceOnMainThread, base::Passed(&request))); | 443 base::Bind(&ConnectToServiceOnMainThread, base::Passed(&request))); |
| 444 } | 444 } |
| 445 return background_sync_service_; | 445 return background_sync_service_; |
| 446 } | 446 } |
| 447 | 447 |
| 448 } // namespace content | 448 } // namespace content |
| OLD | NEW |