| 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 |