Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: components/offline_pages/offline_page_model_impl_unittest.cc

Issue 2429943002: Remove all synchronous methods from OfflinePageBridge. (Closed)
Patch Set: Fix a test and address nits. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // queue. 112 // queue.
113 void PumpLoop(); 113 void PumpLoop();
114 // Fast-forwards virtual time by |delta|, causing tasks with a remaining 114 // Fast-forwards virtual time by |delta|, causing tasks with a remaining
115 // delay less than or equal to |delta| to be executed. 115 // delay less than or equal to |delta| to be executed.
116 void FastForwardBy(base::TimeDelta delta); 116 void FastForwardBy(base::TimeDelta delta);
117 void ResetResults(); 117 void ResetResults();
118 118
119 OfflinePageTestStore* GetStore(); 119 OfflinePageTestStore* GetStore();
120 120
121 MultipleOfflinePageItemResult GetAllPages(); 121 MultipleOfflinePageItemResult GetAllPages();
122 MultipleOfflinePageItemResult GetPagesByClientIds(
123 const std::vector<ClientId>& client_ids);
124 void DeletePagesByClientIds(const std::vector<ClientId>& client_ids);
122 125
123 // Returns the offline ID of the saved page. 126 // Returns the offline ID of the saved page.
124 std::pair<SavePageResult, int64_t> SavePage(const GURL& url, 127 std::pair<SavePageResult, int64_t> SavePage(const GURL& url,
125 ClientId client_id); 128 ClientId client_id);
126 129
127 void SavePageWithArchiverResult(const GURL& url, 130 void SavePageWithArchiverResult(const GURL& url,
128 ClientId client_id, 131 ClientId client_id,
129 OfflinePageArchiver::ArchiverResult result); 132 OfflinePageArchiver::ArchiverResult result);
130 133
131 void DeletePage(int64_t offline_id, const DeletePageCallback& callback) { 134 void DeletePage(int64_t offline_id, const DeletePageCallback& callback) {
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 326
324 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetAllPages() { 327 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetAllPages() {
325 MultipleOfflinePageItemResult result; 328 MultipleOfflinePageItemResult result;
326 model()->GetAllPages( 329 model()->GetAllPages(
327 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult, 330 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult,
328 AsWeakPtr(), base::Unretained(&result))); 331 AsWeakPtr(), base::Unretained(&result)));
329 PumpLoop(); 332 PumpLoop();
330 return result; 333 return result;
331 } 334 }
332 335
336 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetPagesByClientIds(
337 const std::vector<ClientId>& client_ids) {
338 MultipleOfflinePageItemResult result;
339 model()->GetPagesByClientIds(
340 client_ids,
341 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult,
342 AsWeakPtr(), base::Unretained(&result)));
343 PumpLoop();
344 return result;
345 }
346
347 void OfflinePageModelImplTest::DeletePagesByClientIds(
348 const std::vector<ClientId>& client_ids) {
349 model()->DeletePagesByClientIds(
350 client_ids,
351 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr()));
352 PumpLoop();
353 }
354
333 CheckPagesExistOfflineResult OfflinePageModelImplTest::CheckPagesExistOffline( 355 CheckPagesExistOfflineResult OfflinePageModelImplTest::CheckPagesExistOffline(
334 std::set<GURL> pages) { 356 std::set<GURL> pages) {
335 model()->CheckPagesExistOffline( 357 model()->CheckPagesExistOffline(
336 pages, base::Bind(&OfflinePageModelImplTest::OnCheckPagesExistOfflineDone, 358 pages, base::Bind(&OfflinePageModelImplTest::OnCheckPagesExistOfflineDone,
337 AsWeakPtr())); 359 AsWeakPtr()));
338 PumpLoop(); 360 PumpLoop();
339 return last_pages_exist_result_; 361 return last_pages_exist_result_;
340 } 362 }
341 363
342 MultipleOfflineIdResult OfflinePageModelImplTest::GetOfflineIdsForClientId( 364 MultipleOfflineIdResult OfflinePageModelImplTest::GetOfflineIdsForClientId(
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 PumpLoop(); 1051 PumpLoop();
1030 // No change when we delete the last page. 1052 // No change when we delete the last page.
1031 histograms().ExpectTotalCount( 1053 histograms().ExpectTotalCount(
1032 "OfflinePages.DownloadDeletedPageDuplicateCount", 2); 1054 "OfflinePages.DownloadDeletedPageDuplicateCount", 2);
1033 histograms().ExpectBucketCount( 1055 histograms().ExpectBucketCount(
1034 "OfflinePages.DownloadDeletedPageDuplicateCount", 1, 1); 1056 "OfflinePages.DownloadDeletedPageDuplicateCount", 1, 1);
1035 histograms().ExpectBucketCount( 1057 histograms().ExpectBucketCount(
1036 "OfflinePages.DownloadDeletedPageDuplicateCount", 2, 1); 1058 "OfflinePages.DownloadDeletedPageDuplicateCount", 2, 1);
1037 } 1059 }
1038 1060
1039 TEST_F(OfflinePageModelImplTest, GetBestPage) {
1040 // We will save 3 pages - two for the same URL, and one for a different URL.
1041 // Correct behavior will pick the most recently saved page for the correct
1042 // URL.
1043 std::pair<SavePageResult, int64_t> saved_pages[3];
1044 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
1045 saved_pages[1] = SavePage(kTestUrl, kTestClientId1);
1046 saved_pages[2] = SavePage(kTestUrl2, kTestClientId2);
1047
1048 for (const auto& save_result : saved_pages) {
1049 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
1050 std::get<0>(save_result));
1051 }
1052
1053 const OfflinePageItem* offline_page =
1054 model()->MaybeGetBestPageForOnlineURL(kTestUrl);
1055 ASSERT_TRUE(nullptr != offline_page);
1056
1057 EXPECT_EQ(std::get<1>(saved_pages[1]), offline_page->offline_id);
1058 }
1059
1060 TEST_F(OfflinePageModelImplTest, ExpirePages) { 1061 TEST_F(OfflinePageModelImplTest, ExpirePages) {
1061 // We will save 3 pages and then expire 2 of them. 1062 // We will save 3 pages and then expire 2 of them.
1062 std::pair<SavePageResult, int64_t> saved_pages[3]; 1063 std::pair<SavePageResult, int64_t> saved_pages[3];
1063 saved_pages[0] = SavePage(kTestUrl, kTestClientId1); 1064 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
1064 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2); 1065 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2);
1065 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3); 1066 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3);
1066 1067
1067 for (const auto& save_result : saved_pages) { 1068 for (const auto& save_result : saved_pages) {
1068 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS, 1069 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
1069 std::get<0>(save_result)); 1070 std::get<0>(save_result));
(...skipping 18 matching lines...) Expand all
1088 EXPECT_EQ(expiration_time, offline_page.expiration_time); 1089 EXPECT_EQ(expiration_time, offline_page.expiration_time);
1089 EXPECT_TRUE(offline_page.IsExpired()); 1090 EXPECT_TRUE(offline_page.IsExpired());
1090 } else { 1091 } else {
1091 EXPECT_EQ(base::Time(), offline_page.expiration_time); 1092 EXPECT_EQ(base::Time(), offline_page.expiration_time);
1092 EXPECT_FALSE(offline_page.IsExpired()); 1093 EXPECT_FALSE(offline_page.IsExpired());
1093 } 1094 }
1094 } 1095 }
1095 EXPECT_TRUE(last_expire_page_result()); 1096 EXPECT_TRUE(last_expire_page_result());
1096 } 1097 }
1097 1098
1099 TEST_F(OfflinePageModelImplTest, GetPagesByClientIds) {
1100 // We will save 3 pages. One will be expired.
1101 std::pair<SavePageResult, int64_t> saved_pages[3];
1102 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
1103 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2);
1104 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3);
1105
1106 for (const auto& save_result : saved_pages) {
1107 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
1108 std::get<0>(save_result));
1109 }
1110
1111 std::vector<int64_t> pages_to_expire = {std::get<1>(saved_pages[0])};
1112 // Pages are marked as expired if they have an expiration_time set.
1113 base::Time expiration_time =
1114 base::Time::Now() + base::TimeDelta::FromMinutes(5);
1115 model()->ExpirePages(
1116 pages_to_expire, expiration_time,
1117 base::Bind(&OfflinePageModelImplTest::OnPagesExpired, AsWeakPtr()));
1118 PumpLoop();
1119
1120 std::vector<ClientId> client_ids = {kTestClientId1, kTestClientId2};
1121 std::vector<OfflinePageItem> offline_pages = GetPagesByClientIds(client_ids);
1122 EXPECT_EQ(1U, offline_pages.size());
1123
1124 const OfflinePageItem& item = offline_pages[0];
1125 EXPECT_EQ(kTestClientId2.name_space, item.client_id.name_space);
1126 EXPECT_EQ(kTestClientId2.id, item.client_id.id);
1127 EXPECT_EQ(kTestUrl2, item.url);
1128 }
1129
1130 TEST_F(OfflinePageModelImplTest, DeletePagesByClientIds) {
1131 // We will save 3 pages.
1132 std::pair<SavePageResult, int64_t> saved_pages[3];
1133 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
1134 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2);
1135 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3);
1136
1137 for (const auto& save_result : saved_pages) {
1138 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
1139 std::get<0>(save_result));
1140 }
1141
1142 std::vector<ClientId> client_ids = {kTestClientId1, kTestClientId2};
1143 DeletePagesByClientIds(client_ids);
1144 std::vector<OfflinePageItem> offline_pages = GetAllPages();
1145 ASSERT_EQ(1U, offline_pages.size());
1146
1147 const OfflinePageItem& item = offline_pages[0];
1148 EXPECT_EQ(kTestClientId3.name_space, item.client_id.name_space);
1149 EXPECT_EQ(kTestClientId3.id, item.client_id.id);
1150 EXPECT_EQ(kTestUrl3, item.url);
1151 }
1152
1098 TEST_F(OfflinePageModelImplTest, CustomTabsNamespace) { 1153 TEST_F(OfflinePageModelImplTest, CustomTabsNamespace) {
1099 SavePage(kTestUrl, ClientId(kCCTNamespace, "123")); 1154 SavePage(kTestUrl, ClientId(kCCTNamespace, "123"));
1100 std::string histogram_name = "OfflinePages.SavePageResult."; 1155 std::string histogram_name = "OfflinePages.SavePageResult.";
1101 histogram_name += kCCTNamespace; 1156 histogram_name += kCCTNamespace;
1102 1157
1103 histograms().ExpectUniqueSample(histogram_name, 1158 histograms().ExpectUniqueSample(histogram_name,
1104 static_cast<int>(SavePageResult::SUCCESS), 1); 1159 static_cast<int>(SavePageResult::SUCCESS), 1);
1105 } 1160 }
1106 1161
1107 TEST_F(OfflinePageModelImplTest, DownloadNamespace) { 1162 TEST_F(OfflinePageModelImplTest, DownloadNamespace) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 // Check if feature is correctly enabled by command-line flag. 1238 // Check if feature is correctly enabled by command-line flag.
1184 scoped_feature_list.reset(new base::test::ScopedFeatureList); 1239 scoped_feature_list.reset(new base::test::ScopedFeatureList);
1185 scoped_feature_list->InitFromCommandLine( 1240 scoped_feature_list->InitFromCommandLine(
1186 std::string(kOfflineBookmarksFeature.name) + "," + 1241 std::string(kOfflineBookmarksFeature.name) + "," +
1187 kOfflinePagesSharingFeature.name, 1242 kOfflinePagesSharingFeature.name,
1188 ""); 1243 "");
1189 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled()); 1244 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled());
1190 } 1245 }
1191 1246
1192 } // namespace offline_pages 1247 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_model_impl.cc ('k') | components/offline_pages/stub_offline_page_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698