Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: components/offline_pages/offline_page_model_unittest.cc

Issue 1345043002: Update access info when an offline page is being visited (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address some more feedback Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 30 matching lines...) Expand all
41 REMOVE_FAILED, 41 REMOVE_FAILED,
42 }; 42 };
43 43
44 explicit OfflinePageTestStore( 44 explicit OfflinePageTestStore(
45 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); 45 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
46 explicit OfflinePageTestStore(const OfflinePageTestStore& other_store); 46 explicit OfflinePageTestStore(const OfflinePageTestStore& other_store);
47 ~OfflinePageTestStore() override; 47 ~OfflinePageTestStore() override;
48 48
49 // OfflinePageMetadataStore overrides: 49 // OfflinePageMetadataStore overrides:
50 void Load(const LoadCallback& callback) override; 50 void Load(const LoadCallback& callback) override;
51 void AddOfflinePage(const OfflinePageItem& offline_page, 51 void AddOrUpdateOfflinePage(const OfflinePageItem& offline_page,
52 const UpdateCallback& callback) override; 52 const UpdateCallback& callback) override;
53 void RemoveOfflinePages(const std::vector<int64>& bookmark_ids, 53 void RemoveOfflinePages(const std::vector<int64>& bookmark_ids,
54 const UpdateCallback& callback) override; 54 const UpdateCallback& callback) override;
55 const OfflinePageItem& last_saved_page() const { return last_saved_page_; } 55 const OfflinePageItem& last_saved_page() const { return last_saved_page_; }
56 56
57 void set_test_scenario(TestScenario scenario) { scenario_ = scenario; }; 57 void set_test_scenario(TestScenario scenario) { scenario_ = scenario; };
58 58
59 const std::vector<OfflinePageItem>& offline_pages() const { 59 const std::vector<OfflinePageItem>& offline_pages() const {
60 return offline_pages_; 60 return offline_pages_;
61 } 61 }
62 62
(...skipping 25 matching lines...) Expand all
88 void OfflinePageTestStore::Load(const LoadCallback& callback) { 88 void OfflinePageTestStore::Load(const LoadCallback& callback) {
89 if (scenario_ != TestScenario::LOAD_FAILED) { 89 if (scenario_ != TestScenario::LOAD_FAILED) {
90 task_runner_->PostTask( 90 task_runner_->PostTask(
91 FROM_HERE, base::Bind(callback, true, offline_pages_)); 91 FROM_HERE, base::Bind(callback, true, offline_pages_));
92 } else { 92 } else {
93 task_runner_->PostTask( 93 task_runner_->PostTask(
94 FROM_HERE, base::Bind(callback, false, std::vector<OfflinePageItem>())); 94 FROM_HERE, base::Bind(callback, false, std::vector<OfflinePageItem>()));
95 } 95 }
96 } 96 }
97 97
98 void OfflinePageTestStore::AddOfflinePage(const OfflinePageItem& offline_page, 98 void OfflinePageTestStore::AddOrUpdateOfflinePage(
99 const UpdateCallback& callback) { 99 const OfflinePageItem& offline_page, const UpdateCallback& callback) {
100 last_saved_page_ = offline_page; 100 last_saved_page_ = offline_page;
101 bool result = scenario_ != TestScenario::WRITE_FAILED; 101 bool result = scenario_ != TestScenario::WRITE_FAILED;
102 if (result) { 102 if (result) {
103 offline_pages_.push_back(offline_page); 103 offline_pages_.push_back(offline_page);
104 } 104 }
105 task_runner_->PostTask(FROM_HERE, base::Bind(callback, result)); 105 task_runner_->PostTask(FROM_HERE, base::Bind(callback, result));
106 } 106 }
107 107
108 void OfflinePageTestStore::RemoveOfflinePages( 108 void OfflinePageTestStore::RemoveOfflinePages(
109 const std::vector<int64>& bookmark_ids, 109 const std::vector<int64>& bookmark_ids,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 175
176 // OfflinePageModel callbacks. 176 // OfflinePageModel callbacks.
177 void OnSavePageDone(SavePageResult result); 177 void OnSavePageDone(SavePageResult result);
178 void OnMarkPageAccessedDone(bool success);
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,
185 OfflinePageArchiver::ArchiverResult result); 186 OfflinePageArchiver::ArchiverResult result);
186 scoped_ptr<OfflinePageMetadataStore> BuildStore(); 187 scoped_ptr<OfflinePageMetadataStore> BuildStore();
187 scoped_ptr<OfflinePageModel> BuildModel( 188 scoped_ptr<OfflinePageModel> BuildModel(
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 ASSERT_EQ(model_.get(), model); 284 ASSERT_EQ(model_.get(), model);
284 run_loop_->Quit(); 285 run_loop_->Quit();
285 } 286 }
286 287
287 void OfflinePageModelTest::OnSavePageDone( 288 void OfflinePageModelTest::OnSavePageDone(
288 OfflinePageModel::SavePageResult result) { 289 OfflinePageModel::SavePageResult result) {
289 run_loop_->Quit(); 290 run_loop_->Quit();
290 last_save_result_ = result; 291 last_save_result_ = result;
291 } 292 }
292 293
294 void OfflinePageModelTest::OnMarkPageAccessedDone(bool success) {
295 run_loop_->Quit();
296 }
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 }
297 302
298 void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) { 303 void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) {
299 run_loop_->Quit(); 304 run_loop_->Quit();
300 } 305 }
301 306
302 scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver( 307 scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 368
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);
378 EXPECT_EQ(0, offline_pages[0].access_count);
373 } 379 }
374 380
375 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { 381 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) {
376 scoped_ptr<OfflinePageTestArchiver> archiver( 382 scoped_ptr<OfflinePageTestArchiver> archiver(
377 BuildArchiver(kTestUrl, 383 BuildArchiver(kTestUrl,
378 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED) 384 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED)
379 .Pass()); 385 .Pass());
380 model()->SavePage( 386 model()->SavePage(
381 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), 387 kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
382 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 388 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 502
497 ResetResults(); 503 ResetResults();
498 504
499 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 505 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
500 506
501 EXPECT_EQ(2UL, offline_pages.size()); 507 EXPECT_EQ(2UL, offline_pages.size());
502 EXPECT_EQ(kTestUrl, offline_pages[0].url); 508 EXPECT_EQ(kTestUrl, offline_pages[0].url);
503 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); 509 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id);
504 EXPECT_EQ(archiver_path, offline_pages[0].file_path); 510 EXPECT_EQ(archiver_path, offline_pages[0].file_path);
505 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); 511 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
512 EXPECT_EQ(0, offline_pages[0].access_count);
506 EXPECT_EQ(kTestUrl2, offline_pages[1].url); 513 EXPECT_EQ(kTestUrl2, offline_pages[1].url);
507 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id); 514 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id);
508 EXPECT_EQ(archiver_path2, offline_pages[1].file_path); 515 EXPECT_EQ(archiver_path2, offline_pages[1].file_path);
509 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size); 516 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size);
517 EXPECT_EQ(0, offline_pages[1].access_count);
518 }
519
520 TEST_F(OfflinePageModelTest, MarkPageAccessed) {
521 scoped_ptr<OfflinePageTestArchiver> archiver(
522 BuildArchiver(kTestUrl,
523 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
524 .Pass());
525 model()->SavePage(
526 kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
527 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
528 PumpLoop();
529
530 // This will increase access_count by one.
531 model()->MarkPageAccessed(
532 kTestPageBookmarkId1,
533 base::Bind(&OfflinePageModelTest::OnMarkPageAccessedDone, AsWeakPtr()));
534 PumpLoop();
535
536 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
537
538 EXPECT_EQ(1UL, offline_pages.size());
539 EXPECT_EQ(kTestUrl, offline_pages[0].url);
540 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id);
541 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
542 EXPECT_EQ(1, offline_pages[0].access_count);
510 } 543 }
511 544
512 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { 545 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) {
513 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 546 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
514 547
515 EXPECT_EQ(0UL, offline_pages.size()); 548 EXPECT_EQ(0UL, offline_pages.size());
516 } 549 }
517 550
518 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { 551 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) {
519 GetStore()->set_test_scenario( 552 GetStore()->set_test_scenario(
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 } 718 }
686 719
687 // Test that model returns pages that are older than 30 days as candidates for 720 // Test that model returns pages that are older than 30 days as candidates for
688 // clean up, hence the numbers in time delta. 721 // clean up, hence the numbers in time delta.
689 TEST_F(OfflinePageModelTest, GetPagesToCleanUp) { 722 TEST_F(OfflinePageModelTest, GetPagesToCleanUp) {
690 base::Time now = base::Time::Now(); 723 base::Time now = base::Time::Now();
691 OfflinePageItem page_1( 724 OfflinePageItem page_1(
692 GURL(kTestUrl), kTestPageBookmarkId1, 725 GURL(kTestUrl), kTestPageBookmarkId1,
693 base::FilePath(FILE_PATH_LITERAL("/test/location/page1.mhtml")), 726 base::FilePath(FILE_PATH_LITERAL("/test/location/page1.mhtml")),
694 kTestFileSize, now - base::TimeDelta::FromDays(40)); 727 kTestFileSize, now - base::TimeDelta::FromDays(40));
695 GetStore()->AddOfflinePage( 728 GetStore()->AddOrUpdateOfflinePage(
696 page_1, 729 page_1,
697 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr())); 730 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
698 PumpLoop(); 731 PumpLoop();
699 732
700 OfflinePageItem page_2( 733 OfflinePageItem page_2(
701 GURL(kTestUrl2), kTestPageBookmarkId2, 734 GURL(kTestUrl2), kTestPageBookmarkId2,
702 base::FilePath(FILE_PATH_LITERAL("/test/location/page2.mhtml")), 735 base::FilePath(FILE_PATH_LITERAL("/test/location/page2.mhtml")),
703 kTestFileSize, now - base::TimeDelta::FromDays(31)); 736 kTestFileSize, now - base::TimeDelta::FromDays(31));
704 GetStore()->AddOfflinePage( 737 GetStore()->AddOrUpdateOfflinePage(
705 page_2, 738 page_2,
706 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr())); 739 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
707 PumpLoop(); 740 PumpLoop();
708 741
709 OfflinePageItem page_3( 742 OfflinePageItem page_3(
710 GURL("http://test.xyz"), 42, 743 GURL("http://test.xyz"), 42,
711 base::FilePath(FILE_PATH_LITERAL("/test/location/page3.mhtml")), 744 base::FilePath(FILE_PATH_LITERAL("/test/location/page3.mhtml")),
712 kTestFileSize, now - base::TimeDelta::FromDays(29)); 745 kTestFileSize, now - base::TimeDelta::FromDays(29));
713 GetStore()->AddOfflinePage( 746 GetStore()->AddOrUpdateOfflinePage(
714 page_3, 747 page_3,
715 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr())); 748 base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
716 PumpLoop(); 749 PumpLoop();
717 750
718 ResetModel(); 751 ResetModel();
719 752
720 // Only page_1 and page_2 are expected to be picked up by the model as page_3 753 // Only page_1 and page_2 are expected to be picked up by the model as page_3
721 // has not been in the store long enough. 754 // has not been in the store long enough.
722 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp(); 755 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp();
723 EXPECT_EQ(2UL, pages_to_clean_up.size()); 756 EXPECT_EQ(2UL, pages_to_clean_up.size());
724 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url); 757 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url);
725 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id); 758 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id);
726 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url); 759 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url);
727 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id); 760 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id);
728 } 761 }
729 762
730 } // namespace offline_pages 763 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698