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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 mojo::ConvertTo<BackgroundSyncPeriodicity>(periodicity), | 136 mojo::ConvertTo<BackgroundSyncPeriodicity>(periodicity), |
137 service_worker_registration_id, | 137 service_worker_registration_id, |
138 base::Bind(&BackgroundSyncProvider::GetPermissionStatusCallback, | 138 base::Bind(&BackgroundSyncProvider::GetPermissionStatusCallback, |
139 base::Unretained(this), base::Passed(callbacksPtr.Pass()))); | 139 base::Unretained(this), base::Passed(callbacksPtr.Pass()))); |
140 } | 140 } |
141 | 141 |
142 void BackgroundSyncProvider::releaseRegistration(int64_t handle_id) { | 142 void BackgroundSyncProvider::releaseRegistration(int64_t handle_id) { |
143 GetBackgroundSyncServicePtr()->ReleaseRegistration(handle_id); | 143 GetBackgroundSyncServicePtr()->ReleaseRegistration(handle_id); |
144 } | 144 } |
145 | 145 |
| 146 void BackgroundSyncProvider::notifyWhenDone( |
| 147 int64_t handle_id, |
| 148 blink::WebSyncNotifyWhenDoneCallbacks* callbacks) { |
| 149 DCHECK(callbacks); |
| 150 |
| 151 scoped_ptr<blink::WebSyncNotifyWhenDoneCallbacks> callbacks_ptr(callbacks); |
| 152 |
| 153 // base::Unretained is safe here, as the mojo channel will be deleted (and |
| 154 // will wipe its callbacks) before 'this' is deleted. |
| 155 GetBackgroundSyncServicePtr()->NotifyWhenDone( |
| 156 handle_id, |
| 157 base::Bind(&BackgroundSyncProvider::NotifyWhenDoneCallback, |
| 158 base::Unretained(this), base::Passed(callbacks_ptr.Pass()))); |
| 159 } |
| 160 |
146 void BackgroundSyncProvider::DuplicateRegistrationHandle( | 161 void BackgroundSyncProvider::DuplicateRegistrationHandle( |
147 int handle_id, | 162 int handle_id, |
148 const BackgroundSyncService::DuplicateRegistrationHandleCallback& | 163 const BackgroundSyncService::DuplicateRegistrationHandleCallback& |
149 callback) { | 164 callback) { |
150 GetBackgroundSyncServicePtr()->DuplicateRegistrationHandle(handle_id, | 165 GetBackgroundSyncServicePtr()->DuplicateRegistrationHandle(handle_id, |
151 callback); | 166 callback); |
152 } | 167 } |
153 | 168 |
154 void BackgroundSyncProvider::RegisterCallback( | 169 void BackgroundSyncProvider::RegisterCallback( |
155 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, | 170 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 "Background Sync is disabled.")); | 330 "Background Sync is disabled.")); |
316 break; | 331 break; |
317 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: | 332 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
318 callbacks->onError( | 333 callbacks->onError( |
319 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, | 334 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
320 "No service worker is active.")); | 335 "No service worker is active.")); |
321 break; | 336 break; |
322 } | 337 } |
323 } | 338 } |
324 | 339 |
| 340 void BackgroundSyncProvider::NotifyWhenDoneCallback( |
| 341 scoped_ptr<blink::WebSyncNotifyWhenDoneCallbacks> callbacks, |
| 342 BackgroundSyncError error, |
| 343 BackgroundSyncState state) { |
| 344 switch (error) { |
| 345 case BACKGROUND_SYNC_ERROR_NONE: |
| 346 switch (state) { |
| 347 case BACKGROUND_SYNC_STATE_PENDING: |
| 348 case BACKGROUND_SYNC_STATE_FIRING: |
| 349 case BACKGROUND_SYNC_STATE_UNREGISTERED_WHILE_FIRING: |
| 350 NOTREACHED(); |
| 351 break; |
| 352 case BACKGROUND_SYNC_STATE_SUCCESS: |
| 353 callbacks->onSuccess(true); |
| 354 break; |
| 355 case BACKGROUND_SYNC_STATE_FAILED: |
| 356 case BACKGROUND_SYNC_STATE_UNREGISTERED: |
| 357 callbacks->onSuccess(false); |
| 358 break; |
| 359 } |
| 360 break; |
| 361 case BACKGROUND_SYNC_ERROR_NOT_FOUND: |
| 362 case BACKGROUND_SYNC_ERROR_NOT_ALLOWED: |
| 363 NOTREACHED(); |
| 364 break; |
| 365 case BACKGROUND_SYNC_ERROR_STORAGE: |
| 366 callbacks->onError( |
| 367 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 368 "Background Sync is disabled.")); |
| 369 break; |
| 370 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER: |
| 371 callbacks->onError( |
| 372 blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, |
| 373 "No service worker is active.")); |
| 374 break; |
| 375 } |
| 376 } |
| 377 |
325 BackgroundSyncServicePtr& | 378 BackgroundSyncServicePtr& |
326 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { | 379 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { |
327 if (!background_sync_service_.get()) { | 380 if (!background_sync_service_.get()) { |
328 service_registry_->ConnectToRemoteService( | 381 service_registry_->ConnectToRemoteService( |
329 mojo::GetProxy(&background_sync_service_)); | 382 mojo::GetProxy(&background_sync_service_)); |
330 } | 383 } |
331 return background_sync_service_; | 384 return background_sync_service_; |
332 } | 385 } |
333 | 386 |
334 } // namespace content | 387 } // namespace content |
OLD | NEW |