OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <set> | 5 #include <set> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 HistoryBackendTest() : bookmark_model_(NULL), loaded_(false) {} | 106 HistoryBackendTest() : bookmark_model_(NULL), loaded_(false) {} |
107 virtual ~HistoryBackendTest() { | 107 virtual ~HistoryBackendTest() { |
108 } | 108 } |
109 | 109 |
110 // Callback for QueryMostVisited. | 110 // Callback for QueryMostVisited. |
111 void OnQueryMostVisited(CancelableRequestProvider::Handle handle, | 111 void OnQueryMostVisited(CancelableRequestProvider::Handle handle, |
112 history::MostVisitedURLList data) { | 112 history::MostVisitedURLList data) { |
113 most_visited_list_.swap(data); | 113 most_visited_list_.swap(data); |
114 } | 114 } |
115 | 115 |
| 116 // Callback for QueryFiltered. |
| 117 void OnQueryFiltered(CancelableRequestProvider::Handle handle, |
| 118 const history::FilteredURLList& data) { |
| 119 filtered_list_ = data; |
| 120 } |
| 121 |
116 const history::MostVisitedURLList& get_most_visited_list() const { | 122 const history::MostVisitedURLList& get_most_visited_list() const { |
117 return most_visited_list_; | 123 return most_visited_list_; |
118 } | 124 } |
119 | 125 |
| 126 const history::FilteredURLList& get_filtered_list() const { |
| 127 return filtered_list_; |
| 128 } |
| 129 |
120 protected: | 130 protected: |
121 scoped_refptr<HistoryBackend> backend_; // Will be NULL on init failure. | 131 scoped_refptr<HistoryBackend> backend_; // Will be NULL on init failure. |
122 scoped_ptr<InMemoryHistoryBackend> mem_backend_; | 132 scoped_ptr<InMemoryHistoryBackend> mem_backend_; |
123 | 133 |
124 void AddRedirectChain(const char* sequence[], int page_id) { | 134 void AddRedirectChain(const char* sequence[], int page_id) { |
125 AddRedirectChainWithTransitionAndTime(sequence, page_id, | 135 AddRedirectChainWithTransitionAndTime(sequence, page_id, |
126 content::PAGE_TRANSITION_LINK, | 136 content::PAGE_TRANSITION_LINK, |
127 Time::Now()); | 137 Time::Now()); |
128 } | 138 } |
129 | 139 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 content::Details<HistoryDetails> det(details); | 243 content::Details<HistoryDetails> det(details); |
234 mem_backend_->Observe(type, content::Source<HistoryBackendTest>(NULL), det); | 244 mem_backend_->Observe(type, content::Source<HistoryBackendTest>(NULL), det); |
235 | 245 |
236 // The backend passes ownership of the details pointer to us. | 246 // The backend passes ownership of the details pointer to us. |
237 delete details; | 247 delete details; |
238 } | 248 } |
239 | 249 |
240 MessageLoop message_loop_; | 250 MessageLoop message_loop_; |
241 FilePath test_dir_; | 251 FilePath test_dir_; |
242 history::MostVisitedURLList most_visited_list_; | 252 history::MostVisitedURLList most_visited_list_; |
| 253 history::FilteredURLList filtered_list_; |
243 }; | 254 }; |
244 | 255 |
245 void HistoryBackendTestDelegate::SetInMemoryBackend(int backend_id, | 256 void HistoryBackendTestDelegate::SetInMemoryBackend(int backend_id, |
246 InMemoryHistoryBackend* backend) { | 257 InMemoryHistoryBackend* backend) { |
247 test_->SetInMemoryBackend(backend_id, backend); | 258 test_->SetInMemoryBackend(backend_id, backend); |
248 } | 259 } |
249 | 260 |
250 void HistoryBackendTestDelegate::BroadcastNotifications( | 261 void HistoryBackendTestDelegate::BroadcastNotifications( |
251 int type, | 262 int type, |
252 HistoryDetails* details) { | 263 HistoryDetails* details) { |
(...skipping 1035 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 false, | 1299 false, |
1289 tested_time - one_day + half_an_hour * 2, | 1300 tested_time - one_day + half_an_hour * 2, |
1290 &transition1, &transition2); | 1301 &transition1, &transition2); |
1291 | 1302 |
1292 redirect_sequence[0] = yahoo_sports_soccer; | 1303 redirect_sequence[0] = yahoo_sports_soccer; |
1293 AddRedirectChainWithTransitionAndTime(redirect_sequence, 0, | 1304 AddRedirectChainWithTransitionAndTime(redirect_sequence, 0, |
1294 kTypedTransition, | 1305 kTypedTransition, |
1295 tested_time - half_an_hour); | 1306 tested_time - half_an_hour); |
1296 backend_->Commit(); | 1307 backend_->Commit(); |
1297 | 1308 |
1298 scoped_refptr<QueryMostVisitedURLsRequest> request1 = | 1309 scoped_refptr<QueryFilteredURLsRequest> request1 = |
1299 new history::QueryMostVisitedURLsRequest( | 1310 new history::QueryFilteredURLsRequest( |
1300 base::Bind(&HistoryBackendTest::OnQueryMostVisited, | 1311 base::Bind(&HistoryBackendTest::OnQueryFiltered, |
1301 base::Unretained(static_cast<HistoryBackendTest*>(this)))); | 1312 base::Unretained(static_cast<HistoryBackendTest*>(this)))); |
1302 HistoryBackendCancelableRequest cancellable_request; | 1313 HistoryBackendCancelableRequest cancellable_request; |
1303 cancellable_request.MockScheduleOfRequest<QueryMostVisitedURLsRequest>( | 1314 cancellable_request.MockScheduleOfRequest<QueryFilteredURLsRequest>( |
1304 request1); | 1315 request1); |
1305 | 1316 |
1306 VisitFilter filter; | 1317 VisitFilter filter; |
1307 // Time limit is |tested_time| +/- 45 min. | 1318 // Time limit is |tested_time| +/- 45 min. |
1308 base::TimeDelta three_quarters_of_an_hour = base::TimeDelta::FromMinutes(45); | 1319 base::TimeDelta three_quarters_of_an_hour = base::TimeDelta::FromMinutes(45); |
1309 filter.SetTimeInRangeFilter(tested_time - three_quarters_of_an_hour, | 1320 filter.SetTimeInRangeFilter(tested_time - three_quarters_of_an_hour, |
1310 tested_time + three_quarters_of_an_hour); | 1321 tested_time + three_quarters_of_an_hour); |
1311 backend_->QueryFilteredURLs(request1, 100, filter); | 1322 backend_->QueryFilteredURLs(request1, 100, filter); |
1312 | 1323 |
1313 ASSERT_EQ(4U, get_most_visited_list().size()); | 1324 ASSERT_EQ(4U, get_filtered_list().size()); |
1314 EXPECT_EQ(std::string(google), get_most_visited_list()[0].url.spec()); | 1325 EXPECT_EQ(std::string(google), get_filtered_list()[0].url.spec()); |
1315 EXPECT_EQ(std::string(yahoo_sports_soccer), | 1326 EXPECT_EQ(std::string(yahoo_sports_soccer), |
1316 get_most_visited_list()[1].url.spec()); | 1327 get_filtered_list()[1].url.spec()); |
1317 EXPECT_EQ(std::string(yahoo), get_most_visited_list()[2].url.spec()); | 1328 EXPECT_EQ(std::string(yahoo), get_filtered_list()[2].url.spec()); |
1318 EXPECT_EQ(std::string(yahoo_sports), | 1329 EXPECT_EQ(std::string(yahoo_sports), |
1319 get_most_visited_list()[3].url.spec()); | 1330 get_filtered_list()[3].url.spec()); |
1320 | 1331 |
1321 // Time limit is between |tested_time| and |tested_time| + 2 hours. | 1332 // Time limit is between |tested_time| and |tested_time| + 2 hours. |
1322 scoped_refptr<QueryMostVisitedURLsRequest> request2 = | 1333 scoped_refptr<QueryFilteredURLsRequest> request2 = |
1323 new history::QueryMostVisitedURLsRequest( | 1334 new history::QueryFilteredURLsRequest( |
1324 base::Bind(&HistoryBackendTest::OnQueryMostVisited, | 1335 base::Bind(&HistoryBackendTest::OnQueryFiltered, |
1325 base::Unretained(static_cast<HistoryBackendTest*>(this)))); | 1336 base::Unretained(static_cast<HistoryBackendTest*>(this)))); |
1326 cancellable_request.MockScheduleOfRequest<QueryMostVisitedURLsRequest>( | 1337 cancellable_request.MockScheduleOfRequest<QueryFilteredURLsRequest>( |
1327 request2); | 1338 request2); |
1328 filter.SetTimeInRangeFilter(tested_time, | 1339 filter.SetTimeInRangeFilter(tested_time, |
1329 tested_time + base::TimeDelta::FromHours(2)); | 1340 tested_time + base::TimeDelta::FromHours(2)); |
1330 backend_->QueryFilteredURLs(request2, 100, filter); | 1341 backend_->QueryFilteredURLs(request2, 100, filter); |
1331 | 1342 |
1332 ASSERT_EQ(3U, get_most_visited_list().size()); | 1343 ASSERT_EQ(3U, get_filtered_list().size()); |
1333 EXPECT_EQ(std::string(google), get_most_visited_list()[0].url.spec()); | 1344 EXPECT_EQ(std::string(google), get_filtered_list()[0].url.spec()); |
1334 EXPECT_EQ(std::string(yahoo), get_most_visited_list()[1].url.spec()); | 1345 EXPECT_EQ(std::string(yahoo), get_filtered_list()[1].url.spec()); |
1335 EXPECT_EQ(std::string(yahoo_sports), get_most_visited_list()[2].url.spec()); | 1346 EXPECT_EQ(std::string(yahoo_sports), get_filtered_list()[2].url.spec()); |
1336 | 1347 |
1337 // Time limit is between |tested_time| - 2 hours and |tested_time|. | 1348 // Time limit is between |tested_time| - 2 hours and |tested_time|. |
1338 scoped_refptr<QueryMostVisitedURLsRequest> request3 = | 1349 scoped_refptr<QueryFilteredURLsRequest> request3 = |
1339 new history::QueryMostVisitedURLsRequest( | 1350 new history::QueryFilteredURLsRequest( |
1340 base::Bind(&HistoryBackendTest::OnQueryMostVisited, | 1351 base::Bind(&HistoryBackendTest::OnQueryFiltered, |
1341 base::Unretained(static_cast<HistoryBackendTest*>(this)))); | 1352 base::Unretained(static_cast<HistoryBackendTest*>(this)))); |
1342 cancellable_request.MockScheduleOfRequest<QueryMostVisitedURLsRequest>( | 1353 cancellable_request.MockScheduleOfRequest<QueryFilteredURLsRequest>( |
1343 request3); | 1354 request3); |
1344 filter.SetTimeInRangeFilter(tested_time - base::TimeDelta::FromHours(2), | 1355 filter.SetTimeInRangeFilter(tested_time - base::TimeDelta::FromHours(2), |
1345 tested_time); | 1356 tested_time); |
1346 backend_->QueryFilteredURLs(request3, 100, filter); | 1357 backend_->QueryFilteredURLs(request3, 100, filter); |
1347 | 1358 |
1348 ASSERT_EQ(3U, get_most_visited_list().size()); | 1359 ASSERT_EQ(3U, get_filtered_list().size()); |
1349 EXPECT_EQ(std::string(google), get_most_visited_list()[0].url.spec()); | 1360 EXPECT_EQ(std::string(google), get_filtered_list()[0].url.spec()); |
1350 EXPECT_EQ(std::string(yahoo_sports_soccer), | 1361 EXPECT_EQ(std::string(yahoo_sports_soccer), |
1351 get_most_visited_list()[1].url.spec()); | 1362 get_filtered_list()[1].url.spec()); |
1352 EXPECT_EQ(std::string(yahoo_sports), get_most_visited_list()[2].url.spec()); | 1363 EXPECT_EQ(std::string(yahoo_sports), get_filtered_list()[2].url.spec()); |
1353 | 1364 |
1354 filter.ClearFilters(); | 1365 filter.ClearFilters(); |
1355 base::Time::Exploded exploded_time; | 1366 base::Time::Exploded exploded_time; |
1356 tested_time.LocalExplode(&exploded_time); | 1367 tested_time.LocalExplode(&exploded_time); |
1357 | 1368 |
1358 // Today. | 1369 // Today. |
1359 scoped_refptr<QueryMostVisitedURLsRequest> request4 = | 1370 scoped_refptr<QueryFilteredURLsRequest> request4 = |
1360 new history::QueryMostVisitedURLsRequest( | 1371 new history::QueryFilteredURLsRequest( |
1361 base::Bind(&HistoryBackendTest::OnQueryMostVisited, | 1372 base::Bind(&HistoryBackendTest::OnQueryFiltered, |
1362 base::Unretained(static_cast<HistoryBackendTest*>(this)))); | 1373 base::Unretained(static_cast<HistoryBackendTest*>(this)))); |
1363 cancellable_request.MockScheduleOfRequest<QueryMostVisitedURLsRequest>( | 1374 cancellable_request.MockScheduleOfRequest<QueryFilteredURLsRequest>( |
1364 request4); | 1375 request4); |
1365 filter.SetDayOfTheWeekFilter(static_cast<int>(exploded_time.day_of_week), | 1376 filter.SetDayOfTheWeekFilter(static_cast<int>(exploded_time.day_of_week), |
1366 tested_time); | 1377 tested_time); |
1367 backend_->QueryFilteredURLs(request4, 100, filter); | 1378 backend_->QueryFilteredURLs(request4, 100, filter); |
1368 | 1379 |
1369 ASSERT_EQ(2U, get_most_visited_list().size()); | 1380 ASSERT_EQ(2U, get_filtered_list().size()); |
1370 EXPECT_EQ(std::string(google), get_most_visited_list()[0].url.spec()); | 1381 EXPECT_EQ(std::string(google), get_filtered_list()[0].url.spec()); |
1371 EXPECT_EQ(std::string(yahoo_sports_soccer), | 1382 EXPECT_EQ(std::string(yahoo_sports_soccer), |
1372 get_most_visited_list()[1].url.spec()); | 1383 get_filtered_list()[1].url.spec()); |
1373 | 1384 |
1374 // Today + time limit - only yahoo_sports_soccer should fit. | 1385 // Today + time limit - only yahoo_sports_soccer should fit. |
1375 scoped_refptr<QueryMostVisitedURLsRequest> request5 = | 1386 scoped_refptr<QueryFilteredURLsRequest> request5 = |
1376 new history::QueryMostVisitedURLsRequest( | 1387 new history::QueryFilteredURLsRequest( |
1377 base::Bind(&HistoryBackendTest::OnQueryMostVisited, | 1388 base::Bind(&HistoryBackendTest::OnQueryFiltered, |
1378 base::Unretained(static_cast<HistoryBackendTest*>(this)))); | 1389 base::Unretained(static_cast<HistoryBackendTest*>(this)))); |
1379 cancellable_request.MockScheduleOfRequest<QueryMostVisitedURLsRequest>( | 1390 cancellable_request.MockScheduleOfRequest<QueryFilteredURLsRequest>( |
1380 request5); | 1391 request5); |
1381 filter.SetTimeInRangeFilter(tested_time - base::TimeDelta::FromHours(1), | 1392 filter.SetTimeInRangeFilter(tested_time - base::TimeDelta::FromHours(1), |
1382 tested_time - base::TimeDelta::FromMinutes(20)); | 1393 tested_time - base::TimeDelta::FromMinutes(20)); |
1383 backend_->QueryFilteredURLs(request5, 100, filter); | 1394 backend_->QueryFilteredURLs(request5, 100, filter); |
1384 | 1395 |
1385 ASSERT_EQ(1U, get_most_visited_list().size()); | 1396 ASSERT_EQ(1U, get_filtered_list().size()); |
1386 EXPECT_EQ(std::string(yahoo_sports_soccer), | 1397 EXPECT_EQ(std::string(yahoo_sports_soccer), |
1387 get_most_visited_list()[0].url.spec()); | 1398 get_filtered_list()[0].url.spec()); |
1388 } | 1399 } |
1389 | 1400 |
1390 TEST_F(HistoryBackendTest, UpdateVisitDuration) { | 1401 TEST_F(HistoryBackendTest, UpdateVisitDuration) { |
1391 // This unit test will test adding and deleting visit details information. | 1402 // This unit test will test adding and deleting visit details information. |
1392 ASSERT_TRUE(backend_.get()); | 1403 ASSERT_TRUE(backend_.get()); |
1393 | 1404 |
1394 GURL url1("http://www.cnn.com"); | 1405 GURL url1("http://www.cnn.com"); |
1395 std::vector<VisitInfo> visit_info1, visit_info2; | 1406 std::vector<VisitInfo> visit_info1, visit_info2; |
1396 Time start_ts = Time::Now() - base::TimeDelta::FromDays(5); | 1407 Time start_ts = Time::Now() - base::TimeDelta::FromDays(5); |
1397 Time end_ts = start_ts + base::TimeDelta::FromDays(2); | 1408 Time end_ts = start_ts + base::TimeDelta::FromDays(2); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1496 EXPECT_EQ(cur_version, file_version); | 1507 EXPECT_EQ(cur_version, file_version); |
1497 | 1508 |
1498 // Check visit_duration column in visits table is created and set to 0. | 1509 // Check visit_duration column in visits table is created and set to 0. |
1499 s1.Assign(archived_db.GetUniqueStatement( | 1510 s1.Assign(archived_db.GetUniqueStatement( |
1500 "SELECT visit_duration FROM visits LIMIT 1")); | 1511 "SELECT visit_duration FROM visits LIMIT 1")); |
1501 ASSERT_TRUE(s1.Step()); | 1512 ASSERT_TRUE(s1.Step()); |
1502 EXPECT_EQ(0, s1.ColumnInt(0)); | 1513 EXPECT_EQ(0, s1.ColumnInt(0)); |
1503 } | 1514 } |
1504 | 1515 |
1505 } // namespace history | 1516 } // namespace history |
OLD | NEW |