| 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 OnPagesExpired(bool result); |
| 90 | 91 |
| 91 // OfflinePageMetadataStore callbacks. | 92 // OfflinePageMetadataStore callbacks. |
| 92 void OnStoreUpdateDone(bool /* success */); | 93 void OnStoreUpdateDone(bool /* success */); |
| 93 | 94 |
| 94 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( | 95 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( |
| 95 const GURL& url, | 96 const GURL& url, |
| 96 OfflinePageArchiver::ArchiverResult result); | 97 OfflinePageArchiver::ArchiverResult result); |
| 97 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); | 98 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); |
| 98 std::unique_ptr<OfflinePageModel> BuildModel( | 99 std::unique_ptr<OfflinePageModel> BuildModel( |
| 99 std::unique_ptr<OfflinePageMetadataStore> store); | 100 std::unique_ptr<OfflinePageMetadataStore> store); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 ClientId last_deleted_client_id() const { return last_deleted_client_id_; } | 157 ClientId last_deleted_client_id() const { return last_deleted_client_id_; } |
| 157 | 158 |
| 158 const base::FilePath& last_archiver_path() { return last_archiver_path_; } | 159 const base::FilePath& last_archiver_path() { return last_archiver_path_; } |
| 159 | 160 |
| 160 int last_cleared_pages_count() const { return last_cleared_pages_count_; } | 161 int last_cleared_pages_count() const { return last_cleared_pages_count_; } |
| 161 | 162 |
| 162 DeletePageResult last_clear_page_result() const { | 163 DeletePageResult last_clear_page_result() const { |
| 163 return last_clear_page_result_; | 164 return last_clear_page_result_; |
| 164 } | 165 } |
| 165 | 166 |
| 167 bool last_expire_page_result() const { return last_expire_page_result_; } |
| 168 |
| 166 private: | 169 private: |
| 167 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; | 170 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; |
| 168 base::ThreadTaskRunnerHandle task_runner_handle_; | 171 base::ThreadTaskRunnerHandle task_runner_handle_; |
| 169 base::ScopedTempDir temp_dir_; | 172 base::ScopedTempDir temp_dir_; |
| 170 | 173 |
| 171 std::unique_ptr<OfflinePageModel> model_; | 174 std::unique_ptr<OfflinePageModel> model_; |
| 172 SavePageResult last_save_result_; | 175 SavePageResult last_save_result_; |
| 173 int64_t last_save_offline_id_; | 176 int64_t last_save_offline_id_; |
| 174 DeletePageResult last_delete_result_; | 177 DeletePageResult last_delete_result_; |
| 175 base::FilePath last_archiver_path_; | 178 base::FilePath last_archiver_path_; |
| 176 int64_t last_deleted_offline_id_; | 179 int64_t last_deleted_offline_id_; |
| 177 ClientId last_deleted_client_id_; | 180 ClientId last_deleted_client_id_; |
| 178 bool last_has_pages_result_; | 181 bool last_has_pages_result_; |
| 179 CheckPagesExistOfflineResult last_pages_exist_result_; | 182 CheckPagesExistOfflineResult last_pages_exist_result_; |
| 180 int last_cleared_pages_count_; | 183 int last_cleared_pages_count_; |
| 181 DeletePageResult last_clear_page_result_; | 184 DeletePageResult last_clear_page_result_; |
| 185 bool last_expire_page_result_; |
| 182 }; | 186 }; |
| 183 | 187 |
| 184 OfflinePageModelTest::OfflinePageModelTest() | 188 OfflinePageModelTest::OfflinePageModelTest() |
| 185 : task_runner_(new base::TestMockTimeTaskRunner), | 189 : task_runner_(new base::TestMockTimeTaskRunner), |
| 186 task_runner_handle_(task_runner_), | 190 task_runner_handle_(task_runner_), |
| 187 last_save_result_(SavePageResult::CANCELLED), | 191 last_save_result_(SavePageResult::CANCELLED), |
| 188 last_save_offline_id_(-1), | 192 last_save_offline_id_(-1), |
| 189 last_delete_result_(DeletePageResult::CANCELLED), | 193 last_delete_result_(DeletePageResult::CANCELLED), |
| 190 last_deleted_offline_id_(-1) {} | 194 last_deleted_offline_id_(-1) {} |
| 191 | 195 |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 const SingleOfflinePageItemResult& result) { | 384 const SingleOfflinePageItemResult& result) { |
| 381 *storage = result; | 385 *storage = result; |
| 382 } | 386 } |
| 383 | 387 |
| 384 void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( | 388 void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( |
| 385 MultipleOfflinePageItemResult* storage, | 389 MultipleOfflinePageItemResult* storage, |
| 386 const MultipleOfflinePageItemResult& result) { | 390 const MultipleOfflinePageItemResult& result) { |
| 387 *storage = result; | 391 *storage = result; |
| 388 } | 392 } |
| 389 | 393 |
| 394 void OfflinePageModelTest::OnPagesExpired(bool result) { |
| 395 last_expire_page_result_ = result; |
| 396 } |
| 397 |
| 390 base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( | 398 base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( |
| 391 const GURL& online_url) { | 399 const GURL& online_url) { |
| 392 MultipleOfflinePageItemResult result; | 400 MultipleOfflinePageItemResult result; |
| 393 model()->GetPagesByOnlineURL( | 401 model()->GetPagesByOnlineURL( |
| 394 online_url, | 402 online_url, |
| 395 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, | 403 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, |
| 396 AsWeakPtr(), base::Unretained(&result))); | 404 AsWeakPtr(), base::Unretained(&result))); |
| 397 PumpLoop(); | 405 PumpLoop(); |
| 398 if (result.size() > 0) | 406 if (result.size() > 0) |
| 399 return base::make_optional(result[0]); | 407 return base::make_optional(result[0]); |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 std::get<0>(save_result)); | 976 std::get<0>(save_result)); |
| 969 } | 977 } |
| 970 | 978 |
| 971 // First two pages will be expired. | 979 // First two pages will be expired. |
| 972 std::vector<int64_t> pages_to_expire = {std::get<1>(saved_pages[0]), | 980 std::vector<int64_t> pages_to_expire = {std::get<1>(saved_pages[0]), |
| 973 std::get<1>(saved_pages[1])}; | 981 std::get<1>(saved_pages[1])}; |
| 974 // Pages are marked as expired if they have an expiration_time set. | 982 // Pages are marked as expired if they have an expiration_time set. |
| 975 base::Time expiration_time = | 983 base::Time expiration_time = |
| 976 base::Time::Now() + base::TimeDelta::FromMinutes(5); | 984 base::Time::Now() + base::TimeDelta::FromMinutes(5); |
| 977 | 985 |
| 978 model()->ExpirePages(pages_to_expire, expiration_time); | 986 model()->ExpirePages( |
| 987 pages_to_expire, expiration_time, |
| 988 base::Bind(&OfflinePageModelTest::OnPagesExpired, AsWeakPtr())); |
| 979 PumpLoop(); | 989 PumpLoop(); |
| 980 | 990 |
| 981 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | 991 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); |
| 982 for (const auto& offline_page : offline_pages) { | 992 for (const auto& offline_page : offline_pages) { |
| 983 if (std::find(pages_to_expire.begin(), pages_to_expire.end(), | 993 if (std::find(pages_to_expire.begin(), pages_to_expire.end(), |
| 984 offline_page.offline_id) != pages_to_expire.end()) { | 994 offline_page.offline_id) != pages_to_expire.end()) { |
| 985 EXPECT_EQ(expiration_time, offline_page.expiration_time); | 995 EXPECT_EQ(expiration_time, offline_page.expiration_time); |
| 986 EXPECT_TRUE(offline_page.IsExpired()); | 996 EXPECT_TRUE(offline_page.IsExpired()); |
| 987 } else { | 997 } else { |
| 988 EXPECT_EQ(base::Time(), offline_page.expiration_time); | 998 EXPECT_EQ(base::Time(), offline_page.expiration_time); |
| 989 EXPECT_FALSE(offline_page.IsExpired()); | 999 EXPECT_FALSE(offline_page.IsExpired()); |
| 990 } | 1000 } |
| 991 } | 1001 } |
| 1002 EXPECT_TRUE(last_expire_page_result()); |
| 992 } | 1003 } |
| 993 | 1004 |
| 994 TEST(CommandLineFlagsTest, OfflineBookmarks) { | 1005 TEST(CommandLineFlagsTest, OfflineBookmarks) { |
| 995 // Disabled by default. | 1006 // Disabled by default. |
| 996 EXPECT_FALSE(offline_pages::IsOfflineBookmarksEnabled()); | 1007 EXPECT_FALSE(offline_pages::IsOfflineBookmarksEnabled()); |
| 997 | 1008 |
| 998 // Check if feature is correctly enabled by command-line flag. | 1009 // Check if feature is correctly enabled by command-line flag. |
| 999 base::FeatureList::ClearInstanceForTesting(); | 1010 base::FeatureList::ClearInstanceForTesting(); |
| 1000 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); | 1011 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| 1001 feature_list->InitializeFromCommandLine( | 1012 feature_list->InitializeFromCommandLine( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList); | 1055 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList); |
| 1045 feature_list2->InitializeFromCommandLine( | 1056 feature_list2->InitializeFromCommandLine( |
| 1046 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," + | 1057 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," + |
| 1047 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, | 1058 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, |
| 1048 ""); | 1059 ""); |
| 1049 base::FeatureList::SetInstance(std::move(feature_list2)); | 1060 base::FeatureList::SetInstance(std::move(feature_list2)); |
| 1050 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); | 1061 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); |
| 1051 } | 1062 } |
| 1052 | 1063 |
| 1053 } // namespace offline_pages | 1064 } // namespace offline_pages |
| OLD | NEW |