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

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: 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 1330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 1341
1342 for (size_t i = 0; i < data.size(); ++i) { 1342 for (size_t i = 0; i < data.size(); ++i) {
1343 PageUsageData* current_data = data[i]; 1343 PageUsageData* current_data = data[i];
1344 RedirectList redirects; 1344 RedirectList redirects;
1345 QueryRedirectsFrom(current_data->GetURL(), &redirects); 1345 QueryRedirectsFrom(current_data->GetURL(), &redirects);
1346 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects); 1346 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1347 result->push_back(url); 1347 result->push_back(url);
1348 } 1348 }
1349 } 1349 }
1350 1350
1351 void HistoryBackend::QueryFilteredURLs( 1351 void HistoryBackend::QueryFilteredURLs(int result_count,
1352 scoped_refptr<QueryFilteredURLsRequest> request, 1352 const history::VisitFilter& filter,
1353 int result_count, 1353 bool extended_info,
1354 const history::VisitFilter& filter, 1354 history::FilteredURLList* result) {
1355 bool extended_info) { 1355 DCHECK(result);
1356 if (request->canceled())
1357 return;
1358
1359 base::Time request_start = base::Time::Now(); 1356 base::Time request_start = base::Time::Now();
1360 1357
1358 result->clear();
1361 if (!db_) { 1359 if (!db_) {
1362 // No History Database - return an empty list. 1360 // No History Database - return an empty list.
1363 request->ForwardResult(request->handle(), FilteredURLList());
1364 return; 1361 return;
1365 } 1362 }
1366 1363
1367 VisitVector visits; 1364 VisitVector visits;
1368 db_->GetDirectVisitsDuringTimes(filter, 0, &visits); 1365 db_->GetDirectVisitsDuringTimes(filter, 0, &visits);
1369 1366
1370 std::map<URLID, double> score_map; 1367 std::map<URLID, double> score_map;
1371 for (size_t i = 0; i < visits.size(); ++i) { 1368 for (size_t i = 0; i < visits.size(); ++i) {
1372 score_map[visits[i].url_id] += filter.GetVisitScore(visits[i]); 1369 score_map[visits[i].url_id] += filter.GetVisitScore(visits[i]);
1373 } 1370 }
(...skipping 16 matching lines...) Expand all
1390 data.resize(result_count); 1387 data.resize(result_count);
1391 1388
1392 for (size_t i = 0; i < data.size(); ++i) { 1389 for (size_t i = 0; i < data.size(); ++i) {
1393 URLRow info; 1390 URLRow info;
1394 if (db_->GetURLRow(data[i]->GetID(), &info)) { 1391 if (db_->GetURLRow(data[i]->GetID(), &info)) {
1395 data[i]->SetURL(info.url()); 1392 data[i]->SetURL(info.url());
1396 data[i]->SetTitle(info.title()); 1393 data[i]->SetTitle(info.title());
1397 } 1394 }
1398 } 1395 }
1399 1396
1400 FilteredURLList& result = request->value;
1401 for (size_t i = 0; i < data.size(); ++i) { 1397 for (size_t i = 0; i < data.size(); ++i) {
1402 PageUsageData* current_data = data[i]; 1398 PageUsageData* current_data = data[i];
1403 FilteredURL url(*current_data); 1399 FilteredURL url(*current_data);
1404 1400
1405 if (extended_info) { 1401 if (extended_info) {
1406 VisitVector visits; 1402 VisitVector visits;
1407 db_->GetVisitsForURL(current_data->GetID(), &visits); 1403 db_->GetVisitsForURL(current_data->GetID(), &visits);
1408 if (visits.size() > 0) { 1404 if (visits.size() > 0) {
1409 url.extended_info.total_visits = visits.size(); 1405 url.extended_info.total_visits = visits.size();
1410 for (size_t i = 0; i < visits.size(); ++i) { 1406 for (size_t i = 0; i < visits.size(); ++i) {
1411 url.extended_info.duration_opened += 1407 url.extended_info.duration_opened +=
1412 visits[i].visit_duration.InSeconds(); 1408 visits[i].visit_duration.InSeconds();
1413 if (visits[i].visit_time > url.extended_info.last_visit_time) { 1409 if (visits[i].visit_time > url.extended_info.last_visit_time) {
1414 url.extended_info.last_visit_time = visits[i].visit_time; 1410 url.extended_info.last_visit_time = visits[i].visit_time;
1415 } 1411 }
1416 } 1412 }
1417 // TODO(macourteau): implement the url.extended_info.visits stat. 1413 // TODO(macourteau): implement the url.extended_info.visits stat.
1418 } 1414 }
1419 } 1415 }
1420 result.push_back(url); 1416 result->push_back(url);
1421 } 1417 }
1422 1418
1423 int delta_time = std::max(1, std::min(999, 1419 int delta_time = std::max(1, std::min(999,
1424 static_cast<int>((base::Time::Now() - request_start).InMilliseconds()))); 1420 static_cast<int>((base::Time::Now() - request_start).InMilliseconds())));
1425 STATIC_HISTOGRAM_POINTER_BLOCK( 1421 STATIC_HISTOGRAM_POINTER_BLOCK(
1426 "NewTabPage.SuggestedSitesLoadTime", 1422 "NewTabPage.SuggestedSitesLoadTime",
1427 Add(delta_time), 1423 Add(delta_time),
1428 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime", 1424 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime",
1429 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag)); 1425 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag));
1430
1431 request->ForwardResult(request->handle(), result);
1432 } 1426 }
1433 1427
1434 void HistoryBackend::GetRedirectsFromSpecificVisit( 1428 void HistoryBackend::GetRedirectsFromSpecificVisit(
1435 VisitID cur_visit, history::RedirectList* redirects) { 1429 VisitID cur_visit, history::RedirectList* redirects) {
1436 // Follow any redirects from the given visit and add them to the list. 1430 // Follow any redirects from the given visit and add them to the list.
1437 // It *should* be impossible to get a circular chain here, but we check 1431 // It *should* be impossible to get a circular chain here, but we check
1438 // just in case to avoid infinite loops. 1432 // just in case to avoid infinite loops.
1439 GURL cur_url; 1433 GURL cur_url;
1440 std::set<VisitID> visit_set; 1434 std::set<VisitID> visit_set;
1441 visit_set.insert(cur_visit); 1435 visit_set.insert(cur_visit);
(...skipping 1321 matching lines...) Expand 10 before | Expand all | Expand 10 after
2763 int rank = kPageVisitStatsMaxTopSites; 2757 int rank = kPageVisitStatsMaxTopSites;
2764 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url); 2758 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url);
2765 if (it != most_visited_urls_map_.end()) 2759 if (it != most_visited_urls_map_.end())
2766 rank = (*it).second; 2760 rank = (*it).second;
2767 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank", 2761 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank",
2768 rank, kPageVisitStatsMaxTopSites + 1); 2762 rank, kPageVisitStatsMaxTopSites + 1);
2769 } 2763 }
2770 #endif 2764 #endif
2771 2765
2772 } // namespace history 2766 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698