| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 void OnCheckPagesExistOfflineDone(const CheckPagesExistOfflineResult& result); | 80 void OnCheckPagesExistOfflineDone(const CheckPagesExistOfflineResult& result); |
| 81 void OnClearAllDone(); | 81 void OnClearAllDone(); |
| 82 void OnGetOfflineIdsForClientIdDone(MultipleOfflineIdResult* storage, | 82 void OnGetOfflineIdsForClientIdDone(MultipleOfflineIdResult* storage, |
| 83 const MultipleOfflineIdResult& result); | 83 const MultipleOfflineIdResult& result); |
| 84 void OnGetSingleOfflinePageItemResult( | 84 void OnGetSingleOfflinePageItemResult( |
| 85 SingleOfflinePageItemResult* storage, | 85 SingleOfflinePageItemResult* storage, |
| 86 const SingleOfflinePageItemResult& result); | 86 const SingleOfflinePageItemResult& result); |
| 87 void OnGetMultipleOfflinePageItemsResult( | 87 void OnGetMultipleOfflinePageItemsResult( |
| 88 MultipleOfflinePageItemResult* storage, | 88 MultipleOfflinePageItemResult* storage, |
| 89 const MultipleOfflinePageItemResult& result); | 89 const MultipleOfflinePageItemResult& result); |
| 90 void OnClearPageByStorageManager(int pages_cleared, DeletePageResult result); | |
| 91 | 90 |
| 92 // OfflinePageMetadataStore callbacks. | 91 // OfflinePageMetadataStore callbacks. |
| 93 void OnStoreUpdateDone(bool /* success */); | 92 void OnStoreUpdateDone(bool /* success */); |
| 94 | 93 |
| 95 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( | 94 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( |
| 96 const GURL& url, | 95 const GURL& url, |
| 97 OfflinePageArchiver::ArchiverResult result); | 96 OfflinePageArchiver::ArchiverResult result); |
| 98 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); | 97 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); |
| 99 std::unique_ptr<OfflinePageModel> BuildModel( | 98 std::unique_ptr<OfflinePageModel> BuildModel( |
| 100 std::unique_ptr<OfflinePageMetadataStore> store); | 99 std::unique_ptr<OfflinePageMetadataStore> store); |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 const SingleOfflinePageItemResult& result) { | 380 const SingleOfflinePageItemResult& result) { |
| 382 *storage = result; | 381 *storage = result; |
| 383 } | 382 } |
| 384 | 383 |
| 385 void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( | 384 void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( |
| 386 MultipleOfflinePageItemResult* storage, | 385 MultipleOfflinePageItemResult* storage, |
| 387 const MultipleOfflinePageItemResult& result) { | 386 const MultipleOfflinePageItemResult& result) { |
| 388 *storage = result; | 387 *storage = result; |
| 389 } | 388 } |
| 390 | 389 |
| 391 void OfflinePageModelTest::OnClearPageByStorageManager( | |
| 392 int pages_cleared, | |
| 393 DeletePageResult result) { | |
| 394 last_cleared_pages_count_ = pages_cleared; | |
| 395 last_clear_page_result_ = result; | |
| 396 } | |
| 397 | |
| 398 base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( | 390 base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( |
| 399 const GURL& online_url) { | 391 const GURL& online_url) { |
| 400 MultipleOfflinePageItemResult result; | 392 MultipleOfflinePageItemResult result; |
| 401 model()->GetPagesByOnlineURL( | 393 model()->GetPagesByOnlineURL( |
| 402 online_url, | 394 online_url, |
| 403 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, | 395 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, |
| 404 AsWeakPtr(), base::Unretained(&result))); | 396 AsWeakPtr(), base::Unretained(&result))); |
| 405 PumpLoop(); | 397 PumpLoop(); |
| 406 if (result.size() > 0) | 398 if (result.size() > 0) |
| 407 return base::make_optional(result[0]); | 399 return base::make_optional(result[0]); |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 | 928 |
| 937 std::set<int64_t> id_set; | 929 std::set<int64_t> id_set; |
| 938 for (size_t i = 0; i < ids.size(); i++) { | 930 for (size_t i = 0; i < ids.size(); i++) { |
| 939 id_set.insert(ids[i]); | 931 id_set.insert(ids[i]); |
| 940 } | 932 } |
| 941 | 933 |
| 942 EXPECT_TRUE(id_set.find(offline1) != id_set.end()); | 934 EXPECT_TRUE(id_set.find(offline1) != id_set.end()); |
| 943 EXPECT_TRUE(id_set.find(offline2) != id_set.end()); | 935 EXPECT_TRUE(id_set.find(offline2) != id_set.end()); |
| 944 } | 936 } |
| 945 | 937 |
| 946 TEST_F(OfflinePageModelTest, ClearPagesFromOneSource) { | |
| 947 base::Time now = base::Time::Now(); | |
| 948 base::TimeDelta expiration_period = model() | |
| 949 ->GetPolicyController() | |
| 950 ->GetPolicy(kTestClientNamespace) | |
| 951 .lifetime_policy.expiration_period; | |
| 952 | |
| 953 SavePage(kTestUrl, kTestClientId1); | |
| 954 GetStore()->UpdateLastAccessTime( | |
| 955 last_save_offline_id(), | |
| 956 now - base::TimeDelta::FromDays(10) - expiration_period); | |
| 957 SavePage(kTestUrl2, kTestClientId2); | |
| 958 GetStore()->UpdateLastAccessTime( | |
| 959 last_save_offline_id(), | |
| 960 now - base::TimeDelta::FromDays(1) - expiration_period); | |
| 961 SavePage(kTestUrl3, kTestClientId3); | |
| 962 GetStore()->UpdateLastAccessTime(last_save_offline_id(), now); | |
| 963 | |
| 964 ResetModel(); | |
| 965 | |
| 966 // Only first two pages are expired. | |
| 967 model()->GetStorageManager()->ClearPagesIfNeeded(base::Bind( | |
| 968 &OfflinePageModelTest::OnClearPageByStorageManager, AsWeakPtr())); | |
| 969 | |
| 970 PumpLoop(); | |
| 971 | |
| 972 std::vector<OfflinePageItem> offline_pages = GetAllPages(); | |
| 973 | |
| 974 EXPECT_EQ(1UL, offline_pages.size()); | |
| 975 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); | |
| 976 EXPECT_EQ(2, last_cleared_pages_count()); | |
| 977 EXPECT_EQ(DeletePageResult::SUCCESS, last_clear_page_result()); | |
| 978 } | |
| 979 | |
| 980 TEST_F(OfflinePageModelTest, GetBestPage) { | 938 TEST_F(OfflinePageModelTest, GetBestPage) { |
| 981 // We will save 3 pages - two for the same URL, and one for a different URL. | 939 // We will save 3 pages - two for the same URL, and one for a different URL. |
| 982 // Correct behavior will pick the most recently saved page for the correct | 940 // Correct behavior will pick the most recently saved page for the correct |
| 983 // URL. | 941 // URL. |
| 984 std::pair<SavePageResult, int64_t> saved_pages[3]; | 942 std::pair<SavePageResult, int64_t> saved_pages[3]; |
| 985 saved_pages[0] = SavePage(kTestUrl, kTestClientId1); | 943 saved_pages[0] = SavePage(kTestUrl, kTestClientId1); |
| 986 saved_pages[1] = SavePage(kTestUrl, kTestClientId1); | 944 saved_pages[1] = SavePage(kTestUrl, kTestClientId1); |
| 987 saved_pages[2] = SavePage(kTestUrl2, kTestClientId2); | 945 saved_pages[2] = SavePage(kTestUrl2, kTestClientId2); |
| 988 | 946 |
| 989 for (const auto& save_result : saved_pages) { | 947 for (const auto& save_result : saved_pages) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1051 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList); | 1009 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList); |
| 1052 feature_list2->InitializeFromCommandLine( | 1010 feature_list2->InitializeFromCommandLine( |
| 1053 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," + | 1011 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," + |
| 1054 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, | 1012 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, |
| 1055 ""); | 1013 ""); |
| 1056 base::FeatureList::SetInstance(std::move(feature_list2)); | 1014 base::FeatureList::SetInstance(std::move(feature_list2)); |
| 1057 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); | 1015 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); |
| 1058 } | 1016 } |
| 1059 | 1017 |
| 1060 } // namespace offline_pages | 1018 } // namespace offline_pages |
| OLD | NEW |