Chromium Code Reviews| 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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 151 } | 151 } |
| 152 | 152 |
| 153 bool HasPages(std::string name_space); | 153 bool HasPages(std::string name_space); |
| 154 | 154 |
| 155 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>); | 155 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>); |
| 156 | 156 |
| 157 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id); | 157 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id); |
| 158 | 158 |
| 159 std::unique_ptr<OfflinePageItem> GetPageByOfflineId(int64_t offline_id); | 159 std::unique_ptr<OfflinePageItem> GetPageByOfflineId(int64_t offline_id); |
| 160 | 160 |
| 161 MultipleOfflinePageItemResult GetPagesByOnlineURL(const GURL& online_url); | 161 MultipleOfflinePageItemResult GetPagesByFinalURL(const GURL& url); |
| 162 MultipleOfflinePageItemResult GetPagesByAnyURL(const GURL& url); | |
| 162 | 163 |
| 163 OfflinePageModelImpl* model() { return model_.get(); } | 164 OfflinePageModelImpl* model() { return model_.get(); } |
| 164 | 165 |
| 165 int64_t last_save_offline_id() const { return last_save_offline_id_; } | 166 int64_t last_save_offline_id() const { return last_save_offline_id_; } |
| 166 | 167 |
| 167 SavePageResult last_save_result() const { return last_save_result_; } | 168 SavePageResult last_save_result() const { return last_save_result_; } |
| 168 | 169 |
| 169 DeletePageResult last_delete_result() const { return last_delete_result_; } | 170 DeletePageResult last_delete_result() const { return last_delete_result_; } |
| 170 | 171 |
| 171 int64_t last_deleted_offline_id() const { return last_deleted_offline_id_; } | 172 int64_t last_deleted_offline_id() const { return last_deleted_offline_id_; } |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 437 void OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult( | 438 void OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult( |
| 438 MultipleOfflinePageItemResult* storage, | 439 MultipleOfflinePageItemResult* storage, |
| 439 const MultipleOfflinePageItemResult& result) { | 440 const MultipleOfflinePageItemResult& result) { |
| 440 *storage = result; | 441 *storage = result; |
| 441 } | 442 } |
| 442 | 443 |
| 443 void OfflinePageModelImplTest::OnPagesExpired(bool result) { | 444 void OfflinePageModelImplTest::OnPagesExpired(bool result) { |
| 444 last_expire_page_result_ = result; | 445 last_expire_page_result_ = result; |
| 445 } | 446 } |
| 446 | 447 |
| 447 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetPagesByOnlineURL( | 448 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetPagesByFinalURL( |
| 448 const GURL& online_url) { | 449 const GURL& url) { |
| 449 MultipleOfflinePageItemResult result; | 450 MultipleOfflinePageItemResult result; |
| 450 model()->GetPagesByOnlineURL( | 451 model()->GetPagesByURL( |
| 451 online_url, | 452 url, |
| 453 true /* search_by_final_url_only */, | |
| 452 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult, | 454 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult, |
| 453 AsWeakPtr(), base::Unretained(&result))); | 455 AsWeakPtr(), base::Unretained(&result))); |
| 454 PumpLoop(); | 456 PumpLoop(); |
| 457 return result; | |
| 458 } | |
| 459 | |
| 460 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetPagesByAnyURL( | |
| 461 const GURL& url) { | |
| 462 MultipleOfflinePageItemResult result; | |
| 463 model()->GetPagesByURL( | |
| 464 url, | |
| 465 false /* search_by_final_url_only */, | |
| 466 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult, | |
| 467 AsWeakPtr(), base::Unretained(&result))); | |
| 468 PumpLoop(); | |
| 455 return result; | 469 return result; |
| 456 } | 470 } |
| 457 | 471 |
| 458 bool OfflinePageModelImplTest::HasPages(std::string name_space) { | 472 bool OfflinePageModelImplTest::HasPages(std::string name_space) { |
| 459 MultipleOfflinePageItemResult all_pages = GetAllPages(); | 473 MultipleOfflinePageItemResult all_pages = GetAllPages(); |
| 460 for (const auto& page : all_pages) { | 474 for (const auto& page : all_pages) { |
| 461 if (page.client_id.name_space == name_space) | 475 if (page.client_id.name_space == name_space) |
| 462 return true; | 476 return true; |
| 463 } | 477 } |
| 464 | 478 |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 917 page = GetPageByOfflineId(offline2); | 931 page = GetPageByOfflineId(offline2); |
| 918 ASSERT_TRUE(page); | 932 ASSERT_TRUE(page); |
| 919 EXPECT_EQ(kTestUrl2, page->url); | 933 EXPECT_EQ(kTestUrl2, page->url); |
| 920 EXPECT_EQ(kTestClientId2, page->client_id); | 934 EXPECT_EQ(kTestClientId2, page->client_id); |
| 921 EXPECT_EQ(kTestFileSize, page->file_size); | 935 EXPECT_EQ(kTestFileSize, page->file_size); |
| 922 | 936 |
| 923 page = GetPageByOfflineId(-42); | 937 page = GetPageByOfflineId(-42); |
| 924 EXPECT_FALSE(page); | 938 EXPECT_FALSE(page); |
| 925 } | 939 } |
| 926 | 940 |
| 927 TEST_F(OfflinePageModelImplTest, GetPagesByOnlineURL) { | 941 TEST_F(OfflinePageModelImplTest, GetPagesByFinalURL) { |
| 928 SavePage(kTestUrl, kTestClientId1); | 942 SavePage(kTestUrl, kTestClientId1); |
| 929 SavePage(kTestUrl2, kTestClientId2); | 943 SavePage(kTestUrl2, kTestClientId2); |
| 930 | 944 |
| 931 MultipleOfflinePageItemResult pages = GetPagesByOnlineURL(kTestUrl2); | 945 MultipleOfflinePageItemResult pages = GetPagesByFinalURL(kTestUrl2); |
| 932 EXPECT_EQ(1U, pages.size()); | 946 EXPECT_EQ(1U, pages.size()); |
| 933 EXPECT_EQ(kTestUrl2, pages[0].url); | 947 EXPECT_EQ(kTestUrl2, pages[0].url); |
| 934 EXPECT_EQ(kTestClientId2, pages[0].client_id); | 948 EXPECT_EQ(kTestClientId2, pages[0].client_id); |
| 935 | 949 |
| 936 pages = GetPagesByOnlineURL(kTestUrl); | 950 pages = GetPagesByFinalURL(kTestUrl); |
| 937 EXPECT_EQ(1U, pages.size()); | 951 EXPECT_EQ(1U, pages.size()); |
| 938 EXPECT_EQ(kTestUrl, pages[0].url); | 952 EXPECT_EQ(kTestUrl, pages[0].url); |
| 939 EXPECT_EQ(kTestClientId1, pages[0].client_id); | 953 EXPECT_EQ(kTestClientId1, pages[0].client_id); |
| 940 | 954 |
| 941 pages = GetPagesByOnlineURL(GURL("http://foo")); | 955 pages = GetPagesByFinalURL(GURL("http://foo")); |
| 942 EXPECT_EQ(0U, pages.size()); | 956 EXPECT_EQ(0U, pages.size()); |
| 943 } | 957 } |
| 944 | 958 |
| 945 TEST_F(OfflinePageModelImplTest, GetPagesByOnlineURLWithFragment) { | 959 TEST_F(OfflinePageModelImplTest, GetPagesByFinalURLWithFragment) { |
| 946 SavePage(kTestUrl, kTestClientId1); | 960 SavePage(kTestUrl, kTestClientId1); |
| 947 SavePage(kTestUrl2WithFragment, kTestClientId2); | 961 SavePage(kTestUrl2WithFragment, kTestClientId2); |
| 948 | 962 |
| 949 MultipleOfflinePageItemResult pages = | 963 MultipleOfflinePageItemResult pages = |
| 950 GetPagesByOnlineURL(kTestUrlWithFragment); | 964 GetPagesByFinalURL(kTestUrlWithFragment); |
| 951 EXPECT_EQ(1U, pages.size()); | 965 EXPECT_EQ(1U, pages.size()); |
| 952 EXPECT_EQ(kTestUrl, pages[0].url); | 966 EXPECT_EQ(kTestUrl, pages[0].url); |
| 953 EXPECT_EQ(kTestClientId1, pages[0].client_id); | 967 EXPECT_EQ(kTestClientId1, pages[0].client_id); |
| 954 | 968 |
| 955 pages = GetPagesByOnlineURL(kTestUrl2); | 969 pages = GetPagesByFinalURL(kTestUrl2); |
| 956 EXPECT_EQ(1U, pages.size()); | 970 EXPECT_EQ(1U, pages.size()); |
| 957 EXPECT_EQ(kTestUrl2WithFragment, pages[0].url); | 971 EXPECT_EQ(kTestUrl2WithFragment, pages[0].url); |
| 958 EXPECT_EQ(kTestClientId2, pages[0].client_id); | 972 EXPECT_EQ(kTestClientId2, pages[0].client_id); |
| 959 | 973 |
| 960 pages = GetPagesByOnlineURL(kTestUrl2WithFragment2); | 974 pages = GetPagesByFinalURL(kTestUrl2WithFragment2); |
| 961 EXPECT_EQ(1U, pages.size()); | 975 EXPECT_EQ(1U, pages.size()); |
| 962 EXPECT_EQ(kTestUrl2WithFragment, pages[0].url); | 976 EXPECT_EQ(kTestUrl2WithFragment, pages[0].url); |
| 963 EXPECT_EQ(kTestClientId2, pages[0].client_id); | 977 EXPECT_EQ(kTestClientId2, pages[0].client_id); |
| 964 } | 978 } |
| 965 | 979 |
| 980 TEST_F(OfflinePageModelImplTest, GetPagesByEitherOriginalURLOrFinalURL) { | |
| 981 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( | |
| 982 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); | |
| 983 SavePageWithArchiverAsync( | |
| 984 kTestUrl, kTestClientId1, kTestUrl2, std::move(archiver)); | |
| 985 PumpLoop(); | |
| 986 | |
| 987 SavePage(kTestUrl2, kTestClientId2); | |
| 988 | |
| 989 MultipleOfflinePageItemResult pages = GetPagesByAnyURL(kTestUrl2); | |
| 990 ASSERT_EQ(2U, pages.size()); | |
| 991 int i = -1; | |
|
fgorski
2016/11/16 23:43:46
Add a comment about this trick.
jianli
2016/11/17 01:12:15
Done.
| |
| 992 if (pages[0].url == kTestUrl2) | |
| 993 i = 0; | |
| 994 else if (pages[1].url == kTestUrl2) | |
| 995 i = 1; | |
| 996 ASSERT_NE(-1, i); | |
| 997 EXPECT_EQ(kTestUrl2, pages[i].url); | |
| 998 EXPECT_EQ(kTestClientId2, pages[i].client_id); | |
| 999 EXPECT_EQ(GURL(), pages[i].original_url); | |
| 1000 EXPECT_EQ(kTestUrl, pages[1 - i].url); | |
| 1001 EXPECT_EQ(kTestClientId1, pages[1 - i].client_id); | |
| 1002 EXPECT_EQ(kTestUrl2, pages[1 - i].original_url); | |
| 1003 } | |
| 1004 | |
| 966 TEST_F(OfflinePageModelImplTest, CheckPagesExistOffline) { | 1005 TEST_F(OfflinePageModelImplTest, CheckPagesExistOffline) { |
| 967 SavePage(kTestUrl, kTestClientId1); | 1006 SavePage(kTestUrl, kTestClientId1); |
| 968 SavePage(kTestUrl2, kTestClientId2); | 1007 SavePage(kTestUrl2, kTestClientId2); |
| 969 | 1008 |
| 970 // TODO(dewittj): Remove the "Last N" restriction in favor of a better query | 1009 // TODO(dewittj): Remove the "Last N" restriction in favor of a better query |
| 971 // interface. See https://crbug.com/622763 for information. | 1010 // interface. See https://crbug.com/622763 for information. |
| 972 const ClientId last_n_client_id(kLastNNamespace, "1234"); | 1011 const ClientId last_n_client_id(kLastNNamespace, "1234"); |
| 973 SavePage(kTestUrl3, last_n_client_id); | 1012 SavePage(kTestUrl3, last_n_client_id); |
| 974 | 1013 |
| 975 std::set<GURL> input; | 1014 std::set<GURL> input; |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1257 EXPECT_FALSE(offline_pages::IsOfflinePagesSvelteConcurrentLoadingEnabled()); | 1296 EXPECT_FALSE(offline_pages::IsOfflinePagesSvelteConcurrentLoadingEnabled()); |
| 1258 | 1297 |
| 1259 // Check if feature is correctly enabled by command-line flag. | 1298 // Check if feature is correctly enabled by command-line flag. |
| 1260 base::test::ScopedFeatureList scoped_feature_list; | 1299 base::test::ScopedFeatureList scoped_feature_list; |
| 1261 scoped_feature_list.InitAndEnableFeature( | 1300 scoped_feature_list.InitAndEnableFeature( |
| 1262 kOfflinePagesSvelteConcurrentLoadingFeature); | 1301 kOfflinePagesSvelteConcurrentLoadingFeature); |
| 1263 EXPECT_TRUE(offline_pages::IsOfflinePagesSvelteConcurrentLoadingEnabled()); | 1302 EXPECT_TRUE(offline_pages::IsOfflinePagesSvelteConcurrentLoadingEnabled()); |
| 1264 } | 1303 } |
| 1265 | 1304 |
| 1266 } // namespace offline_pages | 1305 } // namespace offline_pages |
| OLD | NEW |