| 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/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 }; | 134 }; |
| 135 | 135 |
| 136 class BackgroundSyncManagerTest : public testing::Test { | 136 class BackgroundSyncManagerTest : public testing::Test { |
| 137 public: | 137 public: |
| 138 BackgroundSyncManagerTest() | 138 BackgroundSyncManagerTest() |
| 139 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), | 139 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
| 140 sync_reg_1_(BackgroundSyncManager::BackgroundSyncRegistration()), | 140 sync_reg_1_(BackgroundSyncManager::BackgroundSyncRegistration()), |
| 141 sync_reg_2_(BackgroundSyncManager::BackgroundSyncRegistration()), | 141 sync_reg_2_(BackgroundSyncManager::BackgroundSyncRegistration()), |
| 142 callback_error_(BackgroundSyncManager::ERROR_TYPE_OK), | 142 callback_error_(BackgroundSyncManager::ERROR_TYPE_OK), |
| 143 callback_sw_status_code_(SERVICE_WORKER_OK) { | 143 callback_sw_status_code_(SERVICE_WORKER_OK) { |
| 144 sync_reg_1_.name = "foo"; | 144 sync_reg_1_.tag = "foo"; |
| 145 sync_reg_2_.name = "bar"; | 145 sync_reg_2_.tag = "bar"; |
| 146 } | 146 } |
| 147 | 147 |
| 148 void SetUp() override { | 148 void SetUp() override { |
| 149 helper_.reset( | 149 helper_.reset( |
| 150 new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId)); | 150 new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId)); |
| 151 | 151 |
| 152 background_sync_manager_ = | 152 background_sync_manager_ = |
| 153 BackgroundSyncManager::Create(helper_->context_wrapper()); | 153 BackgroundSyncManager::Create(helper_->context_wrapper()); |
| 154 | 154 |
| 155 // Wait for storage to finish initializing before registering service | 155 // Wait for storage to finish initializing before registering service |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 return UnregisterWithServiceWorkerId(sw_registration_id_1_, | 221 return UnregisterWithServiceWorkerId(sw_registration_id_1_, |
| 222 sync_registration); | 222 sync_registration); |
| 223 } | 223 } |
| 224 | 224 |
| 225 bool UnregisterWithServiceWorkerId( | 225 bool UnregisterWithServiceWorkerId( |
| 226 int64 sw_registration_id, | 226 int64 sw_registration_id, |
| 227 const BackgroundSyncManager::BackgroundSyncRegistration& | 227 const BackgroundSyncManager::BackgroundSyncRegistration& |
| 228 sync_registration) { | 228 sync_registration) { |
| 229 bool was_called = false; | 229 bool was_called = false; |
| 230 background_sync_manager_->Unregister( | 230 background_sync_manager_->Unregister( |
| 231 GURL(kOrigin), sw_registration_id, sync_registration.name, | 231 GURL(kOrigin), sw_registration_id, sync_registration.tag, |
| 232 sync_registration.id, | 232 sync_registration.id, |
| 233 base::Bind(&BackgroundSyncManagerTest::StatusCallback, | 233 base::Bind(&BackgroundSyncManagerTest::StatusCallback, |
| 234 base::Unretained(this), &was_called)); | 234 base::Unretained(this), &was_called)); |
| 235 base::RunLoop().RunUntilIdle(); | 235 base::RunLoop().RunUntilIdle(); |
| 236 EXPECT_TRUE(was_called); | 236 EXPECT_TRUE(was_called); |
| 237 return callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK; | 237 return callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK; |
| 238 } | 238 } |
| 239 | 239 |
| 240 bool GetRegistration(const std::string& sync_registration_name) { | 240 bool GetRegistration(const std::string& sync_registration_tag) { |
| 241 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 241 return GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
| 242 sync_registration_name); | 242 sync_registration_tag); |
| 243 } | 243 } |
| 244 | 244 |
| 245 bool GetRegistrationWithServiceWorkerId( | 245 bool GetRegistrationWithServiceWorkerId( |
| 246 int64 sw_registration_id, | 246 int64 sw_registration_id, |
| 247 const std::string& sync_registration_name) { | 247 const std::string& sync_registration_tag) { |
| 248 bool was_called = false; | 248 bool was_called = false; |
| 249 background_sync_manager_->GetRegistration( | 249 background_sync_manager_->GetRegistration( |
| 250 GURL(kOrigin), sw_registration_id, sync_registration_name, | 250 GURL(kOrigin), sw_registration_id, sync_registration_tag, |
| 251 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 251 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
| 252 base::Unretained(this), &was_called)); | 252 base::Unretained(this), &was_called)); |
| 253 base::RunLoop().RunUntilIdle(); | 253 base::RunLoop().RunUntilIdle(); |
| 254 EXPECT_TRUE(was_called); | 254 EXPECT_TRUE(was_called); |
| 255 | 255 |
| 256 if (callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK) | 256 if (callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK) |
| 257 EXPECT_TRUE(sync_registration_name == callback_registration_.name); | 257 EXPECT_TRUE(sync_registration_tag == callback_registration_.tag); |
| 258 | 258 |
| 259 return callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK; | 259 return callback_error_ == BackgroundSyncManager::ERROR_TYPE_OK; |
| 260 } | 260 } |
| 261 | 261 |
| 262 void StorageRegistrationCallback(ServiceWorkerStatusCode result) { | 262 void StorageRegistrationCallback(ServiceWorkerStatusCode result) { |
| 263 callback_sw_status_code_ = result; | 263 callback_sw_status_code_ = result; |
| 264 } | 264 } |
| 265 | 265 |
| 266 void UnregisterServiceWorker(uint64 sw_registration_id) { | 266 void UnregisterServiceWorker(uint64 sw_registration_id) { |
| 267 bool called = false; | 267 bool called = false; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 293 BackgroundSyncManager::BackgroundSyncRegistration callback_registration_; | 293 BackgroundSyncManager::BackgroundSyncRegistration callback_registration_; |
| 294 ServiceWorkerStatusCode callback_sw_status_code_; | 294 ServiceWorkerStatusCode callback_sw_status_code_; |
| 295 }; | 295 }; |
| 296 | 296 |
| 297 TEST_F(BackgroundSyncManagerTest, Register) { | 297 TEST_F(BackgroundSyncManagerTest, Register) { |
| 298 EXPECT_TRUE(Register(sync_reg_1_)); | 298 EXPECT_TRUE(Register(sync_reg_1_)); |
| 299 } | 299 } |
| 300 | 300 |
| 301 TEST_F(BackgroundSyncManagerTest, RegistractionIntact) { | 301 TEST_F(BackgroundSyncManagerTest, RegistractionIntact) { |
| 302 EXPECT_TRUE(Register(sync_reg_1_)); | 302 EXPECT_TRUE(Register(sync_reg_1_)); |
| 303 EXPECT_STREQ(sync_reg_1_.name.c_str(), callback_registration_.name.c_str()); | 303 EXPECT_STREQ(sync_reg_1_.tag.c_str(), callback_registration_.tag.c_str()); |
| 304 EXPECT_NE( | 304 EXPECT_NE( |
| 305 BackgroundSyncManager::BackgroundSyncRegistration::kInvalidRegistrationId, | 305 BackgroundSyncManager::BackgroundSyncRegistration::kInvalidRegistrationId, |
| 306 callback_registration_.id); | 306 callback_registration_.id); |
| 307 } | 307 } |
| 308 | 308 |
| 309 TEST_F(BackgroundSyncManagerTest, RegisterExistingKeepsId) { | 309 TEST_F(BackgroundSyncManagerTest, RegisterExistingKeepsId) { |
| 310 EXPECT_TRUE(Register(sync_reg_1_)); | 310 EXPECT_TRUE(Register(sync_reg_1_)); |
| 311 BackgroundSyncManager::BackgroundSyncRegistration first_registration = | 311 BackgroundSyncManager::BackgroundSyncRegistration first_registration = |
| 312 callback_registration_; | 312 callback_registration_; |
| 313 EXPECT_TRUE(Register(sync_reg_1_)); | 313 EXPECT_TRUE(Register(sync_reg_1_)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 325 EXPECT_LT(first_registration.id, callback_registration_.id); | 325 EXPECT_LT(first_registration.id, callback_registration_.id); |
| 326 EXPECT_FALSE(callback_registration_.Equals(first_registration)); | 326 EXPECT_FALSE(callback_registration_.Equals(first_registration)); |
| 327 } | 327 } |
| 328 | 328 |
| 329 TEST_F(BackgroundSyncManagerTest, RegisterBadBackend) { | 329 TEST_F(BackgroundSyncManagerTest, RegisterBadBackend) { |
| 330 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); | 330 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); |
| 331 manager->set_corrupt_backend(true); | 331 manager->set_corrupt_backend(true); |
| 332 EXPECT_FALSE(Register(sync_reg_1_)); | 332 EXPECT_FALSE(Register(sync_reg_1_)); |
| 333 manager->set_corrupt_backend(false); | 333 manager->set_corrupt_backend(false); |
| 334 EXPECT_FALSE(Register(sync_reg_1_)); | 334 EXPECT_FALSE(Register(sync_reg_1_)); |
| 335 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 335 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 336 } | 336 } |
| 337 | 337 |
| 338 TEST_F(BackgroundSyncManagerTest, TwoRegistrations) { | 338 TEST_F(BackgroundSyncManagerTest, TwoRegistrations) { |
| 339 EXPECT_TRUE(Register(sync_reg_1_)); | 339 EXPECT_TRUE(Register(sync_reg_1_)); |
| 340 EXPECT_TRUE(Register(sync_reg_2_)); | 340 EXPECT_TRUE(Register(sync_reg_2_)); |
| 341 } | 341 } |
| 342 | 342 |
| 343 TEST_F(BackgroundSyncManagerTest, GetRegistrationNonExisting) { | 343 TEST_F(BackgroundSyncManagerTest, GetRegistrationNonExisting) { |
| 344 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 344 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 345 } | 345 } |
| 346 | 346 |
| 347 TEST_F(BackgroundSyncManagerTest, GetRegistrationExisting) { | 347 TEST_F(BackgroundSyncManagerTest, GetRegistrationExisting) { |
| 348 EXPECT_TRUE(Register(sync_reg_1_)); | 348 EXPECT_TRUE(Register(sync_reg_1_)); |
| 349 EXPECT_TRUE(GetRegistration(sync_reg_1_.name)); | 349 EXPECT_TRUE(GetRegistration(sync_reg_1_.tag)); |
| 350 EXPECT_FALSE(GetRegistration(sync_reg_2_.name)); | 350 EXPECT_FALSE(GetRegistration(sync_reg_2_.tag)); |
| 351 } | 351 } |
| 352 | 352 |
| 353 TEST_F(BackgroundSyncManagerTest, GetRegistrationBadBackend) { | 353 TEST_F(BackgroundSyncManagerTest, GetRegistrationBadBackend) { |
| 354 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); | 354 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); |
| 355 EXPECT_TRUE(Register(sync_reg_1_)); | 355 EXPECT_TRUE(Register(sync_reg_1_)); |
| 356 manager->set_corrupt_backend(true); | 356 manager->set_corrupt_backend(true); |
| 357 EXPECT_TRUE(GetRegistration(sync_reg_1_.name)); | 357 EXPECT_TRUE(GetRegistration(sync_reg_1_.tag)); |
| 358 EXPECT_FALSE(Register(sync_reg_2_)); | 358 EXPECT_FALSE(Register(sync_reg_2_)); |
| 359 // Registration should have discovered the bad backend and disabled the | 359 // Registration should have discovered the bad backend and disabled the |
| 360 // BackgroundSyncManager. | 360 // BackgroundSyncManager. |
| 361 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 361 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 362 manager->set_corrupt_backend(false); | 362 manager->set_corrupt_backend(false); |
| 363 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 363 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 364 } | 364 } |
| 365 | 365 |
| 366 TEST_F(BackgroundSyncManagerTest, Unregister) { | 366 TEST_F(BackgroundSyncManagerTest, Unregister) { |
| 367 EXPECT_TRUE(Register(sync_reg_1_)); | 367 EXPECT_TRUE(Register(sync_reg_1_)); |
| 368 EXPECT_TRUE(Unregister(callback_registration_)); | 368 EXPECT_TRUE(Unregister(callback_registration_)); |
| 369 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 369 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 370 } | 370 } |
| 371 | 371 |
| 372 TEST_F(BackgroundSyncManagerTest, UnregisterWrongId) { | 372 TEST_F(BackgroundSyncManagerTest, UnregisterWrongId) { |
| 373 EXPECT_TRUE(Register(sync_reg_1_)); | 373 EXPECT_TRUE(Register(sync_reg_1_)); |
| 374 callback_registration_.id += 1; | 374 callback_registration_.id += 1; |
| 375 EXPECT_FALSE(Unregister(callback_registration_)); | 375 EXPECT_FALSE(Unregister(callback_registration_)); |
| 376 } | 376 } |
| 377 | 377 |
| 378 TEST_F(BackgroundSyncManagerTest, Reregister) { | 378 TEST_F(BackgroundSyncManagerTest, Reregister) { |
| 379 EXPECT_TRUE(Register(sync_reg_1_)); | 379 EXPECT_TRUE(Register(sync_reg_1_)); |
| 380 EXPECT_TRUE(Unregister(callback_registration_)); | 380 EXPECT_TRUE(Unregister(callback_registration_)); |
| 381 EXPECT_TRUE(Register(sync_reg_1_)); | 381 EXPECT_TRUE(Register(sync_reg_1_)); |
| 382 } | 382 } |
| 383 | 383 |
| 384 TEST_F(BackgroundSyncManagerTest, UnregisterNonExisting) { | 384 TEST_F(BackgroundSyncManagerTest, UnregisterNonExisting) { |
| 385 EXPECT_FALSE(Unregister(sync_reg_1_)); | 385 EXPECT_FALSE(Unregister(sync_reg_1_)); |
| 386 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_NOT_FOUND, callback_error_); | 386 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_NOT_FOUND, callback_error_); |
| 387 } | 387 } |
| 388 | 388 |
| 389 TEST_F(BackgroundSyncManagerTest, UnregisterSecond) { | 389 TEST_F(BackgroundSyncManagerTest, UnregisterSecond) { |
| 390 EXPECT_TRUE(Register(sync_reg_1_)); | 390 EXPECT_TRUE(Register(sync_reg_1_)); |
| 391 EXPECT_TRUE(Register(sync_reg_2_)); | 391 EXPECT_TRUE(Register(sync_reg_2_)); |
| 392 EXPECT_TRUE(Unregister(callback_registration_)); | 392 EXPECT_TRUE(Unregister(callback_registration_)); |
| 393 EXPECT_TRUE(GetRegistration(sync_reg_1_.name)); | 393 EXPECT_TRUE(GetRegistration(sync_reg_1_.tag)); |
| 394 EXPECT_TRUE(Register(sync_reg_2_)); | 394 EXPECT_TRUE(Register(sync_reg_2_)); |
| 395 } | 395 } |
| 396 | 396 |
| 397 TEST_F(BackgroundSyncManagerTest, UnregisterBadBackend) { | 397 TEST_F(BackgroundSyncManagerTest, UnregisterBadBackend) { |
| 398 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); | 398 TestBackgroundSyncManager* manager = UseTestBackgroundSyncManager(); |
| 399 sync_reg_1_.min_period += 1; | 399 sync_reg_1_.min_period += 1; |
| 400 EXPECT_TRUE(Register(sync_reg_1_)); | 400 EXPECT_TRUE(Register(sync_reg_1_)); |
| 401 EXPECT_TRUE(Register(sync_reg_2_)); | 401 EXPECT_TRUE(Register(sync_reg_2_)); |
| 402 manager->set_corrupt_backend(true); | 402 manager->set_corrupt_backend(true); |
| 403 EXPECT_FALSE(Unregister(callback_registration_)); | 403 EXPECT_FALSE(Unregister(callback_registration_)); |
| 404 // Unregister should have discovered the bad backend and disabled the | 404 // Unregister should have discovered the bad backend and disabled the |
| 405 // BackgroundSyncManager. | 405 // BackgroundSyncManager. |
| 406 manager->set_corrupt_backend(false); | 406 manager->set_corrupt_backend(false); |
| 407 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 407 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 408 EXPECT_FALSE(GetRegistration(sync_reg_2_.name)); | 408 EXPECT_FALSE(GetRegistration(sync_reg_2_.tag)); |
| 409 } | 409 } |
| 410 | 410 |
| 411 TEST_F(BackgroundSyncManagerTest, RegistrationIncreasesId) { | 411 TEST_F(BackgroundSyncManagerTest, RegistrationIncreasesId) { |
| 412 EXPECT_TRUE(Register(sync_reg_1_)); | 412 EXPECT_TRUE(Register(sync_reg_1_)); |
| 413 BackgroundSyncManager::BackgroundSyncRegistration registered_sync = | 413 BackgroundSyncManager::BackgroundSyncRegistration registered_sync = |
| 414 callback_registration_; | 414 callback_registration_; |
| 415 BackgroundSyncManager::BackgroundSyncRegistration::RegistrationId cur_id = | 415 BackgroundSyncManager::BackgroundSyncRegistration::RegistrationId cur_id = |
| 416 callback_registration_.id; | 416 callback_registration_.id; |
| 417 | 417 |
| 418 EXPECT_TRUE(GetRegistration(sync_reg_1_.name)); | 418 EXPECT_TRUE(GetRegistration(sync_reg_1_.tag)); |
| 419 EXPECT_TRUE(Register(sync_reg_2_)); | 419 EXPECT_TRUE(Register(sync_reg_2_)); |
| 420 EXPECT_LT(cur_id, callback_registration_.id); | 420 EXPECT_LT(cur_id, callback_registration_.id); |
| 421 cur_id = callback_registration_.id; | 421 cur_id = callback_registration_.id; |
| 422 | 422 |
| 423 EXPECT_TRUE(Unregister(registered_sync)); | 423 EXPECT_TRUE(Unregister(registered_sync)); |
| 424 EXPECT_TRUE(Register(sync_reg_1_)); | 424 EXPECT_TRUE(Register(sync_reg_1_)); |
| 425 EXPECT_LT(cur_id, callback_registration_.id); | 425 EXPECT_LT(cur_id, callback_registration_.id); |
| 426 } | 426 } |
| 427 | 427 |
| 428 TEST_F(BackgroundSyncManagerTest, RebootRecovery) { | 428 TEST_F(BackgroundSyncManagerTest, RebootRecovery) { |
| 429 EXPECT_TRUE(Register(sync_reg_1_)); | 429 EXPECT_TRUE(Register(sync_reg_1_)); |
| 430 | 430 |
| 431 background_sync_manager_ = | 431 background_sync_manager_ = |
| 432 BackgroundSyncManager::Create(helper_->context_wrapper()); | 432 BackgroundSyncManager::Create(helper_->context_wrapper()); |
| 433 | 433 |
| 434 EXPECT_TRUE(GetRegistration(sync_reg_1_.name)); | 434 EXPECT_TRUE(GetRegistration(sync_reg_1_.tag)); |
| 435 EXPECT_FALSE(GetRegistration(sync_reg_2_.name)); | 435 EXPECT_FALSE(GetRegistration(sync_reg_2_.tag)); |
| 436 } | 436 } |
| 437 | 437 |
| 438 TEST_F(BackgroundSyncManagerTest, RebootRecoveryTwoServiceWorkers) { | 438 TEST_F(BackgroundSyncManagerTest, RebootRecoveryTwoServiceWorkers) { |
| 439 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_1_, sync_reg_1_)); | 439 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_1_, sync_reg_1_)); |
| 440 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_2_, sync_reg_2_)); | 440 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_2_, sync_reg_2_)); |
| 441 | 441 |
| 442 background_sync_manager_ = | 442 background_sync_manager_ = |
| 443 BackgroundSyncManager::Create(helper_->context_wrapper()); | 443 BackgroundSyncManager::Create(helper_->context_wrapper()); |
| 444 | 444 |
| 445 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 445 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
| 446 sync_reg_1_.name)); | 446 sync_reg_1_.tag)); |
| 447 EXPECT_FALSE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 447 EXPECT_FALSE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
| 448 sync_reg_2_.name)); | 448 sync_reg_2_.tag)); |
| 449 EXPECT_FALSE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, | 449 EXPECT_FALSE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, |
| 450 sync_reg_1_.name)); | 450 sync_reg_1_.tag)); |
| 451 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, | 451 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, |
| 452 sync_reg_2_.name)); | 452 sync_reg_2_.tag)); |
| 453 | 453 |
| 454 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, | 454 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_1_, |
| 455 sync_reg_1_.name)); | 455 sync_reg_1_.tag)); |
| 456 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, | 456 EXPECT_TRUE(GetRegistrationWithServiceWorkerId(sw_registration_id_2_, |
| 457 sync_reg_2_.name)); | 457 sync_reg_2_.tag)); |
| 458 | 458 |
| 459 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_1_, sync_reg_2_)); | 459 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_1_, sync_reg_2_)); |
| 460 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_2_, sync_reg_1_)); | 460 EXPECT_TRUE(RegisterWithServiceWorkerId(sw_registration_id_2_, sync_reg_1_)); |
| 461 } | 461 } |
| 462 | 462 |
| 463 TEST_F(BackgroundSyncManagerTest, InitWithBadBackend) { | 463 TEST_F(BackgroundSyncManagerTest, InitWithBadBackend) { |
| 464 TestBackgroundSyncManager* manager = | 464 TestBackgroundSyncManager* manager = |
| 465 new TestBackgroundSyncManager(helper_->context_wrapper()); | 465 new TestBackgroundSyncManager(helper_->context_wrapper()); |
| 466 background_sync_manager_.reset(manager); | 466 background_sync_manager_.reset(manager); |
| 467 manager->set_corrupt_backend(true); | 467 manager->set_corrupt_backend(true); |
| 468 manager->DoInit(); | 468 manager->DoInit(); |
| 469 | 469 |
| 470 EXPECT_FALSE(Register(sync_reg_1_)); | 470 EXPECT_FALSE(Register(sync_reg_1_)); |
| 471 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 471 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 472 } | 472 } |
| 473 | 473 |
| 474 TEST_F(BackgroundSyncManagerTest, SequentialOperations) { | 474 TEST_F(BackgroundSyncManagerTest, SequentialOperations) { |
| 475 // Schedule Init and all of the operations on a delayed backend. Verify that | 475 // Schedule Init and all of the operations on a delayed backend. Verify that |
| 476 // the operations complete sequentially. | 476 // the operations complete sequentially. |
| 477 TestBackgroundSyncManager* manager = | 477 TestBackgroundSyncManager* manager = |
| 478 new TestBackgroundSyncManager(helper_->context_wrapper()); | 478 new TestBackgroundSyncManager(helper_->context_wrapper()); |
| 479 background_sync_manager_.reset(manager); | 479 background_sync_manager_.reset(manager); |
| 480 manager->set_delay_backend(true); | 480 manager->set_delay_backend(true); |
| 481 manager->DoInit(); | 481 manager->DoInit(); |
| 482 | 482 |
| 483 const int64 kExpectedInitialId = | 483 const int64 kExpectedInitialId = |
| 484 BackgroundSyncManager::BackgroundSyncRegistrations::kInitialId; | 484 BackgroundSyncManager::BackgroundSyncRegistrations::kInitialId; |
| 485 | 485 |
| 486 bool register_called = false; | 486 bool register_called = false; |
| 487 bool unregister_called = false; | 487 bool unregister_called = false; |
| 488 bool get_registration_called = false; | 488 bool get_registration_called = false; |
| 489 manager->Register( | 489 manager->Register( |
| 490 GURL(kOrigin), sw_registration_id_1_, sync_reg_1_, | 490 GURL(kOrigin), sw_registration_id_1_, sync_reg_1_, |
| 491 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 491 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
| 492 base::Unretained(this), ®ister_called)); | 492 base::Unretained(this), ®ister_called)); |
| 493 manager->Unregister(GURL(kOrigin), sw_registration_id_1_, sync_reg_1_.name, | 493 manager->Unregister(GURL(kOrigin), sw_registration_id_1_, sync_reg_1_.tag, |
| 494 kExpectedInitialId, | 494 kExpectedInitialId, |
| 495 base::Bind(&BackgroundSyncManagerTest::StatusCallback, | 495 base::Bind(&BackgroundSyncManagerTest::StatusCallback, |
| 496 base::Unretained(this), &unregister_called)); | 496 base::Unretained(this), &unregister_called)); |
| 497 manager->GetRegistration( | 497 manager->GetRegistration( |
| 498 GURL(kOrigin), sw_registration_id_1_, sync_reg_1_.name, | 498 GURL(kOrigin), sw_registration_id_1_, sync_reg_1_.tag, |
| 499 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 499 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
| 500 base::Unretained(this), &get_registration_called)); | 500 base::Unretained(this), &get_registration_called)); |
| 501 | 501 |
| 502 base::RunLoop().RunUntilIdle(); | 502 base::RunLoop().RunUntilIdle(); |
| 503 // Init should be blocked while loading from the backend. | 503 // Init should be blocked while loading from the backend. |
| 504 EXPECT_FALSE(register_called); | 504 EXPECT_FALSE(register_called); |
| 505 EXPECT_FALSE(unregister_called); | 505 EXPECT_FALSE(unregister_called); |
| 506 EXPECT_FALSE(get_registration_called); | 506 EXPECT_FALSE(get_registration_called); |
| 507 | 507 |
| 508 manager->Continue(); | 508 manager->Continue(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 526 // Unregister should be done and since GetRegistration doesn't require the | 526 // Unregister should be done and since GetRegistration doesn't require the |
| 527 // backend it should be done too. | 527 // backend it should be done too. |
| 528 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_NOT_FOUND, callback_error_); | 528 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_NOT_FOUND, callback_error_); |
| 529 EXPECT_TRUE(unregister_called); | 529 EXPECT_TRUE(unregister_called); |
| 530 EXPECT_TRUE(get_registration_called); | 530 EXPECT_TRUE(get_registration_called); |
| 531 } | 531 } |
| 532 | 532 |
| 533 TEST_F(BackgroundSyncManagerTest, UnregisterServiceWorker) { | 533 TEST_F(BackgroundSyncManagerTest, UnregisterServiceWorker) { |
| 534 EXPECT_TRUE(Register(sync_reg_1_)); | 534 EXPECT_TRUE(Register(sync_reg_1_)); |
| 535 UnregisterServiceWorker(sw_registration_id_1_); | 535 UnregisterServiceWorker(sw_registration_id_1_); |
| 536 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 536 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 537 } | 537 } |
| 538 | 538 |
| 539 TEST_F(BackgroundSyncManagerTest, | 539 TEST_F(BackgroundSyncManagerTest, |
| 540 UnregisterServiceWorkerDuringSyncRegistration) { | 540 UnregisterServiceWorkerDuringSyncRegistration) { |
| 541 TestBackgroundSyncManager* manager = | 541 TestBackgroundSyncManager* manager = |
| 542 new TestBackgroundSyncManager(helper_->context_wrapper()); | 542 new TestBackgroundSyncManager(helper_->context_wrapper()); |
| 543 background_sync_manager_.reset(manager); | 543 background_sync_manager_.reset(manager); |
| 544 manager->DoInit(); | 544 manager->DoInit(); |
| 545 | 545 |
| 546 EXPECT_TRUE(Register(sync_reg_1_)); | 546 EXPECT_TRUE(Register(sync_reg_1_)); |
| 547 | 547 |
| 548 manager->set_delay_backend(true); | 548 manager->set_delay_backend(true); |
| 549 bool callback_called = false; | 549 bool callback_called = false; |
| 550 manager->Register( | 550 manager->Register( |
| 551 GURL(kOrigin), sw_registration_id_1_, sync_reg_2_, | 551 GURL(kOrigin), sw_registration_id_1_, sync_reg_2_, |
| 552 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, | 552 base::Bind(&BackgroundSyncManagerTest::StatusAndRegistrationCallback, |
| 553 base::Unretained(this), &callback_called)); | 553 base::Unretained(this), &callback_called)); |
| 554 | 554 |
| 555 base::RunLoop().RunUntilIdle(); | 555 base::RunLoop().RunUntilIdle(); |
| 556 EXPECT_FALSE(callback_called); | 556 EXPECT_FALSE(callback_called); |
| 557 UnregisterServiceWorker(sw_registration_id_1_); | 557 UnregisterServiceWorker(sw_registration_id_1_); |
| 558 | 558 |
| 559 manager->Continue(); | 559 manager->Continue(); |
| 560 base::RunLoop().RunUntilIdle(); | 560 base::RunLoop().RunUntilIdle(); |
| 561 EXPECT_TRUE(callback_called); | 561 EXPECT_TRUE(callback_called); |
| 562 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_STORAGE, callback_error_); | 562 EXPECT_EQ(BackgroundSyncManager::ERROR_TYPE_STORAGE, callback_error_); |
| 563 | 563 |
| 564 manager->set_delay_backend(false); | 564 manager->set_delay_backend(false); |
| 565 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 565 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 566 } | 566 } |
| 567 | 567 |
| 568 TEST_F(BackgroundSyncManagerTest, DeleteAndStartOverServiceWorkerContext) { | 568 TEST_F(BackgroundSyncManagerTest, DeleteAndStartOverServiceWorkerContext) { |
| 569 EXPECT_TRUE(Register(sync_reg_1_)); | 569 EXPECT_TRUE(Register(sync_reg_1_)); |
| 570 helper_->context()->ScheduleDeleteAndStartOver(); | 570 helper_->context()->ScheduleDeleteAndStartOver(); |
| 571 base::RunLoop().RunUntilIdle(); | 571 base::RunLoop().RunUntilIdle(); |
| 572 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 572 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 573 } | 573 } |
| 574 | 574 |
| 575 TEST_F(BackgroundSyncManagerTest, DisabledManagerWorksAfterBrowserRestart) { | 575 TEST_F(BackgroundSyncManagerTest, DisabledManagerWorksAfterBrowserRestart) { |
| 576 TestBackgroundSyncManager* manager = | 576 TestBackgroundSyncManager* manager = |
| 577 new TestBackgroundSyncManager(helper_->context_wrapper()); | 577 new TestBackgroundSyncManager(helper_->context_wrapper()); |
| 578 background_sync_manager_.reset(manager); | 578 background_sync_manager_.reset(manager); |
| 579 manager->DoInit(); | 579 manager->DoInit(); |
| 580 EXPECT_TRUE(Register(sync_reg_1_)); | 580 EXPECT_TRUE(Register(sync_reg_1_)); |
| 581 manager->set_corrupt_backend(true); | 581 manager->set_corrupt_backend(true); |
| 582 EXPECT_FALSE(Register(sync_reg_2_)); | 582 EXPECT_FALSE(Register(sync_reg_2_)); |
| 583 | 583 |
| 584 // The manager is now disabled and not accepting new requests until browser | 584 // The manager is now disabled and not accepting new requests until browser |
| 585 // restart or notification that the storage has been wiped. | 585 // restart or notification that the storage has been wiped. |
| 586 manager->set_corrupt_backend(false); | 586 manager->set_corrupt_backend(false); |
| 587 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 587 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 588 EXPECT_FALSE(Register(sync_reg_2_)); | 588 EXPECT_FALSE(Register(sync_reg_2_)); |
| 589 | 589 |
| 590 // Simulate restarting the browser by creating a new BackgroundSyncManager. | 590 // Simulate restarting the browser by creating a new BackgroundSyncManager. |
| 591 background_sync_manager_.reset( | 591 background_sync_manager_.reset( |
| 592 new TestBackgroundSyncManager(helper_->context_wrapper())); | 592 new TestBackgroundSyncManager(helper_->context_wrapper())); |
| 593 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 593 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 594 EXPECT_TRUE(Register(sync_reg_1_)); | 594 EXPECT_TRUE(Register(sync_reg_1_)); |
| 595 } | 595 } |
| 596 | 596 |
| 597 TEST_F(BackgroundSyncManagerTest, DisabledManagerWorksAfterDeleteAndStartOver) { | 597 TEST_F(BackgroundSyncManagerTest, DisabledManagerWorksAfterDeleteAndStartOver) { |
| 598 TestBackgroundSyncManager* manager = | 598 TestBackgroundSyncManager* manager = |
| 599 new TestBackgroundSyncManager(helper_->context_wrapper()); | 599 new TestBackgroundSyncManager(helper_->context_wrapper()); |
| 600 background_sync_manager_.reset(manager); | 600 background_sync_manager_.reset(manager); |
| 601 manager->DoInit(); | 601 manager->DoInit(); |
| 602 EXPECT_TRUE(Register(sync_reg_1_)); | 602 EXPECT_TRUE(Register(sync_reg_1_)); |
| 603 manager->set_corrupt_backend(true); | 603 manager->set_corrupt_backend(true); |
| 604 EXPECT_FALSE(Register(sync_reg_2_)); | 604 EXPECT_FALSE(Register(sync_reg_2_)); |
| 605 | 605 |
| 606 // The manager is now disabled and not accepting new requests until browser | 606 // The manager is now disabled and not accepting new requests until browser |
| 607 // restart or notification that the storage has been wiped. | 607 // restart or notification that the storage has been wiped. |
| 608 manager->set_corrupt_backend(false); | 608 manager->set_corrupt_backend(false); |
| 609 helper_->context()->ScheduleDeleteAndStartOver(); | 609 helper_->context()->ScheduleDeleteAndStartOver(); |
| 610 base::RunLoop().RunUntilIdle(); | 610 base::RunLoop().RunUntilIdle(); |
| 611 | 611 |
| 612 bool called = false; | 612 bool called = false; |
| 613 helper_->context()->RegisterServiceWorker( | 613 helper_->context()->RegisterServiceWorker( |
| 614 GURL(kPattern1), GURL(kScript1), NULL, | 614 GURL(kPattern1), GURL(kScript1), NULL, |
| 615 base::Bind(&RegisterServiceWorkerCallback, &called, | 615 base::Bind(&RegisterServiceWorkerCallback, &called, |
| 616 &sw_registration_id_1_)); | 616 &sw_registration_id_1_)); |
| 617 base::RunLoop().RunUntilIdle(); | 617 base::RunLoop().RunUntilIdle(); |
| 618 EXPECT_TRUE(called); | 618 EXPECT_TRUE(called); |
| 619 | 619 |
| 620 EXPECT_TRUE(Register(sync_reg_2_)); | 620 EXPECT_TRUE(Register(sync_reg_2_)); |
| 621 EXPECT_FALSE(GetRegistration(sync_reg_1_.name)); | 621 EXPECT_FALSE(GetRegistration(sync_reg_1_.tag)); |
| 622 EXPECT_TRUE(GetRegistration(sync_reg_2_.name)); | 622 EXPECT_TRUE(GetRegistration(sync_reg_2_.tag)); |
| 623 } | 623 } |
| 624 | 624 |
| 625 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsId) { | 625 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsId) { |
| 626 BackgroundSyncManager::BackgroundSyncRegistration reg_1; | 626 BackgroundSyncManager::BackgroundSyncRegistration reg_1; |
| 627 BackgroundSyncManager::BackgroundSyncRegistration reg_2; | 627 BackgroundSyncManager::BackgroundSyncRegistration reg_2; |
| 628 | 628 |
| 629 EXPECT_TRUE(reg_1.Equals(reg_2)); | 629 EXPECT_TRUE(reg_1.Equals(reg_2)); |
| 630 reg_2.id = reg_1.id + 1; | 630 reg_2.id = reg_1.id + 1; |
| 631 EXPECT_TRUE(reg_1.Equals(reg_2)); | 631 EXPECT_TRUE(reg_1.Equals(reg_2)); |
| 632 } | 632 } |
| 633 | 633 |
| 634 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsName) { | 634 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsTag) { |
| 635 BackgroundSyncManager::BackgroundSyncRegistration reg_1; | 635 BackgroundSyncManager::BackgroundSyncRegistration reg_1; |
| 636 BackgroundSyncManager::BackgroundSyncRegistration reg_2; | 636 BackgroundSyncManager::BackgroundSyncRegistration reg_2; |
| 637 EXPECT_TRUE(reg_1.Equals(reg_2)); | 637 EXPECT_TRUE(reg_1.Equals(reg_2)); |
| 638 reg_2.name = "bar"; | 638 reg_2.tag = "bar"; |
| 639 EXPECT_FALSE(reg_1.Equals(reg_2)); | 639 EXPECT_FALSE(reg_1.Equals(reg_2)); |
| 640 } | 640 } |
| 641 | 641 |
| 642 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsFireOnce) { | 642 TEST_F(BackgroundSyncManagerTest, RegistrationEqualsFireOnce) { |
| 643 BackgroundSyncManager::BackgroundSyncRegistration reg_1; | 643 BackgroundSyncManager::BackgroundSyncRegistration reg_1; |
| 644 BackgroundSyncManager::BackgroundSyncRegistration reg_2; | 644 BackgroundSyncManager::BackgroundSyncRegistration reg_2; |
| 645 EXPECT_TRUE(reg_1.Equals(reg_2)); | 645 EXPECT_TRUE(reg_1.Equals(reg_2)); |
| 646 reg_2.fire_once = !reg_1.fire_once; | 646 reg_2.fire_once = !reg_1.fire_once; |
| 647 EXPECT_FALSE(reg_1.Equals(reg_2)); | 647 EXPECT_FALSE(reg_1.Equals(reg_2)); |
| 648 } | 648 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 669 BackgroundSyncManager::BackgroundSyncRegistration reg_2; | 669 BackgroundSyncManager::BackgroundSyncRegistration reg_2; |
| 670 EXPECT_TRUE(reg_1.Equals(reg_2)); | 670 EXPECT_TRUE(reg_1.Equals(reg_2)); |
| 671 reg_1.power_state = POWER_STATE_AUTO; | 671 reg_1.power_state = POWER_STATE_AUTO; |
| 672 reg_2.power_state = POWER_STATE_AVOID_DRAINING; | 672 reg_2.power_state = POWER_STATE_AVOID_DRAINING; |
| 673 EXPECT_FALSE(reg_1.Equals(reg_2)); | 673 EXPECT_FALSE(reg_1.Equals(reg_2)); |
| 674 } | 674 } |
| 675 | 675 |
| 676 TEST_F(BackgroundSyncManagerTest, StoreAndRetrievePreservesValues) { | 676 TEST_F(BackgroundSyncManagerTest, StoreAndRetrievePreservesValues) { |
| 677 BackgroundSyncManager::BackgroundSyncRegistration reg_1; | 677 BackgroundSyncManager::BackgroundSyncRegistration reg_1; |
| 678 // Set non-default values for each field. | 678 // Set non-default values for each field. |
| 679 reg_1.name = "foo"; | 679 reg_1.tag = "foo"; |
| 680 reg_1.fire_once = !reg_1.fire_once; | 680 reg_1.fire_once = !reg_1.fire_once; |
| 681 reg_1.min_period += 1; | 681 reg_1.min_period += 1; |
| 682 EXPECT_NE(NETWORK_STATE_ANY, reg_1.network_state); | 682 EXPECT_NE(NETWORK_STATE_ANY, reg_1.network_state); |
| 683 reg_1.network_state = NETWORK_STATE_ANY; | 683 reg_1.network_state = NETWORK_STATE_ANY; |
| 684 EXPECT_NE(POWER_STATE_AUTO, reg_1.power_state); | 684 EXPECT_NE(POWER_STATE_AUTO, reg_1.power_state); |
| 685 reg_1.power_state = POWER_STATE_AUTO; | 685 reg_1.power_state = POWER_STATE_AUTO; |
| 686 | 686 |
| 687 // Store the registration. | 687 // Store the registration. |
| 688 EXPECT_TRUE(Register(reg_1)); | 688 EXPECT_TRUE(Register(reg_1)); |
| 689 | 689 |
| 690 // Simulate restarting the sync manager, forcing the next read to come from | 690 // Simulate restarting the sync manager, forcing the next read to come from |
| 691 // disk. | 691 // disk. |
| 692 UseTestBackgroundSyncManager(); | 692 UseTestBackgroundSyncManager(); |
| 693 | 693 |
| 694 EXPECT_TRUE(GetRegistration(reg_1.name)); | 694 EXPECT_TRUE(GetRegistration(reg_1.tag)); |
| 695 EXPECT_TRUE(reg_1.Equals(callback_registration_)); | 695 EXPECT_TRUE(reg_1.Equals(callback_registration_)); |
| 696 } | 696 } |
| 697 | 697 |
| 698 } // namespace content | 698 } // namespace content |
| OLD | NEW |