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

Side by Side Diff: chrome/browser/history/history_backend.cc

Issue 351053003: Port HistoryService::QueryFilteredURLs to CancelableRequestTracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
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 "chrome/browser/history/history_backend.h" 5 #include "chrome/browser/history/history_backend.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <list> 9 #include <list>
10 #include <map> 10 #include <map>
(...skipping 1288 matching lines...) Expand 10 before | Expand all | Expand 10 after
1299 1299
1300 for (size_t i = 0; i < data.size(); ++i) { 1300 for (size_t i = 0; i < data.size(); ++i) {
1301 PageUsageData* current_data = data[i]; 1301 PageUsageData* current_data = data[i];
1302 RedirectList redirects; 1302 RedirectList redirects;
1303 QueryRedirectsFrom(current_data->GetURL(), &redirects); 1303 QueryRedirectsFrom(current_data->GetURL(), &redirects);
1304 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects); 1304 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1305 result->push_back(url); 1305 result->push_back(url);
1306 } 1306 }
1307 } 1307 }
1308 1308
1309 void HistoryBackend::QueryFilteredURLs( 1309 void HistoryBackend::QueryFilteredURLs(int result_count,
1310 scoped_refptr<QueryFilteredURLsRequest> request, 1310 const history::VisitFilter& filter,
1311 int result_count, 1311 bool extended_info,
1312 const history::VisitFilter& filter, 1312 history::FilteredURLList* result) {
1313 bool extended_info) { 1313 DCHECK(result);
1314 if (request->canceled())
1315 return;
1316
1317 base::Time request_start = base::Time::Now(); 1314 base::Time request_start = base::Time::Now();
1318 1315
1316 result->clear();
1319 if (!db_) { 1317 if (!db_) {
1320 // No History Database - return an empty list. 1318 // No History Database - return an empty list.
1321 request->ForwardResult(request->handle(), FilteredURLList());
1322 return; 1319 return;
1323 } 1320 }
1324 1321
1325 VisitVector visits; 1322 VisitVector visits;
1326 db_->GetDirectVisitsDuringTimes(filter, 0, &visits); 1323 db_->GetDirectVisitsDuringTimes(filter, 0, &visits);
1327 1324
1328 std::map<URLID, double> score_map; 1325 std::map<URLID, double> score_map;
1329 for (size_t i = 0; i < visits.size(); ++i) { 1326 for (size_t i = 0; i < visits.size(); ++i) {
1330 score_map[visits[i].url_id] += filter.GetVisitScore(visits[i]); 1327 score_map[visits[i].url_id] += filter.GetVisitScore(visits[i]);
1331 } 1328 }
(...skipping 16 matching lines...) Expand all
1348 data.resize(result_count); 1345 data.resize(result_count);
1349 1346
1350 for (size_t i = 0; i < data.size(); ++i) { 1347 for (size_t i = 0; i < data.size(); ++i) {
1351 URLRow info; 1348 URLRow info;
1352 if (db_->GetURLRow(data[i]->GetID(), &info)) { 1349 if (db_->GetURLRow(data[i]->GetID(), &info)) {
1353 data[i]->SetURL(info.url()); 1350 data[i]->SetURL(info.url());
1354 data[i]->SetTitle(info.title()); 1351 data[i]->SetTitle(info.title());
1355 } 1352 }
1356 } 1353 }
1357 1354
1358 FilteredURLList& result = request->value;
1359 for (size_t i = 0; i < data.size(); ++i) { 1355 for (size_t i = 0; i < data.size(); ++i) {
1360 PageUsageData* current_data = data[i]; 1356 PageUsageData* current_data = data[i];
1361 FilteredURL url(*current_data); 1357 FilteredURL url(*current_data);
1362 1358
1363 if (extended_info) { 1359 if (extended_info) {
1364 VisitVector visits; 1360 VisitVector visits;
1365 db_->GetVisitsForURL(current_data->GetID(), &visits); 1361 db_->GetVisitsForURL(current_data->GetID(), &visits);
1366 if (visits.size() > 0) { 1362 if (visits.size() > 0) {
1367 url.extended_info.total_visits = visits.size(); 1363 url.extended_info.total_visits = visits.size();
1368 for (size_t i = 0; i < visits.size(); ++i) { 1364 for (size_t i = 0; i < visits.size(); ++i) {
1369 url.extended_info.duration_opened += 1365 url.extended_info.duration_opened +=
1370 visits[i].visit_duration.InSeconds(); 1366 visits[i].visit_duration.InSeconds();
1371 if (visits[i].visit_time > url.extended_info.last_visit_time) { 1367 if (visits[i].visit_time > url.extended_info.last_visit_time) {
1372 url.extended_info.last_visit_time = visits[i].visit_time; 1368 url.extended_info.last_visit_time = visits[i].visit_time;
1373 } 1369 }
1374 } 1370 }
1375 // TODO(macourteau): implement the url.extended_info.visits stat. 1371 // TODO(macourteau): implement the url.extended_info.visits stat.
1376 } 1372 }
1377 } 1373 }
1378 result.push_back(url); 1374 result->push_back(url);
1379 } 1375 }
1380 1376
1381 int delta_time = std::max(1, std::min(999, 1377 int delta_time = std::max(1, std::min(999,
1382 static_cast<int>((base::Time::Now() - request_start).InMilliseconds()))); 1378 static_cast<int>((base::Time::Now() - request_start).InMilliseconds())));
1383 STATIC_HISTOGRAM_POINTER_BLOCK( 1379 STATIC_HISTOGRAM_POINTER_BLOCK(
1384 "NewTabPage.SuggestedSitesLoadTime", 1380 "NewTabPage.SuggestedSitesLoadTime",
1385 Add(delta_time), 1381 Add(delta_time),
1386 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime", 1382 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime",
1387 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag)); 1383 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag));
1388
1389 request->ForwardResult(request->handle(), result);
1390 } 1384 }
1391 1385
1392 void HistoryBackend::GetRedirectsFromSpecificVisit( 1386 void HistoryBackend::GetRedirectsFromSpecificVisit(
1393 VisitID cur_visit, history::RedirectList* redirects) { 1387 VisitID cur_visit, history::RedirectList* redirects) {
1394 // Follow any redirects from the given visit and add them to the list. 1388 // Follow any redirects from the given visit and add them to the list.
1395 // It *should* be impossible to get a circular chain here, but we check 1389 // It *should* be impossible to get a circular chain here, but we check
1396 // just in case to avoid infinite loops. 1390 // just in case to avoid infinite loops.
1397 GURL cur_url; 1391 GURL cur_url;
1398 std::set<VisitID> visit_set; 1392 std::set<VisitID> visit_set;
1399 visit_set.insert(cur_visit); 1393 visit_set.insert(cur_visit);
(...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after
2720 int rank = kPageVisitStatsMaxTopSites; 2714 int rank = kPageVisitStatsMaxTopSites;
2721 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url); 2715 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url);
2722 if (it != most_visited_urls_map_.end()) 2716 if (it != most_visited_urls_map_.end())
2723 rank = (*it).second; 2717 rank = (*it).second;
2724 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank", 2718 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank",
2725 rank, kPageVisitStatsMaxTopSites + 1); 2719 rank, kPageVisitStatsMaxTopSites + 1);
2726 } 2720 }
2727 #endif 2721 #endif
2728 2722
2729 } // namespace history 2723 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_backend.h ('k') | chrome/browser/history/history_backend_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698