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

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

Issue 1367063004: Support undoing offline page deletion (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: One more change Created 5 years, 2 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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698