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_impl.h" | 5 #include "components/offline_pages/offline_page_model_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "components/offline_pages/offline_page_test_archiver.h" | 31 #include "components/offline_pages/offline_page_test_archiver.h" |
32 #include "components/offline_pages/offline_page_test_store.h" | 32 #include "components/offline_pages/offline_page_test_store.h" |
33 #include "components/offline_pages/offline_page_types.h" | 33 #include "components/offline_pages/offline_page_types.h" |
34 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
35 #include "url/gurl.h" | 35 #include "url/gurl.h" |
36 | 36 |
37 namespace offline_pages { | 37 namespace offline_pages { |
38 | 38 |
39 namespace { | 39 namespace { |
40 const char kTestClientNamespace[] = "CLIENT_NAMESPACE"; | 40 const char kTestClientNamespace[] = "CLIENT_NAMESPACE"; |
| 41 const char kUserRequestedNamespace[] = "download"; |
41 const GURL kTestUrl("http://example.com"); | 42 const GURL kTestUrl("http://example.com"); |
42 const GURL kTestUrl2("http://other.page.com"); | 43 const GURL kTestUrl2("http://other.page.com"); |
43 const GURL kTestUrl3("http://test.xyz"); | 44 const GURL kTestUrl3("http://test.xyz"); |
44 const GURL kTestUrl4("http://page.net"); | 45 const GURL kTestUrl4("http://page.net"); |
45 const GURL kFileUrl("file:///foo"); | 46 const GURL kFileUrl("file:///foo"); |
46 const ClientId kTestClientId1(kTestClientNamespace, "1234"); | 47 const ClientId kTestClientId1(kTestClientNamespace, "1234"); |
47 const ClientId kTestClientId2(kTestClientNamespace, "5678"); | 48 const ClientId kTestClientId2(kTestClientNamespace, "5678"); |
48 const ClientId kTestClientId3(kTestClientNamespace, "42"); | 49 const ClientId kTestClientId3(kTestClientNamespace, "42"); |
| 50 const ClientId kTestUserRequestedClientId(kUserRequestedNamespace, "714"); |
49 const int64_t kTestFileSize = 876543LL; | 51 const int64_t kTestFileSize = 876543LL; |
50 const base::string16 kTestTitle = base::UTF8ToUTF16("a title"); | 52 const base::string16 kTestTitle = base::UTF8ToUTF16("a title"); |
51 | 53 |
52 bool URLSpecContains(std::string contains_value, const GURL& url) { | 54 bool URLSpecContains(std::string contains_value, const GURL& url) { |
53 std::string spec = url.spec(); | 55 std::string spec = url.spec(); |
54 return spec.find(contains_value) != std::string::npos; | 56 return spec.find(contains_value) != std::string::npos; |
55 } | 57 } |
56 | 58 |
57 } // namespace | 59 } // namespace |
58 | 60 |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 ResetResults(); | 643 ResetResults(); |
642 | 644 |
643 PumpLoop(); | 645 PumpLoop(); |
644 | 646 |
645 EXPECT_EQ(last_deleted_offline_id(), offline2); | 647 EXPECT_EQ(last_deleted_offline_id(), offline2); |
646 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); | 648 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); |
647 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); | 649 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
648 EXPECT_EQ(0u, store->GetAllPages().size()); | 650 EXPECT_EQ(0u, store->GetAllPages().size()); |
649 } | 651 } |
650 | 652 |
651 TEST_F(OfflinePageModelImplTest, DeletePageByPredicate) { | 653 TEST_F(OfflinePageModelImplTest, DeleteCachedPageByPredicateUserRequested) { |
652 OfflinePageTestStore* store = GetStore(); | 654 OfflinePageTestStore* store = GetStore(); |
653 | 655 |
654 // Save one page. | 656 // Save one page. |
| 657 SavePage(kTestUrl, kTestClientId1); |
| 658 int64_t offline1 = last_save_offline_id(); |
| 659 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); |
| 660 EXPECT_EQ(1u, store->GetAllPages().size()); |
| 661 |
| 662 ResetResults(); |
| 663 |
| 664 // Save an user-requested page in same domain. |
| 665 SavePage(kTestUrl, kTestUserRequestedClientId); |
| 666 int64_t offline2 = last_save_offline_id(); |
| 667 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); |
| 668 EXPECT_EQ(2u, store->GetAllPages().size()); |
| 669 |
| 670 ResetResults(); |
| 671 |
| 672 // Delete the second page. |
| 673 model()->DeleteCachedPagesByURLPredicate( |
| 674 base::Bind(&URLSpecContains, "example.com"), |
| 675 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); |
| 676 |
| 677 PumpLoop(); |
| 678 |
| 679 EXPECT_EQ(last_deleted_offline_id(), offline1); |
| 680 EXPECT_EQ(last_deleted_client_id(), kTestClientId1); |
| 681 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
| 682 ASSERT_EQ(1u, store->GetAllPages().size()); |
| 683 EXPECT_EQ(kTestUrl, store->GetAllPages()[0].url); |
| 684 EXPECT_EQ(offline2, store->GetAllPages()[0].offline_id); |
| 685 } |
| 686 |
| 687 TEST_F(OfflinePageModelImplTest, DeleteCachedPageByPredicate) { |
| 688 OfflinePageTestStore* store = GetStore(); |
| 689 |
| 690 // Save one page. |
655 SavePage(kTestUrl, kTestClientId1); | 691 SavePage(kTestUrl, kTestClientId1); |
656 int64_t offline1 = last_save_offline_id(); | 692 int64_t offline1 = last_save_offline_id(); |
657 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); | 693 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); |
658 EXPECT_EQ(1u, store->GetAllPages().size()); | 694 EXPECT_EQ(1u, store->GetAllPages().size()); |
659 | 695 |
660 ResetResults(); | 696 ResetResults(); |
661 | 697 |
662 // Save another page. | 698 // Save another page. |
663 SavePage(kTestUrl2, kTestClientId2); | 699 SavePage(kTestUrl2, kTestClientId2); |
664 int64_t offline2 = last_save_offline_id(); | 700 int64_t offline2 = last_save_offline_id(); |
665 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); | 701 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); |
666 EXPECT_EQ(2u, store->GetAllPages().size()); | 702 EXPECT_EQ(2u, store->GetAllPages().size()); |
667 | 703 |
668 ResetResults(); | 704 ResetResults(); |
669 | 705 |
670 // Delete the second page. | 706 // Delete the second page. |
671 model()->DeletePagesByURLPredicate( | 707 model()->DeleteCachedPagesByURLPredicate( |
672 base::Bind(&URLSpecContains, "page.com"), | 708 base::Bind(&URLSpecContains, "page.com"), |
673 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); | 709 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); |
674 | 710 |
675 PumpLoop(); | 711 PumpLoop(); |
676 | 712 |
677 EXPECT_EQ(last_deleted_offline_id(), offline2); | 713 EXPECT_EQ(last_deleted_offline_id(), offline2); |
678 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); | 714 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); |
679 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); | 715 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
680 ASSERT_EQ(1u, store->GetAllPages().size()); | 716 ASSERT_EQ(1u, store->GetAllPages().size()); |
681 EXPECT_EQ(kTestUrl, store->GetAllPages()[0].url); | 717 EXPECT_EQ(kTestUrl, store->GetAllPages()[0].url); |
682 | 718 |
683 ResetResults(); | 719 ResetResults(); |
684 | 720 |
685 // Delete the first page. | 721 // Delete the first page. |
686 model()->DeletePagesByURLPredicate( | 722 model()->DeleteCachedPagesByURLPredicate( |
687 base::Bind(&URLSpecContains, "example.com"), | 723 base::Bind(&URLSpecContains, "example.com"), |
688 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); | 724 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); |
689 | 725 |
690 PumpLoop(); | 726 PumpLoop(); |
691 | 727 |
692 EXPECT_EQ(last_deleted_offline_id(), offline1); | 728 EXPECT_EQ(last_deleted_offline_id(), offline1); |
693 EXPECT_EQ(last_deleted_client_id(), kTestClientId1); | 729 EXPECT_EQ(last_deleted_client_id(), kTestClientId1); |
694 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); | 730 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
695 EXPECT_EQ(0u, store->GetAllPages().size()); | 731 EXPECT_EQ(0u, store->GetAllPages().size()); |
696 } | 732 } |
697 | 733 |
698 TEST_F(OfflinePageModelImplTest, DeletePageNotFound) { | 734 TEST_F(OfflinePageModelImplTest, DeletePageNotFound) { |
699 DeletePage(1234LL, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, | 735 DeletePage(1234LL, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, |
700 AsWeakPtr())); | 736 AsWeakPtr())); |
701 PumpLoop(); | 737 PumpLoop(); |
702 | 738 |
703 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); | 739 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
704 | 740 |
705 ResetResults(); | 741 ResetResults(); |
706 | 742 |
707 model()->DeletePagesByURLPredicate( | 743 model()->DeleteCachedPagesByURLPredicate( |
708 base::Bind(&URLSpecContains, "page.com"), | 744 base::Bind(&URLSpecContains, "page.com"), |
709 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); | 745 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr())); |
710 PumpLoop(); | 746 PumpLoop(); |
711 | 747 |
712 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); | 748 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
713 } | 749 } |
714 | 750 |
715 TEST_F(OfflinePageModelImplTest, DeletePageStoreFailureOnRemove) { | 751 TEST_F(OfflinePageModelImplTest, DeletePageStoreFailureOnRemove) { |
716 // Save a page. | 752 // Save a page. |
717 SavePage(kTestUrl, kTestClientId1); | 753 SavePage(kTestUrl, kTestClientId1); |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1151 // Check if feature is correctly enabled by command-line flag. | 1187 // Check if feature is correctly enabled by command-line flag. |
1152 scoped_feature_list.reset(new base::test::ScopedFeatureList); | 1188 scoped_feature_list.reset(new base::test::ScopedFeatureList); |
1153 scoped_feature_list->InitFromCommandLine( | 1189 scoped_feature_list->InitFromCommandLine( |
1154 std::string(kOfflineBookmarksFeature.name) + "," + | 1190 std::string(kOfflineBookmarksFeature.name) + "," + |
1155 kOfflinePagesSharingFeature.name, | 1191 kOfflinePagesSharingFeature.name, |
1156 ""); | 1192 ""); |
1157 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled()); | 1193 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled()); |
1158 } | 1194 } |
1159 | 1195 |
1160 } // namespace offline_pages | 1196 } // namespace offline_pages |
OLD | NEW |