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

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

Issue 352623002: Port History::QueryMostVisitedURLs to use CancelableTaskTracker (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 1299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 const GURL& url) { 1310 const GURL& url) {
1311 if (request->canceled()) 1311 if (request->canceled())
1312 return; 1312 return;
1313 int count = 0; 1313 int count = 0;
1314 Time first_visit; 1314 Time first_visit;
1315 const bool success = db_.get() && 1315 const bool success = db_.get() &&
1316 db_->GetVisibleVisitCountToHost(url, &count, &first_visit); 1316 db_->GetVisibleVisitCountToHost(url, &count, &first_visit);
1317 request->ForwardResult(request->handle(), success, count, first_visit); 1317 request->ForwardResult(request->handle(), success, count, first_visit);
1318 } 1318 }
1319 1319
1320 void HistoryBackend::QueryMostVisitedURLs( 1320 void HistoryBackend::QueryMostVisitedURLs(int result_count,
1321 scoped_refptr<QueryMostVisitedURLsRequest> request, 1321 int days_back,
1322 int result_count, 1322 MostVisitedURLList* result) {
1323 int days_back) { 1323 if (!db_)
1324 if (request->canceled())
1325 return; 1324 return;
1326 1325
1327 if (!db_) { 1326 ScopedVector<PageUsageData> data;
1328 // No History Database - return an empty list. 1327 db_->QuerySegmentUsage(
1329 request->ForwardResult(request->handle(), MostVisitedURLList()); 1328 base::Time::Now() - base::TimeDelta::FromDays(days_back),
1330 return; 1329 result_count,
1330 &data.get());
1331
1332 for (size_t i = 0; i < data.size(); ++i) {
1333 PageUsageData* current_data = data[i];
1334 RedirectList redirects;
1335 QueryRedirectsFrom(current_data->GetURL(), &redirects);
1336 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1337 result->push_back(url);
1331 } 1338 }
1332
1333 MostVisitedURLList* result = &request->value;
1334 QueryMostVisitedURLsImpl(result_count, days_back, result);
1335 request->ForwardResult(request->handle(), *result);
1336 } 1339 }
1337 1340
1338 void HistoryBackend::QueryFilteredURLs( 1341 void HistoryBackend::QueryFilteredURLs(
1339 scoped_refptr<QueryFilteredURLsRequest> request, 1342 scoped_refptr<QueryFilteredURLsRequest> request,
1340 int result_count, 1343 int result_count,
1341 const history::VisitFilter& filter, 1344 const history::VisitFilter& filter,
1342 bool extended_info) { 1345 bool extended_info) {
1343 if (request->canceled()) 1346 if (request->canceled())
1344 return; 1347 return;
1345 1348
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 static_cast<int>((base::Time::Now() - request_start).InMilliseconds()))); 1414 static_cast<int>((base::Time::Now() - request_start).InMilliseconds())));
1412 STATIC_HISTOGRAM_POINTER_BLOCK( 1415 STATIC_HISTOGRAM_POINTER_BLOCK(
1413 "NewTabPage.SuggestedSitesLoadTime", 1416 "NewTabPage.SuggestedSitesLoadTime",
1414 Add(delta_time), 1417 Add(delta_time),
1415 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime", 1418 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime",
1416 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag)); 1419 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag));
1417 1420
1418 request->ForwardResult(request->handle(), result); 1421 request->ForwardResult(request->handle(), result);
1419 } 1422 }
1420 1423
1421 void HistoryBackend::QueryMostVisitedURLsImpl(int result_count,
1422 int days_back,
1423 MostVisitedURLList* result) {
1424 if (!db_)
1425 return;
1426
1427 ScopedVector<PageUsageData> data;
1428 db_->QuerySegmentUsage(base::Time::Now() -
1429 base::TimeDelta::FromDays(days_back),
1430 result_count, &data.get());
1431
1432 for (size_t i = 0; i < data.size(); ++i) {
1433 PageUsageData* current_data = data[i];
1434 RedirectList redirects;
1435 QueryRedirectsFrom(current_data->GetURL(), &redirects);
1436 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1437 result->push_back(url);
1438 }
1439 }
1440
1441 void HistoryBackend::GetRedirectsFromSpecificVisit( 1424 void HistoryBackend::GetRedirectsFromSpecificVisit(
1442 VisitID cur_visit, history::RedirectList* redirects) { 1425 VisitID cur_visit, history::RedirectList* redirects) {
1443 // Follow any redirects from the given visit and add them to the list. 1426 // Follow any redirects from the given visit and add them to the list.
1444 // It *should* be impossible to get a circular chain here, but we check 1427 // It *should* be impossible to get a circular chain here, but we check
1445 // just in case to avoid infinite loops. 1428 // just in case to avoid infinite loops.
1446 GURL cur_url; 1429 GURL cur_url;
1447 std::set<VisitID> visit_set; 1430 std::set<VisitID> visit_set;
1448 visit_set.insert(cur_visit); 1431 visit_set.insert(cur_visit);
1449 while (db_->GetRedirectFromVisit(cur_visit, &cur_visit, &cur_url)) { 1432 while (db_->GetRedirectFromVisit(cur_visit, &cur_visit, &cur_url)) {
1450 if (visit_set.find(cur_visit) != visit_set.end()) { 1433 if (visit_set.find(cur_visit) != visit_set.end()) {
(...skipping 1296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2747 info.transition = visit.transition; 2730 info.transition = visit.transition;
2748 // If we don't have a delegate yet during setup or shutdown, we will drop 2731 // If we don't have a delegate yet during setup or shutdown, we will drop
2749 // these notifications. 2732 // these notifications.
2750 if (delegate_) 2733 if (delegate_)
2751 delegate_->NotifyVisitDBObserversOnAddVisit(info); 2734 delegate_->NotifyVisitDBObserversOnAddVisit(info);
2752 } 2735 }
2753 2736
2754 #if defined(OS_ANDROID) 2737 #if defined(OS_ANDROID)
2755 void HistoryBackend::PopulateMostVisitedURLMap() { 2738 void HistoryBackend::PopulateMostVisitedURLMap() {
2756 MostVisitedURLList most_visited_urls; 2739 MostVisitedURLList most_visited_urls;
2757 QueryMostVisitedURLsImpl(kPageVisitStatsMaxTopSites, kSegmentDataRetention, 2740 QueryMostVisitedURLs(
2758 &most_visited_urls); 2741 kPageVisitStatsMaxTopSites, kSegmentDataRetention, &most_visited_urls);
2759 2742
2760 DCHECK_LE(most_visited_urls.size(), kPageVisitStatsMaxTopSites); 2743 DCHECK_LE(most_visited_urls.size(), kPageVisitStatsMaxTopSites);
2761 for (size_t i = 0; i < most_visited_urls.size(); ++i) { 2744 for (size_t i = 0; i < most_visited_urls.size(); ++i) {
2762 most_visited_urls_map_[most_visited_urls[i].url] = i; 2745 most_visited_urls_map_[most_visited_urls[i].url] = i;
2763 for (size_t j = 0; j < most_visited_urls[i].redirects.size(); ++j) 2746 for (size_t j = 0; j < most_visited_urls[i].redirects.size(); ++j)
2764 most_visited_urls_map_[most_visited_urls[i].redirects[j]] = i; 2747 most_visited_urls_map_[most_visited_urls[i].redirects[j]] = i;
2765 } 2748 }
2766 } 2749 }
2767 2750
2768 void HistoryBackend::RecordTopPageVisitStats(const GURL& url) { 2751 void HistoryBackend::RecordTopPageVisitStats(const GURL& url) {
2769 int rank = kPageVisitStatsMaxTopSites; 2752 int rank = kPageVisitStatsMaxTopSites;
2770 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url); 2753 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url);
2771 if (it != most_visited_urls_map_.end()) 2754 if (it != most_visited_urls_map_.end())
2772 rank = (*it).second; 2755 rank = (*it).second;
2773 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank", 2756 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank",
2774 rank, kPageVisitStatsMaxTopSites + 1); 2757 rank, kPageVisitStatsMaxTopSites + 1);
2775 } 2758 }
2776 #endif 2759 #endif
2777 2760
2778 } // namespace history 2761 } // 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