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_manager.h" | 5 #include "content/browser/background_sync/background_sync_manager.h" |
6 | 6 |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/power_monitor/power_monitor.h" | 10 #include "base/power_monitor/power_monitor.h" |
11 #include "base/power_monitor/power_monitor_source.h" | 11 #include "base/power_monitor/power_monitor_source.h" |
12 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
13 #include "base/single_thread_task_runner.h" | 13 #include "base/single_thread_task_runner.h" |
14 #include "base/thread_task_runner_handle.h" | 14 #include "base/thread_task_runner_handle.h" |
| 15 #include "content/browser/background_sync/background_sync_registration_handle.h" |
15 #include "content/browser/background_sync/background_sync_status.h" | 16 #include "content/browser/background_sync/background_sync_status.h" |
16 #include "content/browser/browser_thread_impl.h" | 17 #include "content/browser/browser_thread_impl.h" |
17 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 18 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
18 #include "content/browser/service_worker/service_worker_context_core.h" | 19 #include "content/browser/service_worker/service_worker_context_core.h" |
19 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 20 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
20 #include "content/browser/service_worker/service_worker_storage.h" | 21 #include "content/browser/service_worker/service_worker_storage.h" |
21 #include "content/public/test/test_browser_thread_bundle.h" | 22 #include "content/public/test/test_browser_thread_bundle.h" |
22 #include "net/base/network_change_notifier.h" | 23 #include "net/base/network_change_notifier.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
24 | 25 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 } | 121 } |
121 | 122 |
122 void GetDataFromBackendContinue( | 123 void GetDataFromBackendContinue( |
123 const std::string& key, | 124 const std::string& key, |
124 const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback& | 125 const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback& |
125 callback) { | 126 callback) { |
126 BackgroundSyncManager::GetDataFromBackend(key, callback); | 127 BackgroundSyncManager::GetDataFromBackend(key, callback); |
127 } | 128 } |
128 | 129 |
129 void Continue() { | 130 void Continue() { |
| 131 ASSERT_FALSE(continuation_.is_null()); |
130 continuation_.Run(); | 132 continuation_.Run(); |
131 continuation_.Reset(); | 133 continuation_.Reset(); |
132 } | 134 } |
133 | 135 |
134 void set_corrupt_backend(bool corrupt_backend) { | 136 void set_corrupt_backend(bool corrupt_backend) { |
135 corrupt_backend_ = corrupt_backend; | 137 corrupt_backend_ = corrupt_backend; |
136 } | 138 } |
137 void set_delay_backend(bool delay_backend) { delay_backend_ = delay_backend; } | 139 void set_delay_backend(bool delay_backend) { delay_backend_ = delay_backend; } |
138 void set_one_shot_callback(const OneShotCallback& callback) { | 140 void set_one_shot_callback(const OneShotCallback& callback) { |
139 one_shot_callback_ = callback; | 141 one_shot_callback_ = callback; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 continuation_ = | 179 continuation_ = |
178 base::Bind(&TestBackgroundSyncManager::GetDataFromBackendContinue, | 180 base::Bind(&TestBackgroundSyncManager::GetDataFromBackendContinue, |
179 base::Unretained(this), key, callback); | 181 base::Unretained(this), key, callback); |
180 if (delay_backend_) | 182 if (delay_backend_) |
181 return; | 183 return; |
182 | 184 |
183 Continue(); | 185 Continue(); |
184 } | 186 } |
185 | 187 |
186 void FireOneShotSync( | 188 void FireOneShotSync( |
187 const BackgroundSyncRegistration& registration, | 189 BackgroundSyncRegistrationHandle::HandleId handle_id, |
188 const scoped_refptr<ServiceWorkerVersion>& active_version, | 190 const scoped_refptr<ServiceWorkerVersion>& active_version, |
189 const ServiceWorkerVersion::StatusCallback& callback) override { | 191 const ServiceWorkerVersion::StatusCallback& callback) override { |
190 if (one_shot_callback_.is_null()) { | 192 ASSERT_FALSE(one_shot_callback_.is_null()); |
191 BackgroundSyncManager::FireOneShotSync(registration, active_version, | 193 one_shot_callback_.Run(active_version, callback); |
192 callback); | |
193 } else { | |
194 one_shot_callback_.Run(active_version, callback); | |
195 } | |
196 } | 194 } |
197 | 195 |
198 private: | 196 private: |
199 bool corrupt_backend_ = false; | 197 bool corrupt_backend_ = false; |
200 bool delay_backend_ = false; | 198 bool delay_backend_ = false; |
201 base::Closure continuation_; | 199 base::Closure continuation_; |
202 OneShotCallback one_shot_callback_; | 200 OneShotCallback one_shot_callback_; |
203 }; | 201 }; |
204 | 202 |
205 class BackgroundSyncManagerTest : public testing::Test { | 203 class BackgroundSyncManagerTest : public testing::Test { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 } | 296 } |
299 | 297 |
300 void SetOnBatteryPower(bool on_battery_power) { | 298 void SetOnBatteryPower(bool on_battery_power) { |
301 power_monitor_source_->GeneratePowerStateEvent(on_battery_power); | 299 power_monitor_source_->GeneratePowerStateEvent(on_battery_power); |
302 base::RunLoop().RunUntilIdle(); | 300 base::RunLoop().RunUntilIdle(); |
303 } | 301 } |
304 | 302 |
305 void StatusAndRegistrationCallback( | 303 void StatusAndRegistrationCallback( |
306 bool* was_called, | 304 bool* was_called, |
307 BackgroundSyncStatus status, | 305 BackgroundSyncStatus status, |
308 const BackgroundSyncRegistration& registration) { | 306 scoped_ptr<BackgroundSyncRegistrationHandle> registration_handle) { |
309 *was_called = true; | 307 *was_called = true; |
310 callback_status_ = status; | 308 callback_status_ = status; |
311 callback_registration_ = registration; | 309 callback_registration_handle_ = registration_handle.Pass(); |
312 } | 310 } |
313 | 311 |
314 void StatusAndRegistrationsCallback( | 312 void StatusAndRegistrationsCallback( |
315 bool* was_called, | 313 bool* was_called, |
316 BackgroundSyncStatus status, | 314 BackgroundSyncStatus status, |
317 const std::vector<BackgroundSyncRegistration>& registrations) { | 315 scoped_ptr<ScopedVector<BackgroundSyncRegistrationHandle>> |
| 316 registration_handles) { |
318 *was_called = true; | 317 *was_called = true; |
319 callback_status_ = status; | 318 callback_status_ = status; |
320 callback_registrations_ = registrations; | 319 callback_registration_handles_ = registration_handles.Pass(); |
321 } | 320 } |
322 | 321 |
323 void StatusCallback(bool* was_called, BackgroundSyncStatus status) { | 322 void StatusCallback(bool* was_called, BackgroundSyncStatus status) { |
324 *was_called = true; | 323 *was_called = true; |
325 callback_status_ = status; | 324 callback_status_ = status; |
326 } | 325 } |
327 | 326 |
328 protected: | 327 protected: |
329 void CreateBackgroundSyncManager() { | 328 void CreateBackgroundSyncManager() { |
| 329 ClearRegistrationHandles(); |
| 330 |
330 test_background_sync_manager_ = | 331 test_background_sync_manager_ = |
331 new TestBackgroundSyncManager(helper_->context_wrapper()); | 332 new TestBackgroundSyncManager(helper_->context_wrapper()); |
332 background_sync_manager_.reset(test_background_sync_manager_); | 333 background_sync_manager_.reset(test_background_sync_manager_); |
333 } | 334 } |
334 | 335 |
335 void InitBackgroundSyncManager() { | 336 void InitBackgroundSyncManager() { |
336 test_background_sync_manager_->DoInit(); | 337 test_background_sync_manager_->DoInit(); |
337 | 338 |
338 // Many tests do not expect the sync event to fire immediately after | 339 // Many tests do not expect the sync event to fire immediately after |
339 // register (and cleanup up the sync registrations). Tests can control when | 340 // register (and cleanup up the sync registrations). Tests can control when |
340 // the sync event fires by manipulating the network state as needed. | 341 // the sync event fires by manipulating the network state as needed. |
341 // NOTE: The setup of the network connection must happen after the | 342 // NOTE: The setup of the network connection must happen after the |
342 // BackgroundSyncManager has been setup. | 343 // BackgroundSyncManager has been setup. |
343 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); | 344 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); |
344 } | 345 } |
345 | 346 |
| 347 // Clear the registrations so that the BackgroundSyncManager can release them. |
| 348 void ClearRegistrationHandles() { |
| 349 callback_registration_handle_.reset(); |
| 350 callback_registration_handles_.reset(); |
| 351 } |
| 352 |
346 void SetupBackgroundSyncManager() { | 353 void SetupBackgroundSyncManager() { |
347 CreateBackgroundSyncManager(); | 354 CreateBackgroundSyncManager(); |
348 InitBackgroundSyncManager(); | 355 InitBackgroundSyncManager(); |
349 } | 356 } |
350 | 357 |
351 void SetupCorruptBackgroundSyncManager() { | 358 void SetupCorruptBackgroundSyncManager() { |
352 CreateBackgroundSyncManager(); | 359 CreateBackgroundSyncManager(); |
353 test_background_sync_manager_->set_corrupt_backend(true); | 360 test_background_sync_manager_->set_corrupt_backend(true); |
354 InitBackgroundSyncManager(); | 361 InitBackgroundSyncManager(); |
355 } | 362 } |
356 | 363 |
357 void SetupDelayedBackgroundSyncManager() { | 364 void SetupDelayedBackgroundSyncManager() { |
358 CreateBackgroundSyncManager(); | 365 CreateBackgroundSyncManager(); |
359 test_background_sync_manager_->set_delay_backend(true); | 366 test_background_sync_manager_->set_delay_backend(true); |
360 InitBackgroundSyncManager(); | 367 InitBackgroundSyncManager(); |
361 } | 368 } |
362 | 369 |
363 void DeleteBackgroundSyncManager() { | 370 void DeleteBackgroundSyncManager() { |
| 371 ClearRegistrationHandles(); |
364 background_sync_manager_.reset(); | 372 background_sync_manager_.reset(); |
365 test_background_sync_manager_ = nullptr; | 373 test_background_sync_manager_ = nullptr; |
366 } | 374 } |
367 | 375 |
368 bool Register(const BackgroundSyncRegistrationOptions& sync_options) { | 376 bool Register(const BackgroundSyncRegistrationOptions& sync_options) { |
369 return RegisterWithServiceWorkerId(sw_registration_id_1_, sync_options); | 377 return RegisterWithServiceWorkerId(sw_registration_id_1_, sync_options); |
370 } | 378 } |
371 | 379 |
372 bool RegisterWithServiceWorkerId( | 380 bool RegisterWithServiceWorkerId( |
373 int64 sw_registration_id, | 381 int64 sw_registration_id, |
(...skipping 14 matching lines...) Expand all Loading... |
388 bool was_called = false; | 396 bool was_called = false; |
389 background_sync_manager_->Register( | 397 background_sync_manager_->Register( |
390 sw_registration_id, options, false /* requested_from_service_worker */, | 398 sw_registration_id, options, false /* requested_from_service_worker */, |
391 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 399 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
392 base::Unretained(this), &was_called)); | 400 base::Unretained(this), &was_called)); |
393 base::RunLoop().RunUntilIdle(); | 401 base::RunLoop().RunUntilIdle(); |
394 EXPECT_TRUE(was_called); | 402 EXPECT_TRUE(was_called); |
395 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; | 403 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; |
396 } | 404 } |
397 | 405 |
398 bool Unregister(const BackgroundSyncRegistration& sync_registration) { | 406 bool Unregister(BackgroundSyncRegistrationHandle* registration_handle) { |
399 return UnregisterWithServiceWorkerId(sw_registration_id_1_, | 407 return UnregisterWithServiceWorkerId(sw_registration_id_1_, |
400 sync_registration); | 408 registration_handle); |
401 } | 409 } |
402 | 410 |
403 bool UnregisterWithServiceWorkerId( | 411 bool UnregisterWithServiceWorkerId( |
404 int64 sw_registration_id, | 412 int64 sw_registration_id, |
405 const BackgroundSyncRegistration& sync_registration) { | 413 BackgroundSyncRegistrationHandle* registration_handle) { |
406 bool was_called = false; | 414 bool was_called = false; |
407 background_sync_manager_->Unregister( | 415 registration_handle->Unregister( |
408 sw_registration_id, sync_registration.options()->tag, | 416 sw_registration_id, |
409 sync_registration.options()->periodicity, sync_registration.id(), | |
410 base::Bind(&BackgroundSyncManagerTest::StatusCallback, | 417 base::Bind(&BackgroundSyncManagerTest::StatusCallback, |
411 base::Unretained(this), &was_called)); | 418 base::Unretained(this), &was_called)); |
412 base::RunLoop().RunUntilIdle(); | 419 base::RunLoop().RunUntilIdle(); |
413 EXPECT_TRUE(was_called); | 420 EXPECT_TRUE(was_called); |
414 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; | 421 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; |
415 } | 422 } |
416 | 423 |
417 bool GetRegistration(const BackgroundSyncRegistrationOptions& sync_options) { | 424 bool GetRegistration( |
| 425 const BackgroundSyncRegistrationOptions& registration_options) { |
418 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 426 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
419 sync_options); | 427 registration_options); |
420 } | 428 } |
421 | 429 |
422 bool GetRegistrationWithServiceWorkerId( | 430 bool GetRegistrationWithServiceWorkerId( |
423 int64 sw_registration_id, | 431 int64 sw_registration_id, |
424 const BackgroundSyncRegistrationOptions& sync_options) { | 432 const BackgroundSyncRegistrationOptions& registration_options) { |
425 bool was_called = false; | 433 bool was_called = false; |
426 background_sync_manager_->GetRegistration( | 434 background_sync_manager_->GetRegistration( |
427 sw_registration_id, sync_options.tag, sync_options.periodicity, | 435 sw_registration_id, registration_options.tag, |
| 436 registration_options.periodicity, |
428 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 437 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
429 base::Unretained(this), &was_called)); | 438 base::Unretained(this), &was_called)); |
430 base::RunLoop().RunUntilIdle(); | 439 base::RunLoop().RunUntilIdle(); |
431 EXPECT_TRUE(was_called); | 440 EXPECT_TRUE(was_called); |
432 | 441 |
433 if (callback_status_ == BACKGROUND_SYNC_STATUS_OK) { | 442 if (callback_status_ == BACKGROUND_SYNC_STATUS_OK) { |
434 EXPECT_STREQ(sync_options.tag.c_str(), | 443 EXPECT_STREQ(registration_options.tag.c_str(), |
435 callback_registration_.options()->tag.c_str()); | 444 callback_registration_handle_->options()->tag.c_str()); |
436 } | 445 } |
437 | 446 |
438 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; | 447 return callback_status_ == BACKGROUND_SYNC_STATUS_OK; |
439 } | 448 } |
440 | 449 |
441 bool GetRegistrations(SyncPeriodicity periodicity) { | 450 bool GetRegistrations(SyncPeriodicity periodicity) { |
442 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 451 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
443 periodicity); | 452 periodicity); |
444 } | 453 } |
445 | 454 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 int64 sw_registration_id_1_; | 529 int64 sw_registration_id_1_; |
521 int64 sw_registration_id_2_; | 530 int64 sw_registration_id_2_; |
522 scoped_refptr<ServiceWorkerRegistration> sw_registration_1_; | 531 scoped_refptr<ServiceWorkerRegistration> sw_registration_1_; |
523 scoped_refptr<ServiceWorkerRegistration> sw_registration_2_; | 532 scoped_refptr<ServiceWorkerRegistration> sw_registration_2_; |
524 | 533 |
525 BackgroundSyncRegistrationOptions sync_options_1_; | 534 BackgroundSyncRegistrationOptions sync_options_1_; |
526 BackgroundSyncRegistrationOptions sync_options_2_; | 535 BackgroundSyncRegistrationOptions sync_options_2_; |
527 | 536 |
528 // Callback values. | 537 // Callback values. |
529 BackgroundSyncStatus callback_status_; | 538 BackgroundSyncStatus callback_status_; |
530 BackgroundSyncRegistration callback_registration_; | 539 scoped_ptr<BackgroundSyncRegistrationHandle> callback_registration_handle_; |
531 std::vector<BackgroundSyncRegistration> callback_registrations_; | 540 scoped_ptr<ScopedVector<BackgroundSyncRegistrationHandle>> |
| 541 callback_registration_handles_; |
532 ServiceWorkerStatusCode callback_sw_status_code_; | 542 ServiceWorkerStatusCode callback_sw_status_code_; |
533 int sync_events_called_; | 543 int sync_events_called_; |
534 ServiceWorkerVersion::StatusCallback sync_fired_callback_; | 544 ServiceWorkerVersion::StatusCallback sync_fired_callback_; |
535 }; | 545 }; |
536 | 546 |
537 TEST_F(BackgroundSyncManagerTest, Register) { | 547 TEST_F(BackgroundSyncManagerTest, Register) { |
538 EXPECT_TRUE(Register(sync_options_1_)); | 548 EXPECT_TRUE(Register(sync_options_1_)); |
539 } | 549 } |
540 | 550 |
541 TEST_F(BackgroundSyncManagerTest, RegistractionIntact) { | 551 TEST_F(BackgroundSyncManagerTest, RegistractionIntact) { |
542 EXPECT_TRUE(Register(sync_options_1_)); | 552 EXPECT_TRUE(Register(sync_options_1_)); |
543 EXPECT_STREQ(sync_options_1_.tag.c_str(), | 553 EXPECT_STREQ(sync_options_1_.tag.c_str(), |
544 callback_registration_.options()->tag.c_str()); | 554 callback_registration_handle_->options()->tag.c_str()); |
545 EXPECT_TRUE(callback_registration_.IsValid()); | 555 EXPECT_TRUE(callback_registration_handle_->IsValid()); |
546 } | 556 } |
547 | 557 |
548 TEST_F(BackgroundSyncManagerTest, RegisterWithoutLiveSWRegistration) { | 558 TEST_F(BackgroundSyncManagerTest, RegisterWithoutLiveSWRegistration) { |
549 sw_registration_1_ = nullptr; | 559 sw_registration_1_ = nullptr; |
550 EXPECT_FALSE(Register(sync_options_1_)); | 560 EXPECT_FALSE(Register(sync_options_1_)); |
551 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, callback_status_); | 561 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, callback_status_); |
552 } | 562 } |
553 | 563 |
554 TEST_F(BackgroundSyncManagerTest, RegisterWithoutActiveSWRegistration) { | 564 TEST_F(BackgroundSyncManagerTest, RegisterWithoutActiveSWRegistration) { |
555 sw_registration_1_->UnsetVersion(sw_registration_1_->active_version()); | 565 sw_registration_1_->UnsetVersion(sw_registration_1_->active_version()); |
556 EXPECT_FALSE(Register(sync_options_1_)); | 566 EXPECT_FALSE(Register(sync_options_1_)); |
557 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, callback_status_); | 567 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, callback_status_); |
558 } | 568 } |
559 | 569 |
560 TEST_F(BackgroundSyncManagerTest, RegisterExistingKeepsId) { | |
561 EXPECT_TRUE(Register(sync_options_1_)); | |
562 BackgroundSyncRegistration first_registration = callback_registration_; | |
563 EXPECT_TRUE(Register(sync_options_1_)); | |
564 EXPECT_TRUE(callback_registration_.Equals(first_registration)); | |
565 EXPECT_EQ(first_registration.id(), callback_registration_.id()); | |
566 } | |
567 | |
568 TEST_F(BackgroundSyncManagerTest, RegisterOverwrites) { | 570 TEST_F(BackgroundSyncManagerTest, RegisterOverwrites) { |
569 EXPECT_TRUE(Register(sync_options_1_)); | 571 EXPECT_TRUE(Register(sync_options_1_)); |
570 BackgroundSyncRegistration first_registration = callback_registration_; | 572 scoped_ptr<BackgroundSyncRegistrationHandle> first_registration_handle = |
| 573 callback_registration_handle_.Pass(); |
571 | 574 |
572 sync_options_1_.min_period = 100; | 575 sync_options_1_.min_period = 100; |
573 EXPECT_TRUE(Register(sync_options_1_)); | 576 EXPECT_TRUE(Register(sync_options_1_)); |
574 EXPECT_LT(first_registration.id(), callback_registration_.id()); | 577 EXPECT_LT(first_registration_handle->handle_id(), |
575 EXPECT_FALSE(callback_registration_.Equals(first_registration)); | 578 callback_registration_handle_->handle_id()); |
| 579 EXPECT_FALSE(first_registration_handle->options()->Equals( |
| 580 *callback_registration_handle_->options())); |
576 } | 581 } |
577 | 582 |
578 TEST_F(BackgroundSyncManagerTest, RegisterOverlappingPeriodicAndOneShotTags) { | 583 TEST_F(BackgroundSyncManagerTest, RegisterOverlappingPeriodicAndOneShotTags) { |
579 // Registrations with the same tags but different periodicities should not | 584 // Registrations with the same tags but different periodicities should not |
580 // collide. | 585 // collide. |
581 sync_options_1_.tag = ""; | 586 sync_options_1_.tag = ""; |
582 sync_options_2_.tag = ""; | 587 sync_options_2_.tag = ""; |
583 sync_options_1_.periodicity = SYNC_PERIODIC; | 588 sync_options_1_.periodicity = SYNC_PERIODIC; |
584 sync_options_2_.periodicity = SYNC_ONE_SHOT; | 589 sync_options_2_.periodicity = SYNC_ONE_SHOT; |
585 EXPECT_TRUE(Register(sync_options_1_)); | 590 EXPECT_TRUE(Register(sync_options_1_)); |
586 EXPECT_TRUE(Register(sync_options_2_)); | 591 EXPECT_TRUE(Register(sync_options_2_)); |
587 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 592 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
588 EXPECT_EQ(SYNC_PERIODIC, callback_registration_.options()->periodicity); | 593 EXPECT_EQ(SYNC_PERIODIC, |
| 594 callback_registration_handle_->options()->periodicity); |
589 EXPECT_TRUE(GetRegistration(sync_options_2_)); | 595 EXPECT_TRUE(GetRegistration(sync_options_2_)); |
590 EXPECT_EQ(SYNC_ONE_SHOT, callback_registration_.options()->periodicity); | 596 EXPECT_EQ(SYNC_ONE_SHOT, |
| 597 callback_registration_handle_->options()->periodicity); |
591 } | 598 } |
592 | 599 |
593 TEST_F(BackgroundSyncManagerTest, RegisterBadBackend) { | 600 TEST_F(BackgroundSyncManagerTest, RegisterBadBackend) { |
594 test_background_sync_manager_->set_corrupt_backend(true); | 601 test_background_sync_manager_->set_corrupt_backend(true); |
595 EXPECT_FALSE(Register(sync_options_1_)); | 602 EXPECT_FALSE(Register(sync_options_1_)); |
596 test_background_sync_manager_->set_corrupt_backend(false); | 603 test_background_sync_manager_->set_corrupt_backend(false); |
597 EXPECT_FALSE(Register(sync_options_1_)); | 604 EXPECT_FALSE(Register(sync_options_1_)); |
598 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 605 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
599 } | 606 } |
600 | 607 |
| 608 TEST_F(BackgroundSyncManagerTest, DuplicateRegistrationHandle) { |
| 609 EXPECT_TRUE(Register(sync_options_1_)); |
| 610 EXPECT_TRUE( |
| 611 sync_options_1_.Equals(*callback_registration_handle_->options())); |
| 612 |
| 613 scoped_ptr<BackgroundSyncRegistrationHandle> dup_handle = |
| 614 background_sync_manager_->DuplicateRegistrationHandle( |
| 615 callback_registration_handle_->handle_id()); |
| 616 |
| 617 EXPECT_TRUE(sync_options_1_.Equals(*dup_handle->options())); |
| 618 EXPECT_NE(callback_registration_handle_->handle_id(), |
| 619 dup_handle->handle_id()); |
| 620 } |
| 621 |
601 TEST_F(BackgroundSyncManagerTest, TwoRegistrations) { | 622 TEST_F(BackgroundSyncManagerTest, TwoRegistrations) { |
602 EXPECT_TRUE(Register(sync_options_1_)); | 623 EXPECT_TRUE(Register(sync_options_1_)); |
603 EXPECT_TRUE(Register(sync_options_2_)); | 624 EXPECT_TRUE(Register(sync_options_2_)); |
604 } | 625 } |
605 | 626 |
606 TEST_F(BackgroundSyncManagerTest, GetRegistrationNonExisting) { | 627 TEST_F(BackgroundSyncManagerTest, GetRegistrationNonExisting) { |
607 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 628 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
608 } | 629 } |
609 | 630 |
610 TEST_F(BackgroundSyncManagerTest, GetRegistrationExisting) { | 631 TEST_F(BackgroundSyncManagerTest, GetRegistrationExisting) { |
611 EXPECT_TRUE(Register(sync_options_1_)); | 632 EXPECT_TRUE(Register(sync_options_1_)); |
612 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 633 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
613 EXPECT_FALSE(GetRegistration(sync_options_2_)); | 634 EXPECT_FALSE(GetRegistration(sync_options_2_)); |
614 } | 635 } |
615 | 636 |
616 TEST_F(BackgroundSyncManagerTest, GetRegistrationBadBackend) { | 637 TEST_F(BackgroundSyncManagerTest, GetRegistrationBadBackend) { |
617 EXPECT_TRUE(Register(sync_options_1_)); | 638 EXPECT_TRUE(Register(sync_options_1_)); |
618 test_background_sync_manager_->set_corrupt_backend(true); | 639 test_background_sync_manager_->set_corrupt_backend(true); |
619 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 640 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
620 EXPECT_FALSE(Register(sync_options_2_)); | 641 EXPECT_FALSE(Register(sync_options_2_)); |
621 // Registration should have discovered the bad backend and disabled the | 642 // Registration should have discovered the bad backend and disabled the |
622 // BackgroundSyncManager. | 643 // BackgroundSyncManager. |
623 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 644 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
624 test_background_sync_manager_->set_corrupt_backend(false); | 645 test_background_sync_manager_->set_corrupt_backend(false); |
625 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 646 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
626 } | 647 } |
627 | 648 |
628 TEST_F(BackgroundSyncManagerTest, GetRegistrationsZero) { | 649 TEST_F(BackgroundSyncManagerTest, GetRegistrationsZero) { |
629 EXPECT_TRUE(GetRegistrations(SYNC_ONE_SHOT)); | 650 EXPECT_TRUE(GetRegistrations(SYNC_ONE_SHOT)); |
630 EXPECT_EQ(0u, callback_registrations_.size()); | 651 EXPECT_EQ(0u, callback_registration_handles_->size()); |
631 } | 652 } |
632 | 653 |
633 TEST_F(BackgroundSyncManagerTest, GetRegistrationsOne) { | 654 TEST_F(BackgroundSyncManagerTest, GetRegistrationsOne) { |
634 EXPECT_TRUE(Register(sync_options_1_)); | 655 EXPECT_TRUE(Register(sync_options_1_)); |
635 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); | 656 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); |
636 | 657 |
637 EXPECT_EQ(1u, callback_registrations_.size()); | 658 EXPECT_EQ(1u, callback_registration_handles_->size()); |
638 sync_options_1_.Equals(*callback_registrations_[0].options()); | 659 sync_options_1_.Equals(*(*callback_registration_handles_)[0]->options()); |
639 } | 660 } |
640 | 661 |
641 TEST_F(BackgroundSyncManagerTest, GetRegistrationsTwo) { | 662 TEST_F(BackgroundSyncManagerTest, GetRegistrationsTwo) { |
642 EXPECT_EQ(sync_options_1_.periodicity, sync_options_2_.periodicity); | 663 EXPECT_EQ(sync_options_1_.periodicity, sync_options_2_.periodicity); |
643 | 664 |
644 EXPECT_TRUE(Register(sync_options_1_)); | 665 EXPECT_TRUE(Register(sync_options_1_)); |
645 EXPECT_TRUE(Register(sync_options_2_)); | 666 EXPECT_TRUE(Register(sync_options_2_)); |
646 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); | 667 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); |
647 | 668 |
648 EXPECT_EQ(2u, callback_registrations_.size()); | 669 EXPECT_EQ(2u, callback_registration_handles_->size()); |
649 sync_options_1_.Equals(*callback_registrations_[0].options()); | 670 sync_options_1_.Equals(*(*callback_registration_handles_)[0]->options()); |
650 sync_options_2_.Equals(*callback_registrations_[1].options()); | 671 sync_options_2_.Equals(*(*callback_registration_handles_)[1]->options()); |
651 } | 672 } |
652 | 673 |
653 TEST_F(BackgroundSyncManagerTest, GetRegistrationsPeriodicity) { | 674 TEST_F(BackgroundSyncManagerTest, GetRegistrationsPeriodicity) { |
654 sync_options_1_.periodicity = SYNC_ONE_SHOT; | 675 sync_options_1_.periodicity = SYNC_ONE_SHOT; |
655 sync_options_2_.periodicity = SYNC_PERIODIC; | 676 sync_options_2_.periodicity = SYNC_PERIODIC; |
656 EXPECT_TRUE(Register(sync_options_1_)); | 677 EXPECT_TRUE(Register(sync_options_1_)); |
657 EXPECT_TRUE(Register(sync_options_2_)); | 678 EXPECT_TRUE(Register(sync_options_2_)); |
658 | 679 |
659 EXPECT_TRUE(GetRegistrations(SYNC_ONE_SHOT)); | 680 EXPECT_TRUE(GetRegistrations(SYNC_ONE_SHOT)); |
660 EXPECT_EQ(1u, callback_registrations_.size()); | 681 EXPECT_EQ(1u, callback_registration_handles_->size()); |
661 sync_options_1_.Equals(*callback_registrations_[0].options()); | 682 sync_options_1_.Equals(*(*callback_registration_handles_)[0]->options()); |
662 | 683 |
663 EXPECT_TRUE(GetRegistrations(SYNC_PERIODIC)); | 684 EXPECT_TRUE(GetRegistrations(SYNC_PERIODIC)); |
664 EXPECT_EQ(1u, callback_registrations_.size()); | 685 EXPECT_EQ(1u, callback_registration_handles_->size()); |
665 sync_options_2_.Equals(*callback_registrations_[0].options()); | 686 sync_options_2_.Equals(*(*callback_registration_handles_)[0]->options()); |
666 } | 687 } |
667 | 688 |
668 TEST_F(BackgroundSyncManagerTest, GetRegistrationsBadBackend) { | 689 TEST_F(BackgroundSyncManagerTest, GetRegistrationsBadBackend) { |
669 EXPECT_TRUE(Register(sync_options_1_)); | 690 EXPECT_TRUE(Register(sync_options_1_)); |
670 test_background_sync_manager_->set_corrupt_backend(true); | 691 test_background_sync_manager_->set_corrupt_backend(true); |
671 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); | 692 EXPECT_TRUE(GetRegistrations(sync_options_1_.periodicity)); |
672 EXPECT_FALSE(Register(sync_options_2_)); | 693 EXPECT_FALSE(Register(sync_options_2_)); |
673 // Registration should have discovered the bad backend and disabled the | 694 // Registration should have discovered the bad backend and disabled the |
674 // BackgroundSyncManager. | 695 // BackgroundSyncManager. |
675 EXPECT_FALSE(GetRegistrations(sync_options_1_.periodicity)); | 696 EXPECT_FALSE(GetRegistrations(sync_options_1_.periodicity)); |
676 test_background_sync_manager_->set_corrupt_backend(false); | 697 test_background_sync_manager_->set_corrupt_backend(false); |
677 EXPECT_FALSE(GetRegistrations(sync_options_1_.periodicity)); | 698 EXPECT_FALSE(GetRegistrations(sync_options_1_.periodicity)); |
678 } | 699 } |
679 | 700 |
680 TEST_F(BackgroundSyncManagerTest, Unregister) { | 701 TEST_F(BackgroundSyncManagerTest, Unregister) { |
681 EXPECT_TRUE(Register(sync_options_1_)); | 702 EXPECT_TRUE(Register(sync_options_1_)); |
682 EXPECT_TRUE(Unregister(callback_registration_)); | 703 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
683 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 704 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
684 } | 705 } |
685 | 706 |
686 TEST_F(BackgroundSyncManagerTest, UnregisterWrongId) { | |
687 EXPECT_TRUE(Register(sync_options_1_)); | |
688 callback_registration_.set_id(callback_registration_.id() + 1); | |
689 EXPECT_FALSE(Unregister(callback_registration_)); | |
690 } | |
691 | |
692 TEST_F(BackgroundSyncManagerTest, Reregister) { | 707 TEST_F(BackgroundSyncManagerTest, Reregister) { |
693 EXPECT_TRUE(Register(sync_options_1_)); | 708 EXPECT_TRUE(Register(sync_options_1_)); |
694 EXPECT_TRUE(Unregister(callback_registration_)); | 709 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
695 EXPECT_TRUE(Register(sync_options_1_)); | 710 EXPECT_TRUE(Register(sync_options_1_)); |
696 } | 711 } |
697 | 712 |
698 TEST_F(BackgroundSyncManagerTest, UnregisterNonExisting) { | |
699 BackgroundSyncRegistration nonexistant_registration; | |
700 nonexistant_registration.set_id(1); | |
701 EXPECT_FALSE(Unregister(nonexistant_registration)); | |
702 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NOT_FOUND, callback_status_); | |
703 } | |
704 | |
705 TEST_F(BackgroundSyncManagerTest, UnregisterSecond) { | 713 TEST_F(BackgroundSyncManagerTest, UnregisterSecond) { |
706 EXPECT_TRUE(Register(sync_options_1_)); | 714 EXPECT_TRUE(Register(sync_options_1_)); |
707 EXPECT_TRUE(Register(sync_options_2_)); | 715 EXPECT_TRUE(Register(sync_options_2_)); |
708 EXPECT_TRUE(Unregister(callback_registration_)); | 716 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
709 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 717 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
710 EXPECT_TRUE(Register(sync_options_2_)); | 718 EXPECT_TRUE(Register(sync_options_2_)); |
711 } | 719 } |
712 | 720 |
713 TEST_F(BackgroundSyncManagerTest, UnregisterBadBackend) { | 721 TEST_F(BackgroundSyncManagerTest, UnregisterBadBackend) { |
714 sync_options_1_.min_period += 1; | 722 sync_options_1_.min_period += 1; |
715 EXPECT_TRUE(Register(sync_options_1_)); | 723 EXPECT_TRUE(Register(sync_options_1_)); |
716 EXPECT_TRUE(Register(sync_options_2_)); | 724 EXPECT_TRUE(Register(sync_options_2_)); |
717 test_background_sync_manager_->set_corrupt_backend(true); | 725 test_background_sync_manager_->set_corrupt_backend(true); |
718 EXPECT_FALSE(Unregister(callback_registration_)); | 726 EXPECT_FALSE(Unregister(callback_registration_handle_.get())); |
719 // Unregister should have discovered the bad backend and disabled the | 727 // Unregister should have discovered the bad backend and disabled the |
720 // BackgroundSyncManager. | 728 // BackgroundSyncManager. |
721 test_background_sync_manager_->set_corrupt_backend(false); | 729 test_background_sync_manager_->set_corrupt_backend(false); |
722 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 730 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
723 EXPECT_FALSE(GetRegistration(sync_options_2_)); | 731 EXPECT_FALSE(GetRegistration(sync_options_2_)); |
724 } | 732 } |
725 | 733 |
726 TEST_F(BackgroundSyncManagerTest, RegistrationIncreasesId) { | 734 TEST_F(BackgroundSyncManagerTest, RegistrationIncreasesId) { |
727 EXPECT_TRUE(Register(sync_options_1_)); | 735 EXPECT_TRUE(Register(sync_options_1_)); |
728 BackgroundSyncRegistration registered_sync = callback_registration_; | 736 scoped_ptr<BackgroundSyncRegistrationHandle> registered_handle = |
| 737 callback_registration_handle_.Pass(); |
729 BackgroundSyncRegistration::RegistrationId cur_id = | 738 BackgroundSyncRegistration::RegistrationId cur_id = |
730 callback_registration_.id(); | 739 registered_handle->handle_id(); |
731 | 740 |
732 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 741 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
733 EXPECT_TRUE(Register(sync_options_2_)); | 742 EXPECT_TRUE(Register(sync_options_2_)); |
734 EXPECT_LT(cur_id, callback_registration_.id()); | 743 EXPECT_LT(cur_id, callback_registration_handle_->handle_id()); |
735 cur_id = callback_registration_.id(); | 744 cur_id = callback_registration_handle_->handle_id(); |
736 | 745 |
737 EXPECT_TRUE(Unregister(registered_sync)); | 746 EXPECT_TRUE(Unregister(registered_handle.get())); |
738 EXPECT_TRUE(Register(sync_options_1_)); | 747 EXPECT_TRUE(Register(sync_options_1_)); |
739 EXPECT_LT(cur_id, callback_registration_.id()); | 748 EXPECT_LT(cur_id, callback_registration_handle_->handle_id()); |
740 } | 749 } |
741 | 750 |
742 TEST_F(BackgroundSyncManagerTest, RebootRecovery) { | 751 TEST_F(BackgroundSyncManagerTest, RebootRecovery) { |
743 EXPECT_TRUE(Register(sync_options_1_)); | 752 EXPECT_TRUE(Register(sync_options_1_)); |
744 | 753 |
745 SetupBackgroundSyncManager(); | 754 SetupBackgroundSyncManager(); |
746 | 755 |
747 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 756 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
748 EXPECT_FALSE(GetRegistration(sync_options_2_)); | 757 EXPECT_FALSE(GetRegistration(sync_options_2_)); |
749 } | 758 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 | 790 |
782 EXPECT_FALSE(Register(sync_options_1_)); | 791 EXPECT_FALSE(Register(sync_options_1_)); |
783 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 792 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
784 } | 793 } |
785 | 794 |
786 TEST_F(BackgroundSyncManagerTest, SequentialOperations) { | 795 TEST_F(BackgroundSyncManagerTest, SequentialOperations) { |
787 // Schedule Init and all of the operations on a delayed backend. Verify that | 796 // Schedule Init and all of the operations on a delayed backend. Verify that |
788 // the operations complete sequentially. | 797 // the operations complete sequentially. |
789 SetupDelayedBackgroundSyncManager(); | 798 SetupDelayedBackgroundSyncManager(); |
790 | 799 |
791 const int64 kExpectedInitialId = BackgroundSyncRegistration::kInitialId; | |
792 | |
793 bool register_called = false; | 800 bool register_called = false; |
794 bool unregister_called = false; | |
795 bool get_registration_called = false; | 801 bool get_registration_called = false; |
796 test_background_sync_manager_->Register( | 802 test_background_sync_manager_->Register( |
797 sw_registration_id_1_, sync_options_1_, | 803 sw_registration_id_1_, sync_options_1_, |
798 true /* requested_from_service_worker */, | 804 true /* requested_from_service_worker */, |
799 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 805 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
800 base::Unretained(this), ®ister_called)); | 806 base::Unretained(this), ®ister_called)); |
801 test_background_sync_manager_->Unregister( | |
802 sw_registration_id_1_, sync_options_1_.tag, sync_options_1_.periodicity, | |
803 kExpectedInitialId, | |
804 base::Bind(&BackgroundSyncManagerTest::StatusCallback, | |
805 base::Unretained(this), &unregister_called)); | |
806 test_background_sync_manager_->GetRegistration( | 807 test_background_sync_manager_->GetRegistration( |
807 sw_registration_id_1_, sync_options_1_.tag, sync_options_1_.periodicity, | 808 sw_registration_id_1_, sync_options_1_.tag, sync_options_1_.periodicity, |
808 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 809 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
809 base::Unretained(this), &get_registration_called)); | 810 base::Unretained(this), &get_registration_called)); |
810 | 811 |
811 base::RunLoop().RunUntilIdle(); | 812 base::RunLoop().RunUntilIdle(); |
812 // Init should be blocked while loading from the backend. | 813 // Init should be blocked while loading from the backend. |
813 EXPECT_FALSE(register_called); | 814 EXPECT_FALSE(register_called); |
814 EXPECT_FALSE(unregister_called); | |
815 EXPECT_FALSE(get_registration_called); | 815 EXPECT_FALSE(get_registration_called); |
816 | 816 |
817 test_background_sync_manager_->Continue(); | 817 test_background_sync_manager_->Continue(); |
818 base::RunLoop().RunUntilIdle(); | 818 base::RunLoop().RunUntilIdle(); |
819 // Register should be blocked while storing to the backend. | 819 // Register should be blocked while storing to the backend. |
820 EXPECT_FALSE(register_called); | 820 EXPECT_FALSE(register_called); |
821 EXPECT_FALSE(unregister_called); | |
822 EXPECT_FALSE(get_registration_called); | 821 EXPECT_FALSE(get_registration_called); |
823 | 822 |
824 test_background_sync_manager_->Continue(); | 823 test_background_sync_manager_->Continue(); |
825 base::RunLoop().RunUntilIdle(); | 824 base::RunLoop().RunUntilIdle(); |
826 EXPECT_TRUE(register_called); | 825 EXPECT_TRUE(register_called); |
827 EXPECT_EQ(kExpectedInitialId, callback_registration_.id()); | |
828 EXPECT_EQ(BACKGROUND_SYNC_STATUS_OK, callback_status_); | 826 EXPECT_EQ(BACKGROUND_SYNC_STATUS_OK, callback_status_); |
829 // Unregister should be blocked while storing to the backend. | 827 // GetRegistration should run immediately as it doesn't write to disk. |
830 EXPECT_FALSE(unregister_called); | |
831 EXPECT_FALSE(get_registration_called); | |
832 | |
833 test_background_sync_manager_->Continue(); | |
834 base::RunLoop().RunUntilIdle(); | |
835 // Unregister should be done and since GetRegistration doesn't require the | |
836 // backend it should be done too. | |
837 EXPECT_EQ(BACKGROUND_SYNC_STATUS_NOT_FOUND, callback_status_); | |
838 EXPECT_TRUE(unregister_called); | |
839 EXPECT_TRUE(get_registration_called); | 828 EXPECT_TRUE(get_registration_called); |
840 } | 829 } |
841 | 830 |
842 TEST_F(BackgroundSyncManagerTest, UnregisterServiceWorker) { | 831 TEST_F(BackgroundSyncManagerTest, UnregisterServiceWorker) { |
843 EXPECT_TRUE(Register(sync_options_1_)); | 832 EXPECT_TRUE(Register(sync_options_1_)); |
844 UnregisterServiceWorker(sw_registration_id_1_); | 833 UnregisterServiceWorker(sw_registration_id_1_); |
845 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 834 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
846 } | 835 } |
847 | 836 |
848 TEST_F(BackgroundSyncManagerTest, | 837 TEST_F(BackgroundSyncManagerTest, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 options.power_state = POWER_STATE_AUTO; | 966 options.power_state = POWER_STATE_AUTO; |
978 | 967 |
979 // Store the registration. | 968 // Store the registration. |
980 EXPECT_TRUE(Register(options)); | 969 EXPECT_TRUE(Register(options)); |
981 | 970 |
982 // Simulate restarting the sync manager, forcing the next read to come from | 971 // Simulate restarting the sync manager, forcing the next read to come from |
983 // disk. | 972 // disk. |
984 SetupBackgroundSyncManager(); | 973 SetupBackgroundSyncManager(); |
985 | 974 |
986 EXPECT_TRUE(GetRegistration(options)); | 975 EXPECT_TRUE(GetRegistration(options)); |
987 EXPECT_TRUE(options.Equals(*callback_registration_.options())); | 976 EXPECT_TRUE(options.Equals(*callback_registration_handle_->options())); |
988 } | 977 } |
989 | 978 |
990 TEST_F(BackgroundSyncManagerTest, EmptyTagSupported) { | 979 TEST_F(BackgroundSyncManagerTest, EmptyTagSupported) { |
991 sync_options_1_.tag = "a"; | 980 sync_options_1_.tag = "a"; |
992 EXPECT_TRUE(Register(sync_options_1_)); | 981 EXPECT_TRUE(Register(sync_options_1_)); |
993 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 982 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
994 EXPECT_TRUE(sync_options_1_.Equals(*callback_registration_.options())); | 983 EXPECT_TRUE( |
995 EXPECT_TRUE(Unregister(callback_registration_)); | 984 sync_options_1_.Equals(*callback_registration_handle_->options())); |
| 985 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
996 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 986 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
997 } | 987 } |
998 | 988 |
999 TEST_F(BackgroundSyncManagerTest, OverlappingPeriodicAndOneShotTags) { | 989 TEST_F(BackgroundSyncManagerTest, OverlappingPeriodicAndOneShotTags) { |
1000 // Registrations with the same tags but different periodicities should not | 990 // Registrations with the same tags but different periodicities should not |
1001 // collide. | 991 // collide. |
1002 sync_options_1_.tag = ""; | 992 sync_options_1_.tag = ""; |
1003 sync_options_2_.tag = ""; | 993 sync_options_2_.tag = ""; |
1004 sync_options_1_.periodicity = SYNC_PERIODIC; | 994 sync_options_1_.periodicity = SYNC_PERIODIC; |
1005 sync_options_2_.periodicity = SYNC_ONE_SHOT; | 995 sync_options_2_.periodicity = SYNC_ONE_SHOT; |
1006 | 996 |
1007 EXPECT_TRUE(Register(sync_options_1_)); | 997 EXPECT_TRUE(Register(sync_options_1_)); |
1008 EXPECT_TRUE(Register(sync_options_2_)); | 998 EXPECT_TRUE(Register(sync_options_2_)); |
1009 | 999 |
1010 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1000 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1011 EXPECT_EQ(SYNC_PERIODIC, callback_registration_.options()->periodicity); | 1001 EXPECT_EQ(SYNC_PERIODIC, |
| 1002 callback_registration_handle_->options()->periodicity); |
1012 EXPECT_TRUE(GetRegistration(sync_options_2_)); | 1003 EXPECT_TRUE(GetRegistration(sync_options_2_)); |
1013 EXPECT_EQ(SYNC_ONE_SHOT, callback_registration_.options()->periodicity); | 1004 EXPECT_EQ(SYNC_ONE_SHOT, |
| 1005 callback_registration_handle_->options()->periodicity); |
1014 | 1006 |
1015 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1007 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1016 EXPECT_TRUE(Unregister(callback_registration_)); | 1008 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1017 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1009 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1018 EXPECT_TRUE(GetRegistration(sync_options_2_)); | 1010 EXPECT_TRUE(GetRegistration(sync_options_2_)); |
1019 EXPECT_EQ(SYNC_ONE_SHOT, callback_registration_.options()->periodicity); | 1011 EXPECT_EQ(SYNC_ONE_SHOT, |
| 1012 callback_registration_handle_->options()->periodicity); |
1020 | 1013 |
1021 EXPECT_TRUE(Unregister(callback_registration_)); | 1014 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1022 EXPECT_FALSE(GetRegistration(sync_options_2_)); | 1015 EXPECT_FALSE(GetRegistration(sync_options_2_)); |
1023 } | 1016 } |
1024 | 1017 |
1025 TEST_F(BackgroundSyncManagerTest, OneShotFiresOnRegistration) { | 1018 TEST_F(BackgroundSyncManagerTest, OneShotFiresOnRegistration) { |
1026 InitSyncEventTest(); | 1019 InitSyncEventTest(); |
1027 | 1020 |
1028 EXPECT_TRUE(Register(sync_options_1_)); | 1021 EXPECT_TRUE(Register(sync_options_1_)); |
1029 EXPECT_EQ(1, sync_events_called_); | 1022 EXPECT_EQ(1, sync_events_called_); |
1030 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1023 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1031 } | 1024 } |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1127 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1135 } | 1128 } |
1136 | 1129 |
1137 TEST_F(BackgroundSyncManagerTest, FailedOneShotReregisteredAndFires) { | 1130 TEST_F(BackgroundSyncManagerTest, FailedOneShotReregisteredAndFires) { |
1138 InitFailedSyncEventTest(); | 1131 InitFailedSyncEventTest(); |
1139 | 1132 |
1140 // The initial sync event fails. | 1133 // The initial sync event fails. |
1141 EXPECT_TRUE(Register(sync_options_1_)); | 1134 EXPECT_TRUE(Register(sync_options_1_)); |
1142 EXPECT_EQ(1, sync_events_called_); | 1135 EXPECT_EQ(1, sync_events_called_); |
1143 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1136 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1144 BackgroundSyncRegistration first_registration = callback_registration_; | |
1145 | 1137 |
1146 InitSyncEventTest(); | 1138 InitSyncEventTest(); |
1147 | 1139 |
1148 // Reregistering should cause the sync event to fire again, this time | 1140 // Reregistering should cause the sync event to fire again, this time |
1149 // succeeding. | 1141 // succeeding. |
1150 EXPECT_TRUE(Register(sync_options_1_)); | 1142 EXPECT_TRUE(Register(sync_options_1_)); |
1151 EXPECT_EQ(first_registration.id(), callback_registration_.id()); | |
1152 EXPECT_EQ(2, sync_events_called_); | 1143 EXPECT_EQ(2, sync_events_called_); |
1153 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1144 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1154 } | 1145 } |
1155 | 1146 |
1156 TEST_F(BackgroundSyncManagerTest, DelayOneShotMidSync) { | 1147 TEST_F(BackgroundSyncManagerTest, DelayOneShotMidSync) { |
1157 InitDelayedSyncEventTest(); | 1148 InitDelayedSyncEventTest(); |
1158 | 1149 |
1159 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1150 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
1160 | 1151 |
1161 // Finish firing the event and verify that the registration is removed. | 1152 // Finish firing the event and verify that the registration is removed. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1215 base::RunLoop().RunUntilIdle(); | 1206 base::RunLoop().RunUntilIdle(); |
1216 EXPECT_EQ(1, sync_events_called_); | 1207 EXPECT_EQ(1, sync_events_called_); |
1217 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1208 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1218 } | 1209 } |
1219 | 1210 |
1220 TEST_F(BackgroundSyncManagerTest, UnregisterOneShotMidSync) { | 1211 TEST_F(BackgroundSyncManagerTest, UnregisterOneShotMidSync) { |
1221 InitDelayedSyncEventTest(); | 1212 InitDelayedSyncEventTest(); |
1222 | 1213 |
1223 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1214 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
1224 | 1215 |
1225 EXPECT_TRUE(Unregister(callback_registration_)); | 1216 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1226 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1217 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1227 | 1218 |
1228 sync_fired_callback_.Run(SERVICE_WORKER_OK); | 1219 sync_fired_callback_.Run(SERVICE_WORKER_OK); |
1229 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1220 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1230 } | 1221 } |
1231 | 1222 |
1232 TEST_F(BackgroundSyncManagerTest, BadBackendMidSync) { | 1223 TEST_F(BackgroundSyncManagerTest, BadBackendMidSync) { |
1233 InitDelayedSyncEventTest(); | 1224 InitDelayedSyncEventTest(); |
1234 | 1225 |
1235 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1226 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1286 | 1277 |
1287 TEST_F(BackgroundSyncManagerTest, RegisterSucceedsFromUncontrolledWindow) { | 1278 TEST_F(BackgroundSyncManagerTest, RegisterSucceedsFromUncontrolledWindow) { |
1288 RemoveWindowClients(); | 1279 RemoveWindowClients(); |
1289 EXPECT_TRUE(RegisterFromDocumentWithServiceWorkerId(sw_registration_id_1_, | 1280 EXPECT_TRUE(RegisterFromDocumentWithServiceWorkerId(sw_registration_id_1_, |
1290 sync_options_1_)); | 1281 sync_options_1_)); |
1291 } | 1282 } |
1292 | 1283 |
1293 TEST_F(BackgroundSyncManagerTest, UnregisterSucceedsWithoutWindow) { | 1284 TEST_F(BackgroundSyncManagerTest, UnregisterSucceedsWithoutWindow) { |
1294 EXPECT_TRUE(Register(sync_options_1_)); | 1285 EXPECT_TRUE(Register(sync_options_1_)); |
1295 RemoveWindowClients(); | 1286 RemoveWindowClients(); |
1296 EXPECT_TRUE(Unregister(callback_registration_)); | 1287 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1297 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1288 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1298 } | 1289 } |
1299 | 1290 |
1300 } // namespace content | 1291 } // namespace content |
OLD | NEW |