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/browser/background_sync/background_sync_service_impl.h" | 5 #include "content/browser/background_sync/background_sync_service_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/power_monitor/power_monitor.h" | 10 #include "base/power_monitor/power_monitor.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 void ErrorAndRegistrationCallback(bool* called, | 52 void ErrorAndRegistrationCallback(bool* called, |
53 BackgroundSyncError* out_error, | 53 BackgroundSyncError* out_error, |
54 SyncRegistrationPtr* out_registration, | 54 SyncRegistrationPtr* out_registration, |
55 BackgroundSyncError error, | 55 BackgroundSyncError error, |
56 const SyncRegistrationPtr& registration) { | 56 const SyncRegistrationPtr& registration) { |
57 *called = true; | 57 *called = true; |
58 *out_error = error; | 58 *out_error = error; |
59 *out_registration = registration.Clone(); | 59 *out_registration = registration.Clone(); |
60 } | 60 } |
61 | 61 |
| 62 void ErrorAndStateCallback(bool* called, |
| 63 BackgroundSyncError* out_error, |
| 64 BackgroundSyncState* out_state, |
| 65 BackgroundSyncError error, |
| 66 BackgroundSyncState state) { |
| 67 *called = true; |
| 68 *out_error = error; |
| 69 *out_state = state; |
| 70 } |
| 71 |
62 void ErrorCallback(bool* called, | 72 void ErrorCallback(bool* called, |
63 BackgroundSyncError* out_error, | 73 BackgroundSyncError* out_error, |
64 BackgroundSyncError error) { | 74 BackgroundSyncError error) { |
65 *called = true; | 75 *called = true; |
66 *out_error = error; | 76 *out_error = error; |
67 } | 77 } |
68 | 78 |
69 void ErrorAndRegistrationListCallback( | 79 void ErrorAndRegistrationListCallback( |
70 bool* called, | 80 bool* called, |
71 BackgroundSyncError* out_error, | 81 BackgroundSyncError* out_error, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 void RegisterOneShotFromDocument( | 200 void RegisterOneShotFromDocument( |
191 SyncRegistrationPtr sync, | 201 SyncRegistrationPtr sync, |
192 const BackgroundSyncService::RegisterCallback& callback) { | 202 const BackgroundSyncService::RegisterCallback& callback) { |
193 service_impl_->Register(sync.Pass(), sw_registration_id_, | 203 service_impl_->Register(sync.Pass(), sw_registration_id_, |
194 false /* requested_from_service_worker */, | 204 false /* requested_from_service_worker */, |
195 callback); | 205 callback); |
196 base::RunLoop().RunUntilIdle(); | 206 base::RunLoop().RunUntilIdle(); |
197 } | 207 } |
198 | 208 |
199 void UnregisterOneShot( | 209 void UnregisterOneShot( |
200 SyncRegistrationPtr sync, | 210 int32 handle_id, |
201 const BackgroundSyncService::UnregisterCallback& callback) { | 211 const BackgroundSyncService::UnregisterCallback& callback) { |
202 service_impl_->Unregister( | 212 service_impl_->Unregister( |
203 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, | 213 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, |
204 sync->handle_id, sw_registration_id_, callback); | 214 handle_id, sw_registration_id_, callback); |
205 base::RunLoop().RunUntilIdle(); | 215 base::RunLoop().RunUntilIdle(); |
206 } | 216 } |
207 | 217 |
208 void GetRegistrationOneShot( | 218 void GetRegistrationOneShot( |
209 const mojo::String& tag, | 219 const mojo::String& tag, |
210 const BackgroundSyncService::RegisterCallback& callback) { | 220 const BackgroundSyncService::RegisterCallback& callback) { |
211 service_impl_->GetRegistration( | 221 service_impl_->GetRegistration( |
212 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, tag, | 222 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, tag, |
213 sw_registration_id_, callback); | 223 sw_registration_id_, callback); |
214 base::RunLoop().RunUntilIdle(); | 224 base::RunLoop().RunUntilIdle(); |
215 } | 225 } |
216 | 226 |
217 void GetRegistrationsOneShot( | 227 void GetRegistrationsOneShot( |
218 const BackgroundSyncService::GetRegistrationsCallback& callback) { | 228 const BackgroundSyncService::GetRegistrationsCallback& callback) { |
219 service_impl_->GetRegistrations( | 229 service_impl_->GetRegistrations( |
220 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, | 230 BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, |
221 sw_registration_id_, callback); | 231 sw_registration_id_, callback); |
222 base::RunLoop().RunUntilIdle(); | 232 base::RunLoop().RunUntilIdle(); |
223 } | 233 } |
224 | 234 |
| 235 void NotifyWhenDone( |
| 236 int32 handle_id, |
| 237 const BackgroundSyncService::NotifyWhenDoneCallback& callback) { |
| 238 service_impl_->NotifyWhenDone(handle_id, callback); |
| 239 base::RunLoop().RunUntilIdle(); |
| 240 } |
| 241 |
225 scoped_ptr<TestBrowserThreadBundle> thread_bundle_; | 242 scoped_ptr<TestBrowserThreadBundle> thread_bundle_; |
226 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; | 243 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
227 scoped_ptr<EmbeddedWorkerTestHelper> embedded_worker_helper_; | 244 scoped_ptr<EmbeddedWorkerTestHelper> embedded_worker_helper_; |
228 scoped_ptr<base::PowerMonitor> power_monitor_; | 245 scoped_ptr<base::PowerMonitor> power_monitor_; |
229 scoped_refptr<BackgroundSyncContextImpl> background_sync_context_; | 246 scoped_refptr<BackgroundSyncContextImpl> background_sync_context_; |
230 scoped_ptr<ServiceWorkerProviderHost> provider_host_; | 247 scoped_ptr<ServiceWorkerProviderHost> provider_host_; |
231 int64 sw_registration_id_; | 248 int64 sw_registration_id_; |
232 scoped_refptr<ServiceWorkerRegistration> sw_registration_; | 249 scoped_refptr<ServiceWorkerRegistration> sw_registration_; |
233 BackgroundSyncServicePtr service_ptr_; | 250 BackgroundSyncServicePtr service_ptr_; |
234 BackgroundSyncServiceImpl* | 251 BackgroundSyncServiceImpl* |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 EXPECT_TRUE(called); | 302 EXPECT_TRUE(called); |
286 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, error); | 303 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, error); |
287 EXPECT_EQ("", reg->tag); | 304 EXPECT_EQ("", reg->tag); |
288 } | 305 } |
289 | 306 |
290 TEST_F(BackgroundSyncServiceImplTest, Unregister) { | 307 TEST_F(BackgroundSyncServiceImplTest, Unregister) { |
291 bool unregister_called = false; | 308 bool unregister_called = false; |
292 BackgroundSyncError unregister_error; | 309 BackgroundSyncError unregister_error; |
293 SyncRegistrationPtr reg; | 310 SyncRegistrationPtr reg; |
294 UnregisterOneShot( | 311 UnregisterOneShot( |
295 default_sync_registration_.Clone(), | 312 default_sync_registration_->handle_id, |
296 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); | 313 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
297 EXPECT_TRUE(unregister_called); | 314 EXPECT_TRUE(unregister_called); |
298 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NOT_ALLOWED, | 315 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NOT_ALLOWED, |
299 unregister_error); | 316 unregister_error); |
300 } | 317 } |
301 | 318 |
302 TEST_F(BackgroundSyncServiceImplTest, UnregisterWithRegisteredSync) { | 319 TEST_F(BackgroundSyncServiceImplTest, UnregisterWithRegisteredSync) { |
303 bool register_called = false; | 320 bool register_called = false; |
304 bool unregister_called = false; | 321 bool unregister_called = false; |
305 BackgroundSyncError register_error; | 322 BackgroundSyncError register_error; |
306 BackgroundSyncError unregister_error; | 323 BackgroundSyncError unregister_error; |
307 SyncRegistrationPtr reg; | 324 SyncRegistrationPtr reg; |
308 RegisterOneShot(default_sync_registration_.Clone(), | 325 RegisterOneShot(default_sync_registration_.Clone(), |
309 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, | 326 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
310 ®ister_error, ®)); | 327 ®ister_error, ®)); |
311 EXPECT_TRUE(register_called); | 328 EXPECT_TRUE(register_called); |
312 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, register_error); | 329 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, register_error); |
313 UnregisterOneShot(reg.Pass(), base::Bind(&ErrorCallback, &unregister_called, | 330 UnregisterOneShot( |
314 &unregister_error)); | 331 reg->handle_id, |
| 332 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
315 EXPECT_TRUE(unregister_called); | 333 EXPECT_TRUE(unregister_called); |
316 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, unregister_error); | 334 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, unregister_error); |
317 } | 335 } |
318 | 336 |
319 TEST_F(BackgroundSyncServiceImplTest, GetRegistration) { | 337 TEST_F(BackgroundSyncServiceImplTest, GetRegistration) { |
320 bool called = false; | 338 bool called = false; |
321 BackgroundSyncError error; | 339 BackgroundSyncError error; |
322 SyncRegistrationPtr reg; | 340 SyncRegistrationPtr reg; |
323 GetRegistrationOneShot( | 341 GetRegistrationOneShot( |
324 "", base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); | 342 "", base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, register_error); | 390 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, register_error); |
373 GetRegistrationsOneShot(base::Bind(&ErrorAndRegistrationListCallback, | 391 GetRegistrationsOneShot(base::Bind(&ErrorAndRegistrationListCallback, |
374 &getregistrations_called, | 392 &getregistrations_called, |
375 &getregistrations_error, &array_size)); | 393 &getregistrations_error, &array_size)); |
376 EXPECT_TRUE(getregistrations_called); | 394 EXPECT_TRUE(getregistrations_called); |
377 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, | 395 EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, |
378 getregistrations_error); | 396 getregistrations_error); |
379 EXPECT_EQ(1UL, array_size); | 397 EXPECT_EQ(1UL, array_size); |
380 } | 398 } |
381 | 399 |
| 400 TEST_F(BackgroundSyncServiceImplTest, NotifyWhenDone) { |
| 401 // Register a sync event. |
| 402 bool register_called = false; |
| 403 BackgroundSyncError register_error; |
| 404 SyncRegistrationPtr reg; |
| 405 RegisterOneShot(default_sync_registration_.Clone(), |
| 406 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
| 407 ®ister_error, ®)); |
| 408 EXPECT_TRUE(register_called); |
| 409 EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, register_error); |
| 410 |
| 411 // Unregister it. |
| 412 bool unregister_called = false; |
| 413 BackgroundSyncError unregister_error; |
| 414 UnregisterOneShot( |
| 415 reg->handle_id, |
| 416 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
| 417 EXPECT_TRUE(unregister_called); |
| 418 EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, unregister_error); |
| 419 |
| 420 // Call NotifyWhenDone and verify that it calls back with unregistered. |
| 421 bool notify_done_called = false; |
| 422 BackgroundSyncError notify_done_error = BACKGROUND_SYNC_ERROR_NONE; |
| 423 BackgroundSyncState notify_done_sync_state = BACKGROUND_SYNC_STATE_SUCCESS; |
| 424 |
| 425 NotifyWhenDone(reg->handle_id, |
| 426 base::Bind(&ErrorAndStateCallback, ¬ify_done_called, |
| 427 ¬ify_done_error, ¬ify_done_sync_state)); |
| 428 EXPECT_TRUE(notify_done_called); |
| 429 EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, notify_done_error); |
| 430 EXPECT_EQ(BACKGROUND_SYNC_STATE_UNREGISTERED, notify_done_sync_state); |
| 431 } |
| 432 |
382 } // namespace content | 433 } // namespace content |
OLD | NEW |