| 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 19 matching lines...) Expand all Loading... |
| 328 store = BuildStore(); | 339 store = BuildStore(); |
| 329 PumpLoop(); | 340 PumpLoop(); |
| 330 | 341 |
| 331 EXPECT_EQ(LOAD, last_called_callback_); | 342 EXPECT_EQ(LOAD, last_called_callback_); |
| 332 EXPECT_EQ(STATUS_TRUE, last_status_); | 343 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 333 ASSERT_EQ(store_size + 1, offline_pages_.size()); | 344 ASSERT_EQ(store_size + 1, offline_pages_.size()); |
| 334 if (store_size > 0 && | 345 if (store_size > 0 && |
| 335 offline_pages_[0].offline_id != offline_page.offline_id) { | 346 offline_pages_[0].offline_id != offline_page.offline_id) { |
| 336 std::swap(offline_pages_[0], offline_pages_[1]); | 347 std::swap(offline_pages_[0], offline_pages_[1]); |
| 337 } | 348 } |
| 338 EXPECT_EQ(offline_page.url, offline_pages_[0].url); | 349 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 339 EXPECT_EQ(offline_page.offline_id, offline_pages_[0].offline_id); | |
| 340 EXPECT_EQ(offline_page.file_path, offline_pages_[0].file_path); | |
| 341 EXPECT_EQ(offline_page.last_access_time, offline_pages_[0].last_access_time); | |
| 342 EXPECT_EQ(offline_page.expiration_time, offline_pages_[0].expiration_time); | |
| 343 EXPECT_EQ(offline_page.title, offline_pages_[0].title); | |
| 344 EXPECT_EQ(offline_page.client_id, offline_pages_[0].client_id); | |
| 345 EXPECT_EQ(1234LL, offline_pages_[0].offline_id); | |
| 346 EXPECT_EQ(kFileSize, offline_pages_[0].file_size); | |
| 347 EXPECT_EQ(kTestClientId1, offline_pages_[0].client_id); | |
| 348 } | 350 } |
| 349 | 351 |
| 350 std::unique_ptr<OfflinePageMetadataStore> | 352 std::unique_ptr<OfflinePageMetadataStore> |
| 351 OfflinePageMetadataStoreTest::BuildStore() { | 353 OfflinePageMetadataStoreTest::BuildStore() { |
| 352 std::unique_ptr<OfflinePageMetadataStore> store( | 354 std::unique_ptr<OfflinePageMetadataStore> store( |
| 353 factory_.BuildStore(temp_directory_.GetPath())); | 355 factory_.BuildStore(temp_directory_.GetPath())); |
| 354 PumpLoop(); | 356 PumpLoop(); |
| 355 store->GetOfflinePages( | 357 store->GetOfflinePages( |
| 356 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 358 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 357 base::Unretained(this))); | 359 base::Unretained(this))); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 EXPECT_EQ(LOAD, last_called_callback_); | 404 EXPECT_EQ(LOAD, last_called_callback_); |
| 403 EXPECT_EQ(STATUS_TRUE, last_status_); | 405 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 404 EXPECT_EQ(0U, offline_pages_.size()); | 406 EXPECT_EQ(0U, offline_pages_.size()); |
| 405 } | 407 } |
| 406 | 408 |
| 407 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { | 409 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { |
| 408 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); | 410 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 409 OfflinePageMetadataStoreSQL* sql_store = | 411 OfflinePageMetadataStoreSQL* sql_store = |
| 410 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); | 412 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); |
| 411 | 413 |
| 412 sql_store->SetStateForTesting(OfflinePageMetadataStore::NOT_LOADED, false); | 414 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false); |
| 413 store->GetOfflinePages( | 415 store->GetOfflinePages( |
| 414 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 416 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 415 base::Unretained(this))); | 417 base::Unretained(this))); |
| 416 PumpLoop(); | 418 PumpLoop(); |
| 417 EXPECT_EQ(LOAD, last_called_callback_); | 419 EXPECT_EQ(LOAD, last_called_callback_); |
| 418 EXPECT_EQ(0UL, offline_pages_.size()); | 420 EXPECT_EQ(0UL, offline_pages_.size()); |
| 419 EXPECT_EQ(STATUS_FALSE, last_status_); | 421 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 420 | 422 |
| 421 sql_store->SetStateForTesting( | 423 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); |
| 422 OfflinePageMetadataStore::FAILED_INITIALIZATION, false); | |
| 423 store->GetOfflinePages( | 424 store->GetOfflinePages( |
| 424 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 425 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 425 base::Unretained(this))); | 426 base::Unretained(this))); |
| 426 PumpLoop(); | 427 PumpLoop(); |
| 427 EXPECT_EQ(LOAD, last_called_callback_); | 428 EXPECT_EQ(LOAD, last_called_callback_); |
| 428 EXPECT_EQ(0UL, offline_pages_.size()); | 429 EXPECT_EQ(0UL, offline_pages_.size()); |
| 429 EXPECT_EQ(STATUS_FALSE, last_status_); | 430 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 430 | 431 |
| 431 sql_store->SetStateForTesting( | 432 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); |
| 432 OfflinePageMetadataStore::FAILED_RESET, false); | |
| 433 store->GetOfflinePages( | 433 store->GetOfflinePages( |
| 434 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 434 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 435 base::Unretained(this))); | 435 base::Unretained(this))); |
| 436 PumpLoop(); | 436 PumpLoop(); |
| 437 EXPECT_EQ(LOAD, last_called_callback_); | 437 EXPECT_EQ(LOAD, last_called_callback_); |
| 438 EXPECT_EQ(0UL, offline_pages_.size()); | 438 EXPECT_EQ(0UL, offline_pages_.size()); |
| 439 EXPECT_EQ(STATUS_FALSE, last_status_); | 439 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 440 | 440 |
| 441 sql_store->SetStateForTesting( | 441 sql_store->SetStateForTesting(StoreState::LOADED, true); |
| 442 OfflinePageMetadataStore::LOADED, true); | |
| 443 store->GetOfflinePages( | 442 store->GetOfflinePages( |
| 444 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 443 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 445 base::Unretained(this))); | 444 base::Unretained(this))); |
| 446 PumpLoop(); | 445 PumpLoop(); |
| 447 EXPECT_EQ(LOAD, last_called_callback_); | 446 EXPECT_EQ(LOAD, last_called_callback_); |
| 448 EXPECT_EQ(0UL, offline_pages_.size()); | 447 EXPECT_EQ(0UL, offline_pages_.size()); |
| 449 EXPECT_EQ(STATUS_FALSE, last_status_); | 448 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 450 | 449 |
| 451 sql_store->SetStateForTesting( | 450 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true); |
| 452 OfflinePageMetadataStore::NOT_LOADED, true); | |
| 453 store->GetOfflinePages( | 451 store->GetOfflinePages( |
| 454 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 452 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 455 base::Unretained(this))); | 453 base::Unretained(this))); |
| 456 PumpLoop(); | 454 PumpLoop(); |
| 457 EXPECT_EQ(LOAD, last_called_callback_); | 455 EXPECT_EQ(LOAD, last_called_callback_); |
| 458 EXPECT_EQ(0UL, offline_pages_.size()); | 456 EXPECT_EQ(0UL, offline_pages_.size()); |
| 459 EXPECT_EQ(STATUS_FALSE, last_status_); | 457 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 460 | 458 |
| 461 sql_store->SetStateForTesting( | 459 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); |
| 462 OfflinePageMetadataStore::FAILED_INITIALIZATION, false); | |
| 463 store->GetOfflinePages( | 460 store->GetOfflinePages( |
| 464 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 461 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 465 base::Unretained(this))); | 462 base::Unretained(this))); |
| 466 PumpLoop(); | 463 PumpLoop(); |
| 467 EXPECT_EQ(LOAD, last_called_callback_); | 464 EXPECT_EQ(LOAD, last_called_callback_); |
| 468 EXPECT_EQ(0UL, offline_pages_.size()); | 465 EXPECT_EQ(0UL, offline_pages_.size()); |
| 469 EXPECT_EQ(STATUS_FALSE, last_status_); | 466 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 470 | 467 |
| 471 sql_store->SetStateForTesting( | 468 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); |
| 472 OfflinePageMetadataStore::FAILED_RESET, false); | |
| 473 store->GetOfflinePages( | 469 store->GetOfflinePages( |
| 474 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 470 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 475 base::Unretained(this))); | 471 base::Unretained(this))); |
| 476 PumpLoop(); | 472 PumpLoop(); |
| 477 EXPECT_EQ(LOAD, last_called_callback_); | 473 EXPECT_EQ(LOAD, last_called_callback_); |
| 478 EXPECT_EQ(0UL, offline_pages_.size()); | 474 EXPECT_EQ(0UL, offline_pages_.size()); |
| 479 EXPECT_EQ(STATUS_FALSE, last_status_); | 475 EXPECT_EQ(STATUS_FALSE, last_status_); |
| 480 | 476 |
| 481 } | 477 } |
| 482 | 478 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 | 575 |
| 580 // Remove the offline page. | 576 // Remove the offline page. |
| 581 std::vector<int64_t> ids_to_remove; | 577 std::vector<int64_t> ids_to_remove; |
| 582 ids_to_remove.push_back(offline_page.offline_id); | 578 ids_to_remove.push_back(offline_page.offline_id); |
| 583 store->RemoveOfflinePages( | 579 store->RemoveOfflinePages( |
| 584 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 580 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 585 base::Unretained(this), REMOVE)); | 581 base::Unretained(this), REMOVE)); |
| 586 PumpLoop(); | 582 PumpLoop(); |
| 587 EXPECT_EQ(REMOVE, last_called_callback_); | 583 EXPECT_EQ(REMOVE, last_called_callback_); |
| 588 EXPECT_EQ(STATUS_TRUE, last_status_); | 584 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 585 ASSERT_TRUE(last_update_result() != nullptr); |
| 586 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 587 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 588 last_update_result()->item_statuses.begin()->second); |
| 589 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 590 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); |
| 589 | 591 |
| 590 ClearResults(); | 592 ClearResults(); |
| 591 | 593 |
| 592 // Load the store. | 594 // Load the store. |
| 593 store->GetOfflinePages( | 595 store->GetOfflinePages( |
| 594 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 596 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 595 base::Unretained(this))); | 597 base::Unretained(this))); |
| 596 PumpLoop(); | 598 PumpLoop(); |
| 597 EXPECT_EQ(LOAD, last_called_callback_); | 599 EXPECT_EQ(LOAD, last_called_callback_); |
| 598 EXPECT_EQ(0U, offline_pages_.size()); | 600 EXPECT_EQ(0U, offline_pages_.size()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 | 653 |
| 652 // Remove the offline page. | 654 // Remove the offline page. |
| 653 std::vector<int64_t> ids_to_remove; | 655 std::vector<int64_t> ids_to_remove; |
| 654 ids_to_remove.push_back(offline_page_1.offline_id); | 656 ids_to_remove.push_back(offline_page_1.offline_id); |
| 655 store->RemoveOfflinePages( | 657 store->RemoveOfflinePages( |
| 656 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 658 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 657 base::Unretained(this), REMOVE)); | 659 base::Unretained(this), REMOVE)); |
| 658 PumpLoop(); | 660 PumpLoop(); |
| 659 EXPECT_EQ(REMOVE, last_called_callback_); | 661 EXPECT_EQ(REMOVE, last_called_callback_); |
| 660 EXPECT_EQ(STATUS_TRUE, last_status_); | 662 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 663 ASSERT_TRUE(last_update_result() != nullptr); |
| 664 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 665 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 666 last_update_result()->item_statuses.begin()->second); |
| 667 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 668 EXPECT_EQ(offline_page_1, *(last_update_result()->updated_items.begin())); |
| 661 | 669 |
| 662 ClearResults(); | 670 ClearResults(); |
| 663 | 671 |
| 664 // Close and reload the store. | 672 // Close and reload the store. |
| 665 store.reset(); | 673 store.reset(); |
| 666 store = BuildStore(); | 674 store = BuildStore(); |
| 667 store->GetOfflinePages( | 675 store->GetOfflinePages( |
| 668 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 676 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 669 base::Unretained(this))); | 677 base::Unretained(this))); |
| 670 PumpLoop(); | 678 PumpLoop(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 700 | 708 |
| 701 ClearResults(); | 709 ClearResults(); |
| 702 store->GetOfflinePages( | 710 store->GetOfflinePages( |
| 703 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 711 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 704 base::Unretained(this))); | 712 base::Unretained(this))); |
| 705 PumpLoop(); | 713 PumpLoop(); |
| 706 | 714 |
| 707 EXPECT_EQ(LOAD, last_called_callback_); | 715 EXPECT_EQ(LOAD, last_called_callback_); |
| 708 EXPECT_EQ(STATUS_TRUE, last_status_); | 716 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 709 ASSERT_EQ(1U, offline_pages_.size()); | 717 ASSERT_EQ(1U, offline_pages_.size()); |
| 710 EXPECT_EQ(offline_page.url, offline_pages_[0].url); | 718 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 711 EXPECT_EQ(offline_page.offline_id, offline_pages_[0].offline_id); | |
| 712 EXPECT_EQ(offline_page.file_path, offline_pages_[0].file_path); | |
| 713 EXPECT_EQ(offline_page.file_size, offline_pages_[0].file_size); | |
| 714 EXPECT_EQ(offline_page.creation_time, offline_pages_[0].creation_time); | |
| 715 EXPECT_EQ(offline_page.last_access_time, offline_pages_[0].last_access_time); | |
| 716 EXPECT_EQ(offline_page.expiration_time, offline_pages_[0].expiration_time); | |
| 717 EXPECT_EQ(offline_page.access_count, offline_pages_[0].access_count); | |
| 718 EXPECT_EQ(offline_page.client_id, offline_pages_[0].client_id); | |
| 719 | 719 |
| 720 // Then update some data. | 720 // Then update some data. |
| 721 offline_page.file_size = kFileSize + 1; | 721 offline_page.file_size = kFileSize + 1; |
| 722 offline_page.access_count++; | 722 offline_page.access_count++; |
| 723 offline_page.expiration_time = base::Time::Now(); | 723 offline_page.expiration_time = base::Time::Now(); |
| 724 std::vector<OfflinePageItem> items_to_update; | 724 std::vector<OfflinePageItem> items_to_update; |
| 725 items_to_update.push_back(offline_page); | 725 items_to_update.push_back(offline_page); |
| 726 store->UpdateOfflinePages( | 726 store->UpdateOfflinePages( |
| 727 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 727 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, |
| 728 base::Unretained(this), UPDATE)); | 728 base::Unretained(this), UPDATE)); |
| 729 PumpLoop(); | 729 PumpLoop(); |
| 730 EXPECT_EQ(UPDATE, last_called_callback_); | 730 EXPECT_EQ(UPDATE, last_called_callback_); |
| 731 EXPECT_EQ(STATUS_TRUE, last_status_); | 731 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 732 ASSERT_TRUE(last_update_result() != nullptr); |
| 733 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); |
| 734 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 735 last_update_result()->item_statuses.begin()->second); |
| 736 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); |
| 737 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); |
| 732 | 738 |
| 733 ClearResults(); | 739 ClearResults(); |
| 734 store->GetOfflinePages( | 740 store->GetOfflinePages( |
| 735 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 741 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 736 base::Unretained(this))); | 742 base::Unretained(this))); |
| 737 PumpLoop(); | 743 PumpLoop(); |
| 738 | 744 |
| 739 EXPECT_EQ(LOAD, last_called_callback_); | 745 EXPECT_EQ(LOAD, last_called_callback_); |
| 740 EXPECT_EQ(STATUS_TRUE, last_status_); | 746 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 741 ASSERT_EQ(1U, offline_pages_.size()); | 747 ASSERT_EQ(1U, offline_pages_.size()); |
| 742 EXPECT_EQ(offline_page.url, offline_pages_[0].url); | 748 EXPECT_EQ(offline_page, offline_pages_[0]); |
| 743 EXPECT_EQ(offline_page.offline_id, offline_pages_[0].offline_id); | |
| 744 EXPECT_EQ(offline_page.file_path, offline_pages_[0].file_path); | |
| 745 EXPECT_EQ(offline_page.file_size, offline_pages_[0].file_size); | |
| 746 EXPECT_EQ(offline_page.creation_time, offline_pages_[0].creation_time); | |
| 747 EXPECT_EQ(offline_page.last_access_time, offline_pages_[0].last_access_time); | |
| 748 EXPECT_EQ(offline_page.expiration_time, offline_pages_[0].expiration_time); | |
| 749 EXPECT_EQ(offline_page.access_count, offline_pages_[0].access_count); | |
| 750 EXPECT_EQ(offline_page.client_id, offline_pages_[0].client_id); | |
| 751 } | 749 } |
| 752 | 750 |
| 753 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { | 751 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { |
| 754 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); | 752 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); |
| 755 | 753 |
| 756 // Add 2 offline pages. | 754 // Add 2 offline pages. |
| 757 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, | 755 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, |
| 758 base::FilePath(kFilePath), kFileSize); | 756 base::FilePath(kFilePath), kFileSize); |
| 759 store->AddOfflinePage(offline_page, | 757 store->AddOfflinePage(offline_page, |
| 760 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, | 758 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 780 store->GetOfflinePages( | 778 store->GetOfflinePages( |
| 781 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 779 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 782 base::Unretained(this))); | 780 base::Unretained(this))); |
| 783 PumpLoop(); | 781 PumpLoop(); |
| 784 | 782 |
| 785 EXPECT_EQ(LOAD, last_called_callback_); | 783 EXPECT_EQ(LOAD, last_called_callback_); |
| 786 EXPECT_EQ(STATUS_TRUE, last_status_); | 784 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 787 EXPECT_EQ(2U, offline_pages_.size()); | 785 EXPECT_EQ(2U, offline_pages_.size()); |
| 788 | 786 |
| 789 // Clear all records from the store. | 787 // Clear all records from the store. |
| 790 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, | 788 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, |
| 791 base::Unretained(this), RESET)); | 789 base::Unretained(this))); |
| 792 PumpLoop(); | 790 PumpLoop(); |
| 793 EXPECT_EQ(RESET, last_called_callback_); | 791 EXPECT_EQ(RESET, last_called_callback_); |
| 794 EXPECT_EQ(STATUS_TRUE, last_status_); | 792 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 795 | 793 |
| 796 // Load the store. | 794 // Load the store. |
| 797 store->GetOfflinePages( | 795 store->GetOfflinePages( |
| 798 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, | 796 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, |
| 799 base::Unretained(this))); | 797 base::Unretained(this))); |
| 800 PumpLoop(); | 798 PumpLoop(); |
| 801 | 799 |
| 802 EXPECT_EQ(LOAD, last_called_callback_); | 800 EXPECT_EQ(LOAD, last_called_callback_); |
| 803 EXPECT_EQ(STATUS_TRUE, last_status_); | 801 EXPECT_EQ(STATUS_TRUE, last_status_); |
| 804 ASSERT_EQ(0U, offline_pages_.size()); | 802 ASSERT_EQ(0U, offline_pages_.size()); |
| 805 } | 803 } |
| 806 | 804 |
| 807 } // namespace | 805 } // namespace |
| 808 } // namespace offline_pages | 806 } // namespace offline_pages |
| OLD | NEW |