| 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 "components/offline_pages/offline_page_metadata_store.h" | 5 #include "components/offline_pages/offline_page_metadata_store.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 } | 274 } |
| 275 | 275 |
| 276 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); | 276 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); |
| 277 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); | 277 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); |
| 278 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); | 278 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); |
| 279 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); | 279 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); |
| 280 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM55(); | 280 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM55(); |
| 281 | 281 |
| 282 void PumpLoop(); | 282 void PumpLoop(); |
| 283 | 283 |
| 284 void InitializeCallback(bool success); |
| 284 void GetOfflinePagesCallback( | 285 void GetOfflinePagesCallback( |
| 285 OfflinePageMetadataStore::LoadStatus load_status, | |
| 286 const std::vector<OfflinePageItem>& offline_pages); | 286 const std::vector<OfflinePageItem>& offline_pages); |
| 287 void AddCallback(ItemActionStatus status); | 287 void AddCallback(ItemActionStatus status); |
| 288 void UpdateCallback(CalledCallback called_callback, | 288 void UpdateCallback(CalledCallback called_callback, |
| 289 std::unique_ptr<OfflinePagesUpdateResult> result); | 289 std::unique_ptr<OfflinePagesUpdateResult> result); |
| 290 void ResetCallback(bool status); | 290 void ResetCallback(bool success); |
| 291 | 291 |
| 292 void ClearResults(); | 292 void ClearResults(); |
| 293 | 293 |
| 294 OfflinePageItem CheckThatStoreHasOneItem(); | 294 OfflinePageItem CheckThatStoreHasOneItem(); |
| 295 void CheckThatOfflinePageCanBeSaved( | 295 void CheckThatOfflinePageCanBeSaved( |
| 296 std::unique_ptr<OfflinePageMetadataStore> store); | 296 std::unique_ptr<OfflinePageMetadataStore> store); |
| 297 | 297 |
| 298 OfflinePagesUpdateResult* last_update_result() { | 298 OfflinePagesUpdateResult* last_update_result() { |
| 299 return last_update_result_.get(); | 299 return last_update_result_.get(); |
| 300 } | 300 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 318 task_runner_handle_(task_runner_) { | 318 task_runner_handle_(task_runner_) { |
| 319 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); | 319 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); |
| 320 } | 320 } |
| 321 | 321 |
| 322 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {} | 322 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {} |
| 323 | 323 |
| 324 void OfflinePageMetadataStoreTest::PumpLoop() { | 324 void OfflinePageMetadataStoreTest::PumpLoop() { |
| 325 task_runner_->RunUntilIdle(); | 325 task_runner_->RunUntilIdle(); |
| 326 } | 326 } |
| 327 | 327 |
| 328 void OfflinePageMetadataStoreTest::InitializeCallback(bool success) { |
| 329 last_status_ = success ? STATUS_TRUE : STATUS_FALSE; |
| 330 } |
| 331 |
| 328 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( | 332 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( |
| 329 OfflinePageMetadataStore::LoadStatus load_status, | |
| 330 const std::vector<OfflinePageItem>& offline_pages) { | 333 const std::vector<OfflinePageItem>& offline_pages) { |
| 331 last_called_callback_ = LOAD; | 334 last_called_callback_ = LOAD; |
| 332 last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ? | |
| 333 STATUS_TRUE : STATUS_FALSE; | |
| 334 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); | 335 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); |
| 335 } | 336 } |
| 336 | 337 |
| 337 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) { | 338 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) { |
| 338 last_called_callback_ = ADD; | 339 last_called_callback_ = ADD; |
| 339 // TODO(fgorski): Add specific add status. | 340 // TODO(fgorski): Add specific add status. |
| 340 // last_item_status_ = status; | 341 // last_item_status_ = status; |
| 341 last_status_ = | 342 last_status_ = |
| 342 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE; | 343 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE; |
| 343 } | 344 } |
| 344 | 345 |
| 345 void OfflinePageMetadataStoreTest::UpdateCallback( | 346 void OfflinePageMetadataStoreTest::UpdateCallback( |
| 346 CalledCallback called_callback, | 347 CalledCallback called_callback, |
| 347 std::unique_ptr<OfflinePagesUpdateResult> result) { | 348 std::unique_ptr<OfflinePagesUpdateResult> result) { |
| 348 last_called_callback_ = called_callback; | 349 last_called_callback_ = called_callback; |
| 349 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE; | 350 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE; |
| 350 last_update_result_ = std::move(result); | 351 last_update_result_ = std::move(result); |
| 351 } | 352 } |
| 352 | 353 |
| 353 void OfflinePageMetadataStoreTest::ResetCallback(bool status) { | 354 void OfflinePageMetadataStoreTest::ResetCallback(bool success) { |
| 354 last_called_callback_ = RESET; | 355 last_called_callback_ = RESET; |
| 355 last_status_ = status ? STATUS_TRUE : STATUS_FALSE; | 356 last_status_ = success ? STATUS_TRUE : STATUS_FALSE; |
| 356 } | 357 } |
| 357 | 358 |
| 358 void OfflinePageMetadataStoreTest::ClearResults() { | 359 void OfflinePageMetadataStoreTest::ClearResults() { |
| 359 last_called_callback_ = NONE; | 360 last_called_callback_ = NONE; |
| 360 last_status_ = STATUS_NONE; | 361 last_status_ = STATUS_NONE; |
| 361 offline_pages_.clear(); | 362 offline_pages_.clear(); |
| 362 last_update_result_.reset(nullptr); | 363 last_update_result_.reset(nullptr); |
| 363 } | 364 } |
| 364 | 365 |
| 365 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { | 366 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 std::swap(offline_pages_[0], offline_pages_[1]); | 402 std::swap(offline_pages_[0], offline_pages_[1]); |
| 402 } | 403 } |
| 403 EXPECT_EQ(offline_page, offline_pages_[0]); | 404 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 404 } | 405 } |
| 405 | 406 |
| 406 std::unique_ptr<OfflinePageMetadataStore> | 407 std::unique_ptr<OfflinePageMetadataStore> |
| 407 OfflinePageMetadataStoreTest::BuildStore() { | 408 OfflinePageMetadataStoreTest::BuildStore() { |
| 408 std::unique_ptr<OfflinePageMetadataStore> store( | 409 std::unique_ptr<OfflinePageMetadataStore> store( |
| 409 factory_.BuildStore(temp_directory_.GetPath())); | 410 factory_.BuildStore(temp_directory_.GetPath())); |
| 410 PumpLoop(); | 411 PumpLoop(); |
| 412 store->Initialize( |
| 413 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback, |
| 414 base::Unretained(this))); |
| 415 PumpLoop(); |
| 411 store->GetOfflinePages( | 416 store->GetOfflinePages( |
| 412 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 417 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 413 base::Unretained(this))); | 418 base::Unretained(this))); |
| 414 PumpLoop(); | 419 PumpLoop(); |
| 415 return store; | 420 return store; |
| 416 } | 421 } |
| 417 | 422 |
| 418 std::unique_ptr<OfflinePageMetadataStore> | 423 std::unique_ptr<OfflinePageMetadataStore> |
| 419 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() { | 424 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() { |
| 420 std::unique_ptr<OfflinePageMetadataStore> store( | 425 std::unique_ptr<OfflinePageMetadataStore> store( |
| 421 factory_.BuildStoreM52(temp_directory_.GetPath())); | 426 factory_.BuildStoreM52(temp_directory_.GetPath())); |
| 422 PumpLoop(); | 427 PumpLoop(); |
| 428 store->Initialize( |
| 429 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback, |
| 430 base::Unretained(this))); |
| 431 PumpLoop(); |
| 423 store->GetOfflinePages( | 432 store->GetOfflinePages( |
| 424 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 433 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 425 base::Unretained(this))); | 434 base::Unretained(this))); |
| 426 PumpLoop(); | 435 PumpLoop(); |
| 427 return store; | 436 return store; |
| 428 } | 437 } |
| 429 | 438 |
| 430 std::unique_ptr<OfflinePageMetadataStore> | 439 std::unique_ptr<OfflinePageMetadataStore> |
| 431 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() { | 440 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() { |
| 432 std::unique_ptr<OfflinePageMetadataStore> store( | 441 std::unique_ptr<OfflinePageMetadataStore> store( |
| 433 factory_.BuildStoreM53(temp_directory_.GetPath())); | 442 factory_.BuildStoreM53(temp_directory_.GetPath())); |
| 434 PumpLoop(); | 443 PumpLoop(); |
| 444 store->Initialize( |
| 445 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback, |
| 446 base::Unretained(this))); |
| 447 PumpLoop(); |
| 435 store->GetOfflinePages( | 448 store->GetOfflinePages( |
| 436 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 449 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 437 base::Unretained(this))); | 450 base::Unretained(this))); |
| 438 PumpLoop(); | 451 PumpLoop(); |
| 439 return store; | 452 return store; |
| 440 } | 453 } |
| 441 | 454 |
| 442 std::unique_ptr<OfflinePageMetadataStore> | 455 std::unique_ptr<OfflinePageMetadataStore> |
| 443 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() { | 456 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() { |
| 444 std::unique_ptr<OfflinePageMetadataStore> store( | 457 std::unique_ptr<OfflinePageMetadataStore> store( |
| 445 factory_.BuildStoreM53(temp_directory_.GetPath())); | 458 factory_.BuildStoreM53(temp_directory_.GetPath())); |
| 446 PumpLoop(); | 459 PumpLoop(); |
| 460 store->Initialize( |
| 461 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback, |
| 462 base::Unretained(this))); |
| 463 PumpLoop(); |
| 447 store->GetOfflinePages( | 464 store->GetOfflinePages( |
| 448 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 465 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 449 base::Unretained(this))); | 466 base::Unretained(this))); |
| 450 PumpLoop(); | 467 PumpLoop(); |
| 451 return store; | 468 return store; |
| 452 } | 469 } |
| 453 | 470 |
| 454 std::unique_ptr<OfflinePageMetadataStore> | 471 std::unique_ptr<OfflinePageMetadataStore> |
| 455 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM55() { | 472 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM55() { |
| 456 std::unique_ptr<OfflinePageMetadataStore> store( | 473 std::unique_ptr<OfflinePageMetadataStore> store( |
| 457 factory_.BuildStoreM55(temp_directory_.GetPath())); | 474 factory_.BuildStoreM55(temp_directory_.GetPath())); |
| 458 PumpLoop(); | 475 PumpLoop(); |
| 476 store->Initialize( |
| 477 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback, |
| 478 base::Unretained(this))); |
| 479 PumpLoop(); |
| 459 store->GetOfflinePages( | 480 store->GetOfflinePages( |
| 460 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 481 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 461 base::Unretained(this))); | 482 base::Unretained(this))); |
| 462 PumpLoop(); | 483 PumpLoop(); |
| 463 return store; | 484 return store; |
| 464 } | 485 } |
| 465 | 486 |
| 466 // Loads empty store and makes sure that there are no offline pages stored in | 487 // Loads empty store and makes sure that there are no offline pages stored in |
| 467 // it. | 488 // it. |
| 468 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) { | 489 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) { |
| 469 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); | 490 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 470 EXPECT_EQ(LOAD, last_called_callback_); | 491 EXPECT_EQ(LOAD, last_called_callback_); |
| 471 EXPECT_EQ(STATUS_TRUE, last_status_); | 492 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 472 EXPECT_EQ(0U, offline_pages_.size()); | 493 EXPECT_EQ(0U, offline_pages_.size()); |
| 473 } | 494 } |
| 474 | 495 |
| 475 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { | 496 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { |
| 476 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); | 497 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 477 OfflinePageMetadataStoreSQL* sql_store = | 498 OfflinePageMetadataStoreSQL* sql_store = |
| 478 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); | 499 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); |
| 479 | 500 |
| 480 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false); | 501 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false); |
| 481 store->GetOfflinePages( | 502 store->GetOfflinePages( |
| 482 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 503 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 483 base::Unretained(this))); | 504 base::Unretained(this))); |
| 484 PumpLoop(); | 505 PumpLoop(); |
| 485 EXPECT_EQ(LOAD, last_called_callback_); | 506 EXPECT_EQ(LOAD, last_called_callback_); |
| 486 EXPECT_EQ(0UL, offline_pages_.size()); | 507 EXPECT_EQ(0UL, offline_pages_.size()); |
| 487 EXPECT_EQ(STATUS_FALSE, last_status_); | 508 EXPECT_EQ(StoreState::NOT_LOADED, store->state()); |
| 488 | 509 |
| 510 ClearResults(); |
| 489 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); | 511 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); |
| 490 store->GetOfflinePages( | 512 store->GetOfflinePages( |
| 491 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 513 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 492 base::Unretained(this))); | 514 base::Unretained(this))); |
| 493 PumpLoop(); | 515 PumpLoop(); |
| 494 EXPECT_EQ(LOAD, last_called_callback_); | 516 EXPECT_EQ(LOAD, last_called_callback_); |
| 495 EXPECT_EQ(0UL, offline_pages_.size()); | 517 EXPECT_EQ(0UL, offline_pages_.size()); |
| 496 EXPECT_EQ(STATUS_FALSE, last_status_); | 518 EXPECT_EQ(StoreState::FAILED_LOADING, store->state()); |
| 497 | 519 |
| 520 ClearResults(); |
| 498 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); | 521 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); |
| 499 store->GetOfflinePages( | 522 store->GetOfflinePages( |
| 500 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 523 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 501 base::Unretained(this))); | 524 base::Unretained(this))); |
| 502 PumpLoop(); | 525 PumpLoop(); |
| 503 EXPECT_EQ(LOAD, last_called_callback_); | 526 EXPECT_EQ(LOAD, last_called_callback_); |
| 504 EXPECT_EQ(0UL, offline_pages_.size()); | 527 EXPECT_EQ(0UL, offline_pages_.size()); |
| 505 EXPECT_EQ(STATUS_FALSE, last_status_); | 528 EXPECT_EQ(StoreState::FAILED_RESET, store->state()); |
| 506 | 529 |
| 530 ClearResults(); |
| 507 sql_store->SetStateForTesting(StoreState::LOADED, true); | 531 sql_store->SetStateForTesting(StoreState::LOADED, true); |
| 508 store->GetOfflinePages( | 532 store->GetOfflinePages( |
| 509 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 533 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 510 base::Unretained(this))); | 534 base::Unretained(this))); |
| 511 PumpLoop(); | 535 PumpLoop(); |
| 512 EXPECT_EQ(LOAD, last_called_callback_); | 536 EXPECT_EQ(LOAD, last_called_callback_); |
| 513 EXPECT_EQ(0UL, offline_pages_.size()); | 537 EXPECT_EQ(0UL, offline_pages_.size()); |
| 514 EXPECT_EQ(STATUS_FALSE, last_status_); | |
| 515 | 538 |
| 539 ClearResults(); |
| 516 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true); | 540 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true); |
| 517 store->GetOfflinePages( | 541 store->GetOfflinePages( |
| 518 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 542 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 519 base::Unretained(this))); | 543 base::Unretained(this))); |
| 520 PumpLoop(); | 544 PumpLoop(); |
| 521 EXPECT_EQ(LOAD, last_called_callback_); | 545 EXPECT_EQ(LOAD, last_called_callback_); |
| 522 EXPECT_EQ(0UL, offline_pages_.size()); | 546 EXPECT_EQ(0UL, offline_pages_.size()); |
| 523 EXPECT_EQ(STATUS_FALSE, last_status_); | |
| 524 | 547 |
| 548 ClearResults(); |
| 525 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); | 549 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); |
| 526 store->GetOfflinePages( | 550 store->GetOfflinePages( |
| 527 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 551 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 528 base::Unretained(this))); | 552 base::Unretained(this))); |
| 529 PumpLoop(); | 553 PumpLoop(); |
| 530 EXPECT_EQ(LOAD, last_called_callback_); | 554 EXPECT_EQ(LOAD, last_called_callback_); |
| 531 EXPECT_EQ(0UL, offline_pages_.size()); | 555 EXPECT_EQ(0UL, offline_pages_.size()); |
| 532 EXPECT_EQ(STATUS_FALSE, last_status_); | |
| 533 | 556 |
| 557 ClearResults(); |
| 534 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); | 558 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); |
| 535 store->GetOfflinePages( | 559 store->GetOfflinePages( |
| 536 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 560 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 537 base::Unretained(this))); | 561 base::Unretained(this))); |
| 538 PumpLoop(); | 562 PumpLoop(); |
| 539 EXPECT_EQ(LOAD, last_called_callback_); | 563 EXPECT_EQ(LOAD, last_called_callback_); |
| 540 EXPECT_EQ(0UL, offline_pages_.size()); | 564 EXPECT_EQ(0UL, offline_pages_.size()); |
| 541 EXPECT_EQ(STATUS_FALSE, last_status_); | |
| 542 | |
| 543 } | 565 } |
| 544 | 566 |
| 545 // Loads a store which has an outdated schema. | 567 // Loads a store which has an outdated schema. |
| 546 // This test case would crash if it's not handling correctly when we're loading | 568 // This test case would crash if it's not handling correctly when we're loading |
| 547 // old version stores. | 569 // old version stores. |
| 548 // TODO(romax): Move this to sql_unittest. | 570 // TODO(romax): Move this to sql_unittest. |
| 549 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) { | 571 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) { |
| 550 std::unique_ptr<OfflinePageMetadataStore> store( | 572 std::unique_ptr<OfflinePageMetadataStore> store( |
| 551 BuildStoreWithSchemaFromM52()); | 573 BuildStoreWithSchemaFromM52()); |
| 552 | 574 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 base::FilePath(kFilePath), kFileSize); | 659 base::FilePath(kFilePath), kFileSize); |
| 638 store->AddOfflinePage(offline_page, | 660 store->AddOfflinePage(offline_page, |
| 639 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, | 661 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, |
| 640 base::Unretained(this))); | 662 base::Unretained(this))); |
| 641 PumpLoop(); | 663 PumpLoop(); |
| 642 EXPECT_EQ(ADD, last_called_callback_); | 664 EXPECT_EQ(ADD, last_called_callback_); |
| 643 EXPECT_EQ(STATUS_TRUE, last_status_); | 665 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 644 | 666 |
| 645 ClearResults(); | 667 ClearResults(); |
| 646 | 668 |
| 647 // Load the store. | 669 // Get all pages from the store. |
| 648 store->GetOfflinePages( | 670 store->GetOfflinePages( |
| 649 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 671 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 650 base::Unretained(this))); | 672 base::Unretained(this))); |
| 651 PumpLoop(); | 673 PumpLoop(); |
| 652 EXPECT_EQ(LOAD, last_called_callback_); | 674 EXPECT_EQ(LOAD, last_called_callback_); |
| 653 EXPECT_EQ(1U, offline_pages_.size()); | 675 EXPECT_EQ(1U, offline_pages_.size()); |
| 654 | 676 |
| 655 // Remove the offline page. | 677 // Remove the offline page. |
| 656 std::vector<int64_t> ids_to_remove; | 678 std::vector<int64_t> ids_to_remove; |
| 657 ids_to_remove.push_back(offline_page.offline_id); | 679 ids_to_remove.push_back(offline_page.offline_id); |
| 658 store->RemoveOfflinePages( | 680 store->RemoveOfflinePages( |
| 659 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 681 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 660 base::Unretained(this), REMOVE)); | 682 base::Unretained(this), REMOVE)); |
| 661 PumpLoop(); | 683 PumpLoop(); |
| 662 EXPECT_EQ(REMOVE, last_called_callback_); | 684 EXPECT_EQ(REMOVE, last_called_callback_); |
| 663 EXPECT_EQ(STATUS_TRUE, last_status_); | 685 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 664 ASSERT_TRUE(last_update_result() != nullptr); | 686 ASSERT_TRUE(last_update_result() != nullptr); |
| 665 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); | 687 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 666 EXPECT_EQ(ItemActionStatus::SUCCESS, | 688 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 667 last_update_result()->item_statuses.begin()->second); | 689 last_update_result()->item_statuses.begin()->second); |
| 668 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); | 690 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 669 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); | 691 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); |
| 670 | 692 |
| 671 ClearResults(); | 693 ClearResults(); |
| 672 | 694 |
| 673 // Load the store. | 695 // Get all pages from the store. |
| 674 store->GetOfflinePages( | 696 store->GetOfflinePages( |
| 675 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 697 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 676 base::Unretained(this))); | 698 base::Unretained(this))); |
| 677 PumpLoop(); | 699 PumpLoop(); |
| 678 EXPECT_EQ(LOAD, last_called_callback_); | 700 EXPECT_EQ(LOAD, last_called_callback_); |
| 679 EXPECT_EQ(0U, offline_pages_.size()); | 701 EXPECT_EQ(0U, offline_pages_.size()); |
| 680 | 702 |
| 681 ClearResults(); | 703 ClearResults(); |
| 682 | 704 |
| 683 // Close and reload the store. | 705 // Close and reload the store. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 714 offline_page_2.original_url = GURL("https://example.com/bar"); | 736 offline_page_2.original_url = GURL("https://example.com/bar"); |
| 715 store->AddOfflinePage(offline_page_2, | 737 store->AddOfflinePage(offline_page_2, |
| 716 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, | 738 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, |
| 717 base::Unretained(this))); | 739 base::Unretained(this))); |
| 718 PumpLoop(); | 740 PumpLoop(); |
| 719 EXPECT_EQ(ADD, last_called_callback_); | 741 EXPECT_EQ(ADD, last_called_callback_); |
| 720 EXPECT_EQ(STATUS_TRUE, last_status_); | 742 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 721 | 743 |
| 722 ClearResults(); | 744 ClearResults(); |
| 723 | 745 |
| 724 // Load the store. | 746 // Get all pages from the store. |
| 725 store->GetOfflinePages( | 747 store->GetOfflinePages( |
| 726 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 748 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 727 base::Unretained(this))); | 749 base::Unretained(this))); |
| 728 PumpLoop(); | 750 PumpLoop(); |
| 729 | 751 |
| 730 EXPECT_EQ(LOAD, last_called_callback_); | 752 EXPECT_EQ(LOAD, last_called_callback_); |
| 731 EXPECT_EQ(STATUS_TRUE, last_status_); | |
| 732 EXPECT_EQ(2U, offline_pages_.size()); | 753 EXPECT_EQ(2U, offline_pages_.size()); |
| 733 | 754 |
| 734 // Remove the offline page. | 755 // Remove the offline page. |
| 735 std::vector<int64_t> ids_to_remove; | 756 std::vector<int64_t> ids_to_remove; |
| 736 ids_to_remove.push_back(offline_page_1.offline_id); | 757 ids_to_remove.push_back(offline_page_1.offline_id); |
| 737 store->RemoveOfflinePages( | 758 store->RemoveOfflinePages( |
| 738 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 759 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 739 base::Unretained(this), REMOVE)); | 760 base::Unretained(this), REMOVE)); |
| 740 PumpLoop(); | 761 PumpLoop(); |
| 741 EXPECT_EQ(REMOVE, last_called_callback_); | 762 EXPECT_EQ(REMOVE, last_called_callback_); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 EXPECT_EQ(ADD, last_called_callback_); | 807 EXPECT_EQ(ADD, last_called_callback_); |
| 787 EXPECT_EQ(STATUS_TRUE, last_status_); | 808 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 788 | 809 |
| 789 ClearResults(); | 810 ClearResults(); |
| 790 store->GetOfflinePages( | 811 store->GetOfflinePages( |
| 791 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 812 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 792 base::Unretained(this))); | 813 base::Unretained(this))); |
| 793 PumpLoop(); | 814 PumpLoop(); |
| 794 | 815 |
| 795 EXPECT_EQ(LOAD, last_called_callback_); | 816 EXPECT_EQ(LOAD, last_called_callback_); |
| 796 EXPECT_EQ(STATUS_TRUE, last_status_); | |
| 797 ASSERT_EQ(1U, offline_pages_.size()); | 817 ASSERT_EQ(1U, offline_pages_.size()); |
| 798 EXPECT_EQ(offline_page, offline_pages_[0]); | 818 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 799 | 819 |
| 800 // Then update some data. | 820 // Then update some data. |
| 801 offline_page.file_size = kFileSize + 1; | 821 offline_page.file_size = kFileSize + 1; |
| 802 offline_page.access_count++; | 822 offline_page.access_count++; |
| 803 offline_page.expiration_time = base::Time::Now(); | 823 offline_page.expiration_time = base::Time::Now(); |
| 804 offline_page.original_url = GURL("https://example.com/bar"); | 824 offline_page.original_url = GURL("https://example.com/bar"); |
| 805 std::vector<OfflinePageItem> items_to_update; | 825 std::vector<OfflinePageItem> items_to_update; |
| 806 items_to_update.push_back(offline_page); | 826 items_to_update.push_back(offline_page); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 817 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); | 837 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 818 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); | 838 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); |
| 819 | 839 |
| 820 ClearResults(); | 840 ClearResults(); |
| 821 store->GetOfflinePages( | 841 store->GetOfflinePages( |
| 822 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 842 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 823 base::Unretained(this))); | 843 base::Unretained(this))); |
| 824 PumpLoop(); | 844 PumpLoop(); |
| 825 | 845 |
| 826 EXPECT_EQ(LOAD, last_called_callback_); | 846 EXPECT_EQ(LOAD, last_called_callback_); |
| 827 EXPECT_EQ(STATUS_TRUE, last_status_); | |
| 828 ASSERT_EQ(1U, offline_pages_.size()); | 847 ASSERT_EQ(1U, offline_pages_.size()); |
| 829 EXPECT_EQ(offline_page, offline_pages_[0]); | 848 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 830 } | 849 } |
| 831 | 850 |
| 832 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { | 851 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { |
| 833 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); | 852 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 834 | 853 |
| 835 // Add 2 offline pages. | 854 // Add 2 offline pages. |
| 836 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, | 855 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, |
| 837 base::FilePath(kFilePath), kFileSize); | 856 base::FilePath(kFilePath), kFileSize); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 848 base::FilePath(kFilePath), kFileSize); | 867 base::FilePath(kFilePath), kFileSize); |
| 849 store->AddOfflinePage(offline_page2, | 868 store->AddOfflinePage(offline_page2, |
| 850 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, | 869 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, |
| 851 base::Unretained(this))); | 870 base::Unretained(this))); |
| 852 PumpLoop(); | 871 PumpLoop(); |
| 853 EXPECT_EQ(ADD, last_called_callback_); | 872 EXPECT_EQ(ADD, last_called_callback_); |
| 854 EXPECT_EQ(STATUS_TRUE, last_status_); | 873 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 855 | 874 |
| 856 ClearResults(); | 875 ClearResults(); |
| 857 | 876 |
| 858 // Load the store. | 877 // Get all pages from the store. |
| 859 store->GetOfflinePages( | 878 store->GetOfflinePages( |
| 860 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 879 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 861 base::Unretained(this))); | 880 base::Unretained(this))); |
| 862 PumpLoop(); | 881 PumpLoop(); |
| 863 | 882 |
| 864 EXPECT_EQ(LOAD, last_called_callback_); | 883 EXPECT_EQ(LOAD, last_called_callback_); |
| 865 EXPECT_EQ(STATUS_TRUE, last_status_); | |
| 866 EXPECT_EQ(2U, offline_pages_.size()); | 884 EXPECT_EQ(2U, offline_pages_.size()); |
| 867 | 885 |
| 868 // Clear all records from the store. | 886 // Clear all records from the store. |
| 869 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, | 887 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, |
| 870 base::Unretained(this))); | 888 base::Unretained(this))); |
| 871 PumpLoop(); | 889 PumpLoop(); |
| 872 EXPECT_EQ(RESET, last_called_callback_); | 890 EXPECT_EQ(RESET, last_called_callback_); |
| 873 EXPECT_EQ(STATUS_TRUE, last_status_); | 891 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 874 | 892 |
| 875 // Load the store. | 893 ClearResults(); |
| 894 |
| 895 // Get all pages from the store. |
| 876 store->GetOfflinePages( | 896 store->GetOfflinePages( |
| 877 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 897 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 878 base::Unretained(this))); | 898 base::Unretained(this))); |
| 879 PumpLoop(); | 899 PumpLoop(); |
| 880 | 900 |
| 881 EXPECT_EQ(LOAD, last_called_callback_); | 901 EXPECT_EQ(LOAD, last_called_callback_); |
| 902 ASSERT_EQ(0U, offline_pages_.size()); |
| 903 } |
| 904 |
| 905 TEST_F(OfflinePageMetadataStoreTest, ResetStore) { |
| 906 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 907 |
| 908 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, |
| 909 base::Unretained(this))); |
| 910 PumpLoop(); |
| 882 EXPECT_EQ(STATUS_TRUE, last_status_); | 911 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 883 ASSERT_EQ(0U, offline_pages_.size()); | |
| 884 } | 912 } |
| 885 | 913 |
| 886 } // namespace | 914 } // namespace |
| 887 } // namespace offline_pages | 915 } // namespace offline_pages |
| OLD | NEW |