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_model.h" | 5 #include "components/offline_pages/offline_page_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 public base::SupportsWeakPtr<OfflinePageModelTest> { | 165 public base::SupportsWeakPtr<OfflinePageModelTest> { |
166 public: | 166 public: |
167 OfflinePageModelTest(); | 167 OfflinePageModelTest(); |
168 ~OfflinePageModelTest() override; | 168 ~OfflinePageModelTest() override; |
169 | 169 |
170 void SetUp() override; | 170 void SetUp() override; |
171 void TearDown() override; | 171 void TearDown() override; |
172 | 172 |
173 // OfflinePageModel::Observer implementation. | 173 // OfflinePageModel::Observer implementation. |
174 void OfflinePageModelLoaded(OfflinePageModel* model) override; | 174 void OfflinePageModelLoaded(OfflinePageModel* model) override; |
| 175 void OfflinePageModelChanged(OfflinePageModel* model) override; |
175 | 176 |
176 // OfflinePageModel callbacks. | 177 // OfflinePageModel callbacks. |
177 void OnSavePageDone(SavePageResult result); | 178 void OnSavePageDone(SavePageResult result); |
178 void OnDeletePageDone(DeletePageResult result); | 179 void OnDeletePageDone(DeletePageResult result); |
179 | 180 |
180 // OfflinePageMetadataStore callbacks. | 181 // OfflinePageMetadataStore callbacks. |
181 void OnStoreUpdateDone(bool /* success */); | 182 void OnStoreUpdateDone(bool /* success */); |
182 | 183 |
183 scoped_ptr<OfflinePageTestArchiver> BuildArchiver( | 184 scoped_ptr<OfflinePageTestArchiver> BuildArchiver( |
184 const GURL& url, | 185 const GURL& url, |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 | 278 |
278 void OfflinePageModelTest::TearDown() { | 279 void OfflinePageModelTest::TearDown() { |
279 model_->RemoveObserver(this); | 280 model_->RemoveObserver(this); |
280 } | 281 } |
281 | 282 |
282 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { | 283 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { |
283 ASSERT_EQ(model_.get(), model); | 284 ASSERT_EQ(model_.get(), model); |
284 run_loop_->Quit(); | 285 run_loop_->Quit(); |
285 } | 286 } |
286 | 287 |
| 288 void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) { |
| 289 ASSERT_EQ(model_.get(), model); |
| 290 } |
| 291 |
287 void OfflinePageModelTest::OnSavePageDone( | 292 void OfflinePageModelTest::OnSavePageDone( |
288 OfflinePageModel::SavePageResult result) { | 293 OfflinePageModel::SavePageResult result) { |
289 run_loop_->Quit(); | 294 run_loop_->Quit(); |
290 last_save_result_ = result; | 295 last_save_result_ = result; |
291 } | 296 } |
292 | 297 |
293 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { | 298 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { |
294 run_loop_->Quit(); | 299 run_loop_->Quit(); |
295 last_delete_result_ = result; | 300 last_delete_result_ = result; |
296 } | 301 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 ResetResults(); | 369 ResetResults(); |
365 | 370 |
366 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 371 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
367 | 372 |
368 EXPECT_EQ(1UL, offline_pages.size()); | 373 EXPECT_EQ(1UL, offline_pages.size()); |
369 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 374 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
370 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 375 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
371 EXPECT_EQ(archiver_path, offline_pages[0].file_path); | 376 EXPECT_EQ(archiver_path, offline_pages[0].file_path); |
372 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 377 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
373 EXPECT_EQ(0, offline_pages[0].access_count); | 378 EXPECT_EQ(0, offline_pages[0].access_count); |
| 379 EXPECT_EQ(0, offline_pages[0].flags); |
374 } | 380 } |
375 | 381 |
376 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { | 382 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { |
377 scoped_ptr<OfflinePageTestArchiver> archiver( | 383 scoped_ptr<OfflinePageTestArchiver> archiver( |
378 BuildArchiver(kTestUrl, | 384 BuildArchiver(kTestUrl, |
379 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED) | 385 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED) |
380 .Pass()); | 386 .Pass()); |
381 model()->SavePage( | 387 model()->SavePage( |
382 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 388 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
383 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 389 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 ResetResults(); | 504 ResetResults(); |
499 | 505 |
500 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 506 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
501 | 507 |
502 EXPECT_EQ(2UL, offline_pages.size()); | 508 EXPECT_EQ(2UL, offline_pages.size()); |
503 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 509 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
504 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 510 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
505 EXPECT_EQ(archiver_path, offline_pages[0].file_path); | 511 EXPECT_EQ(archiver_path, offline_pages[0].file_path); |
506 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 512 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
507 EXPECT_EQ(0, offline_pages[0].access_count); | 513 EXPECT_EQ(0, offline_pages[0].access_count); |
| 514 EXPECT_EQ(0, offline_pages[0].flags); |
508 EXPECT_EQ(kTestUrl2, offline_pages[1].url); | 515 EXPECT_EQ(kTestUrl2, offline_pages[1].url); |
509 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id); | 516 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id); |
510 EXPECT_EQ(archiver_path2, offline_pages[1].file_path); | 517 EXPECT_EQ(archiver_path2, offline_pages[1].file_path); |
511 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size); | 518 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size); |
512 EXPECT_EQ(0, offline_pages[1].access_count); | 519 EXPECT_EQ(0, offline_pages[1].access_count); |
| 520 EXPECT_EQ(0, offline_pages[1].flags); |
513 } | 521 } |
514 | 522 |
515 TEST_F(OfflinePageModelTest, MarkPageAccessed) { | 523 TEST_F(OfflinePageModelTest, MarkPageAccessed) { |
516 scoped_ptr<OfflinePageTestArchiver> archiver( | 524 scoped_ptr<OfflinePageTestArchiver> archiver( |
517 BuildArchiver(kTestUrl, | 525 BuildArchiver(kTestUrl, |
518 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | 526 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) |
519 .Pass()); | 527 .Pass()); |
520 model()->SavePage( | 528 model()->SavePage( |
521 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 529 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
522 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 530 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
523 PumpLoop(); | 531 PumpLoop(); |
524 | 532 |
525 // This will increase access_count by one. | 533 // This will increase access_count by one. |
526 model()->MarkPageAccessed(kTestPageBookmarkId1); | 534 model()->MarkPageAccessed(kTestPageBookmarkId1); |
527 base::RunLoop().RunUntilIdle(); | 535 base::RunLoop().RunUntilIdle(); |
528 | 536 |
529 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 537 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
530 | 538 |
531 EXPECT_EQ(1UL, offline_pages.size()); | 539 EXPECT_EQ(1UL, offline_pages.size()); |
532 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 540 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
533 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 541 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
534 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 542 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
535 EXPECT_EQ(1, offline_pages[0].access_count); | 543 EXPECT_EQ(1, offline_pages[0].access_count); |
536 } | 544 } |
537 | 545 |
| 546 TEST_F(OfflinePageModelTest, MarkPageForDeletion) { |
| 547 scoped_ptr<OfflinePageTestArchiver> archiver( |
| 548 BuildArchiver(kTestUrl, |
| 549 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) |
| 550 .Pass()); |
| 551 model()->SavePage( |
| 552 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
| 553 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 554 PumpLoop(); |
| 555 |
| 556 // Delete the page with undo tiggerred. |
| 557 model()->MarkPageForDeletion( |
| 558 kTestPageBookmarkId1, |
| 559 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); |
| 560 PumpLoop(); |
| 561 |
| 562 // GetAllPages will not return the page that is marked for deletion. |
| 563 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 564 EXPECT_EQ(0UL, offline_pages.size()); |
| 565 |
| 566 // Undo the deletion. |
| 567 model()->UndoPageDeletion(kTestPageBookmarkId1); |
| 568 base::RunLoop().RunUntilIdle(); |
| 569 |
| 570 // GetAllPages will now return the restored page. |
| 571 const std::vector<OfflinePageItem>& offline_pages_after_undo = |
| 572 model()->GetAllPages(); |
| 573 EXPECT_EQ(1UL, offline_pages_after_undo.size()); |
| 574 } |
| 575 |
538 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { | 576 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { |
539 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 577 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
540 | 578 |
541 EXPECT_EQ(0UL, offline_pages.size()); | 579 EXPECT_EQ(0UL, offline_pages.size()); |
542 } | 580 } |
543 | 581 |
544 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { | 582 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { |
545 GetStore()->set_test_scenario( | 583 GetStore()->set_test_scenario( |
546 OfflinePageTestStore::TestScenario::LOAD_FAILED); | 584 OfflinePageTestStore::TestScenario::LOAD_FAILED); |
547 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 585 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 // has not been in the store long enough. | 788 // has not been in the store long enough. |
751 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp(); | 789 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp(); |
752 EXPECT_EQ(2UL, pages_to_clean_up.size()); | 790 EXPECT_EQ(2UL, pages_to_clean_up.size()); |
753 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url); | 791 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url); |
754 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id); | 792 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id); |
755 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url); | 793 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url); |
756 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id); | 794 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id); |
757 } | 795 } |
758 | 796 |
759 } // namespace offline_pages | 797 } // namespace offline_pages |
OLD | NEW |