| 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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); | 226 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); |
| 227 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); | 227 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); |
| 228 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); | 228 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); |
| 229 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); | 229 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); |
| 230 | 230 |
| 231 void PumpLoop(); | 231 void PumpLoop(); |
| 232 | 232 |
| 233 void GetOfflinePagesCallback( | 233 void GetOfflinePagesCallback( |
| 234 OfflinePageMetadataStore::LoadStatus load_status, | 234 OfflinePageMetadataStore::LoadStatus load_status, |
| 235 const std::vector<OfflinePageItem>& offline_pages); | 235 const std::vector<OfflinePageItem>& offline_pages); |
| 236 void AddCallback(OfflinePageMetadataStore::ItemActionStatus status); | 236 void AddCallback(ItemActionStatus status); |
| 237 void UpdateCallback(CalledCallback called_callback, bool success); | 237 void UpdateCallback(CalledCallback called_callback, |
| 238 std::unique_ptr<StoreUpdateResult> result); |
| 239 void ResetCallback(bool status); |
| 238 | 240 |
| 239 void ClearResults(); | 241 void ClearResults(); |
| 240 | 242 |
| 241 OfflinePageItem CheckThatStoreHasOneItem(); | 243 OfflinePageItem CheckThatStoreHasOneItem(); |
| 242 void CheckThatOfflinePageCanBeSaved( | 244 void CheckThatOfflinePageCanBeSaved( |
| 243 std::unique_ptr<OfflinePageMetadataStore> store); | 245 std::unique_ptr<OfflinePageMetadataStore> store); |
| 244 | 246 |
| 247 StoreUpdateResult* last_update_result() { return last_update_result_.get(); } |
| 248 |
| 245 protected: | 249 protected: |
| 246 CalledCallback last_called_callback_; | 250 CalledCallback last_called_callback_; |
| 247 Status last_status_; | 251 Status last_status_; |
| 252 std::unique_ptr<StoreUpdateResult> last_update_result_; |
| 248 std::vector<OfflinePageItem> offline_pages_; | 253 std::vector<OfflinePageItem> offline_pages_; |
| 249 OfflinePageMetadataStoreFactory factory_; | 254 OfflinePageMetadataStoreFactory factory_; |
| 250 | 255 |
| 251 base::ScopedTempDir temp_directory_; | 256 base::ScopedTempDir temp_directory_; |
| 252 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; | 257 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| 253 base::ThreadTaskRunnerHandle task_runner_handle_; | 258 base::ThreadTaskRunnerHandle task_runner_handle_; |
| 254 }; | 259 }; |
| 255 | 260 |
| 256 OfflinePageMetadataStoreTest::OfflinePageMetadataStoreTest() | 261 OfflinePageMetadataStoreTest::OfflinePageMetadataStoreTest() |
| 257 : last_called_callback_(NONE), | 262 : last_called_callback_(NONE), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 269 | 274 |
| 270 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( | 275 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( |
| 271 OfflinePageMetadataStore::LoadStatus load_status, | 276 OfflinePageMetadataStore::LoadStatus load_status, |
| 272 const std::vector<OfflinePageItem>& offline_pages) { | 277 const std::vector<OfflinePageItem>& offline_pages) { |
| 273 last_called_callback_ = LOAD; | 278 last_called_callback_ = LOAD; |
| 274 last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ? | 279 last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ? |
| 275 STATUS_TRUE : STATUS_FALSE; | 280 STATUS_TRUE : STATUS_FALSE; |
| 276 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); | 281 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); |
| 277 } | 282 } |
| 278 | 283 |
| 279 void OfflinePageMetadataStoreTest::AddCallback( | 284 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) { |
| 280 OfflinePageMetadataStore::ItemActionStatus status) { | |
| 281 last_called_callback_ = ADD; | 285 last_called_callback_ = ADD; |
| 282 // TODO(fgorski): Add specific add status. | 286 // TODO(fgorski): Add specific add status. |
| 283 // last_item_status_ = status; | 287 // last_item_status_ = status; |
| 284 last_status_ = | 288 last_status_ = |
| 285 status == OfflinePageMetadataStore::SUCCESS ? STATUS_TRUE : STATUS_FALSE; | 289 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE; |
| 286 } | 290 } |
| 287 | 291 |
| 288 void OfflinePageMetadataStoreTest::UpdateCallback( | 292 void OfflinePageMetadataStoreTest::UpdateCallback( |
| 289 CalledCallback called_callback, | 293 CalledCallback called_callback, |
| 290 bool status) { | 294 std::unique_ptr<StoreUpdateResult> result) { |
| 291 last_called_callback_ = called_callback; | 295 last_called_callback_ = called_callback; |
| 296 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE; |
| 297 last_update_result_ = std::move(result); |
| 298 } |
| 299 |
| 300 void OfflinePageMetadataStoreTest::ResetCallback(bool status) { |
| 301 last_called_callback_ = RESET; |
| 292 last_status_ = status ? STATUS_TRUE : STATUS_FALSE; | 302 last_status_ = status ? STATUS_TRUE : STATUS_FALSE; |
| 293 } | 303 } |
| 294 | 304 |
| 295 void OfflinePageMetadataStoreTest::ClearResults() { | 305 void OfflinePageMetadataStoreTest::ClearResults() { |
| 296 last_called_callback_ = NONE; | 306 last_called_callback_ = NONE; |
| 297 last_status_ = STATUS_NONE; | 307 last_status_ = STATUS_NONE; |
| 298 offline_pages_.clear(); | 308 offline_pages_.clear(); |
| 309 last_update_result_.reset(nullptr); |
| 299 } | 310 } |
| 300 | 311 |
| 301 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { | 312 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { |
| 302 EXPECT_EQ(LOAD, last_called_callback_); | 313 EXPECT_EQ(LOAD, last_called_callback_); |
| 303 EXPECT_EQ(STATUS_TRUE, last_status_); | 314 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 304 EXPECT_EQ(1U, offline_pages_.size()); | 315 EXPECT_EQ(1U, offline_pages_.size()); |
| 305 | 316 |
| 306 return offline_pages_[0]; | 317 return offline_pages_[0]; |
| 307 } | 318 } |
| 308 | 319 |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 | 510 |
| 500 // Remove the offline page. | 511 // Remove the offline page. |
| 501 std::vector<int64_t> ids_to_remove; | 512 std::vector<int64_t> ids_to_remove; |
| 502 ids_to_remove.push_back(offline_page.offline_id); | 513 ids_to_remove.push_back(offline_page.offline_id); |
| 503 store->RemoveOfflinePages( | 514 store->RemoveOfflinePages( |
| 504 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 515 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 505 base::Unretained(this), REMOVE)); | 516 base::Unretained(this), REMOVE)); |
| 506 PumpLoop(); | 517 PumpLoop(); |
| 507 EXPECT_EQ(REMOVE, last_called_callback_); | 518 EXPECT_EQ(REMOVE, last_called_callback_); |
| 508 EXPECT_EQ(STATUS_TRUE, last_status_); | 519 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 520 ASSERT_TRUE(last_update_result() != nullptr); |
| 521 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 522 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 523 last_update_result()->item_statuses.begin()->second); |
| 524 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 525 EXPECT_EQ(offline_page.offline_id, |
| 526 last_update_result()->updated_items.begin()->offline_id); |
| 509 | 527 |
| 510 ClearResults(); | 528 ClearResults(); |
| 511 | 529 |
| 512 // Load the store. | 530 // Load the store. |
| 513 store->GetOfflinePages( | 531 store->GetOfflinePages( |
| 514 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 532 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 515 base::Unretained(this))); | 533 base::Unretained(this))); |
| 516 PumpLoop(); | 534 PumpLoop(); |
| 517 EXPECT_EQ(LOAD, last_called_callback_); | 535 EXPECT_EQ(LOAD, last_called_callback_); |
| 518 EXPECT_EQ(0U, offline_pages_.size()); | 536 EXPECT_EQ(0U, offline_pages_.size()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 571 | 589 |
| 572 // Remove the offline page. | 590 // Remove the offline page. |
| 573 std::vector<int64_t> ids_to_remove; | 591 std::vector<int64_t> ids_to_remove; |
| 574 ids_to_remove.push_back(offline_page_1.offline_id); | 592 ids_to_remove.push_back(offline_page_1.offline_id); |
| 575 store->RemoveOfflinePages( | 593 store->RemoveOfflinePages( |
| 576 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 594 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 577 base::Unretained(this), REMOVE)); | 595 base::Unretained(this), REMOVE)); |
| 578 PumpLoop(); | 596 PumpLoop(); |
| 579 EXPECT_EQ(REMOVE, last_called_callback_); | 597 EXPECT_EQ(REMOVE, last_called_callback_); |
| 580 EXPECT_EQ(STATUS_TRUE, last_status_); | 598 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 599 ASSERT_TRUE(last_update_result() != nullptr); |
| 600 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 601 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 602 last_update_result()->item_statuses.begin()->second); |
| 603 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 604 EXPECT_EQ(offline_page_1.offline_id, |
| 605 last_update_result()->updated_items.begin()->offline_id); |
| 581 | 606 |
| 582 ClearResults(); | 607 ClearResults(); |
| 583 | 608 |
| 584 // Close and reload the store. | 609 // Close and reload the store. |
| 585 store.reset(); | 610 store.reset(); |
| 586 store = BuildStore(); | 611 store = BuildStore(); |
| 587 store->GetOfflinePages( | 612 store->GetOfflinePages( |
| 588 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 613 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 589 base::Unretained(this))); | 614 base::Unretained(this))); |
| 590 PumpLoop(); | 615 PumpLoop(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 offline_page.access_count++; | 667 offline_page.access_count++; |
| 643 offline_page.expiration_time = base::Time::Now(); | 668 offline_page.expiration_time = base::Time::Now(); |
| 644 std::vector<OfflinePageItem> items_to_update; | 669 std::vector<OfflinePageItem> items_to_update; |
| 645 items_to_update.push_back(offline_page); | 670 items_to_update.push_back(offline_page); |
| 646 store->UpdateOfflinePages( | 671 store->UpdateOfflinePages( |
| 647 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 672 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 648 base::Unretained(this), UPDATE)); | 673 base::Unretained(this), UPDATE)); |
| 649 PumpLoop(); | 674 PumpLoop(); |
| 650 EXPECT_EQ(UPDATE, last_called_callback_); | 675 EXPECT_EQ(UPDATE, last_called_callback_); |
| 651 EXPECT_EQ(STATUS_TRUE, last_status_); | 676 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 677 ASSERT_TRUE(last_update_result() != nullptr); |
| 678 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 679 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 680 last_update_result()->item_statuses.begin()->second); |
| 681 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 682 EXPECT_EQ(offline_page.offline_id, |
| 683 last_update_result()->updated_items.begin()->offline_id); |
| 652 | 684 |
| 653 ClearResults(); | 685 ClearResults(); |
| 654 store->GetOfflinePages( | 686 store->GetOfflinePages( |
| 655 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 687 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 656 base::Unretained(this))); | 688 base::Unretained(this))); |
| 657 PumpLoop(); | 689 PumpLoop(); |
| 658 | 690 |
| 659 EXPECT_EQ(LOAD, last_called_callback_); | 691 EXPECT_EQ(LOAD, last_called_callback_); |
| 660 EXPECT_EQ(STATUS_TRUE, last_status_); | 692 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 661 ASSERT_EQ(1U, offline_pages_.size()); | 693 ASSERT_EQ(1U, offline_pages_.size()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 store->GetOfflinePages( | 732 store->GetOfflinePages( |
| 701 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 733 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 702 base::Unretained(this))); | 734 base::Unretained(this))); |
| 703 PumpLoop(); | 735 PumpLoop(); |
| 704 | 736 |
| 705 EXPECT_EQ(LOAD, last_called_callback_); | 737 EXPECT_EQ(LOAD, last_called_callback_); |
| 706 EXPECT_EQ(STATUS_TRUE, last_status_); | 738 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 707 EXPECT_EQ(2U, offline_pages_.size()); | 739 EXPECT_EQ(2U, offline_pages_.size()); |
| 708 | 740 |
| 709 // Clear all records from the store. | 741 // Clear all records from the store. |
| 710 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 742 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, |
| 711 base::Unretained(this), RESET)); | 743 base::Unretained(this))); |
| 712 PumpLoop(); | 744 PumpLoop(); |
| 713 EXPECT_EQ(RESET, last_called_callback_); | 745 EXPECT_EQ(RESET, last_called_callback_); |
| 714 EXPECT_EQ(STATUS_TRUE, last_status_); | 746 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 715 | 747 |
| 716 // Load the store. | 748 // Load the store. |
| 717 store->GetOfflinePages( | 749 store->GetOfflinePages( |
| 718 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 750 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 719 base::Unretained(this))); | 751 base::Unretained(this))); |
| 720 PumpLoop(); | 752 PumpLoop(); |
| 721 | 753 |
| 722 EXPECT_EQ(LOAD, last_called_callback_); | 754 EXPECT_EQ(LOAD, last_called_callback_); |
| 723 EXPECT_EQ(STATUS_TRUE, last_status_); | 755 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 724 ASSERT_EQ(0U, offline_pages_.size()); | 756 ASSERT_EQ(0U, offline_pages_.size()); |
| 725 } | 757 } |
| 726 | 758 |
| 727 } // namespace | 759 } // namespace |
| 728 } // namespace offline_pages | 760 } // namespace offline_pages |
| OLD | NEW |