Chromium Code Reviews| Index: content/child/background_sync/background_sync_provider.cc |
| diff --git a/content/child/background_sync/background_sync_provider.cc b/content/child/background_sync/background_sync_provider.cc |
| index 28ebdf33293d621e8a0f05625a434ab4771342c2..a7069d68b571ff49bfceef7aadd70995e270f421 100644 |
| --- a/content/child/background_sync/background_sync_provider.cc |
| +++ b/content/child/background_sync/background_sync_provider.cc |
| @@ -143,6 +143,21 @@ void BackgroundSyncProvider::releaseRegistration(int64_t handle_id) { |
| GetBackgroundSyncServicePtr()->ReleaseRegistration(handle_id); |
| } |
| +void BackgroundSyncProvider::notifyWhenDone( |
| + int64_t handle_id, |
| + blink::WebSyncNotifyWhenDoneCallbacks* callbacks) { |
| + DCHECK(callbacks); |
| + |
| + scoped_ptr<blink::WebSyncNotifyWhenDoneCallbacks> callbacksPtr(callbacks); |
|
michaeln
2015/09/17 21:44:12
nit: callbacks_ptr
jkarlin
2015/09/18 12:03:20
Done.
|
| + |
| + // base::Unretained is safe here, as the mojo channel will be deleted (and |
| + // will wipe its callbacks) before 'this' is deleted. |
| + GetBackgroundSyncServicePtr()->NotifyWhenDone( |
| + handle_id, |
| + base::Bind(&BackgroundSyncProvider::NotifyWhenDoneCallback, |
| + base::Unretained(this), base::Passed(callbacksPtr.Pass()))); |
| +} |
| + |
| void BackgroundSyncProvider::DuplicateRegistrationHandle( |
| int handle_id, |
| const BackgroundSyncService::DuplicateRegistrationHandleCallback& |
| @@ -322,6 +337,44 @@ void BackgroundSyncProvider::GetPermissionStatusCallback( |
| } |
| } |
| +void BackgroundSyncProvider::NotifyWhenDoneCallback( |
| + scoped_ptr<blink::WebSyncNotifyWhenDoneCallbacks> callbacks, |
| + BackgroundSyncError error, |
| + BackgroundSyncState state) { |
| + switch (error) { |
| + case BACKGROUND_SYNC_ERROR_NONE: |
| + switch (state) { |
| + case BACKGROUND_SYNC_STATE_PENDING: |
| + case BACKGROUND_SYNC_STATE_FIRING: |
| + case BACKGROUND_SYNC_STATE_UNREGISTERED_WHILE_FIRING: |
| + NOTREACHED(); |
| + break; |
| + case BACKGROUND_SYNC_STATE_SUCCESS: |
| + callbacks->onSuccess(true); |
| + break; |
| + case BACKGROUND_SYNC_STATE_FAILED: |
| + case BACKGROUND_SYNC_STATE_UNREGISTERED: |
| + callbacks->onSuccess(false); |
| + break; |
| + } |
| + break; |
| + case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
| + case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
| + NOTREACHED(); |
| + break; |
| + case BACKGROUND_SYNC_ERROR_STORAGE: |
| + callbacks->onError( |
| + blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| + "Background Sync is disabled.")); |
| + break; |
| + case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
| + callbacks->onError( |
| + blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| + "No service worker is active.")); |
| + break; |
| + } |
| +} |
| + |
| BackgroundSyncServicePtr& |
| BackgroundSyncProvider::GetBackgroundSyncServicePtr() { |
| if (!background_sync_service_.get()) { |