| 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 |