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

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: 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 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 1285
1286 void HistoryBackend::GetVisibleVisitCountToHost( 1286 void HistoryBackend::GetVisibleVisitCountToHost(
1287 const GURL& url, 1287 const GURL& url,
1288 VisibleVisitCountToHostResult* result) { 1288 VisibleVisitCountToHostResult* result) {
1289 result->count = 0; 1289 result->count = 0;
1290 result->success = db_.get() && 1290 result->success = db_.get() &&
1291 db_->GetVisibleVisitCountToHost( 1291 db_->GetVisibleVisitCountToHost(
1292 url, &result->count, &result->first_visit); 1292 url, &result->count, &result->first_visit);
1293 } 1293 }
1294 1294
1295 void HistoryBackend::QueryMostVisitedURLs( 1295 void HistoryBackend::QueryMostVisitedURLs(int result_count,
1296 scoped_refptr<QueryMostVisitedURLsRequest> request, 1296 int days_back,
1297 int result_count, 1297 MostVisitedURLList* result) {
1298 int days_back) { 1298 if (!db_)
1299 if (request->canceled())
1300 return; 1299 return;
1301 1300
1302 if (!db_) { 1301 ScopedVector<PageUsageData> data;
1303 // No History Database - return an empty list. 1302 db_->QuerySegmentUsage(base::Time::Now() -
1304 request->ForwardResult(request->handle(), MostVisitedURLList()); 1303 base::TimeDelta::FromDays(days_back),
1305 return; 1304 result_count, &data.get());
1305
1306 for (size_t i = 0; i < data.size(); ++i) {
1307 PageUsageData* current_data = data[i];
1308 RedirectList redirects;
1309 GetMostRecentRedirectsFrom(current_data->GetURL(), &redirects);
1310 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1311 result->push_back(url);
1306 } 1312 }
1307
1308 MostVisitedURLList* result = &request->value;
1309 QueryMostVisitedURLsImpl(result_count, days_back, result);
1310 request->ForwardResult(request->handle(), *result);
1311 } 1313 }
1312 1314
1313 void HistoryBackend::QueryFilteredURLs( 1315 void HistoryBackend::QueryFilteredURLs(
1314 scoped_refptr<QueryFilteredURLsRequest> request, 1316 scoped_refptr<QueryFilteredURLsRequest> request,
1315 int result_count, 1317 int result_count,
1316 const history::VisitFilter& filter, 1318 const history::VisitFilter& filter,
1317 bool extended_info) { 1319 bool extended_info) {
1318 if (request->canceled()) 1320 if (request->canceled())
1319 return; 1321 return;
1320 1322
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1386 static_cast<int>((base::Time::Now() - request_start).InMilliseconds()))); 1388 static_cast<int>((base::Time::Now() - request_start).InMilliseconds())));
1387 STATIC_HISTOGRAM_POINTER_BLOCK( 1389 STATIC_HISTOGRAM_POINTER_BLOCK(
1388 "NewTabPage.SuggestedSitesLoadTime", 1390 "NewTabPage.SuggestedSitesLoadTime",
1389 Add(delta_time), 1391 Add(delta_time),
1390 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime", 1392 base::LinearHistogram::FactoryGet("NewTabPage.SuggestedSitesLoadTime",
1391 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag)); 1393 1, 1000, 100, base::Histogram::kUmaTargetedHistogramFlag));
1392 1394
1393 request->ForwardResult(request->handle(), result); 1395 request->ForwardResult(request->handle(), result);
1394 } 1396 }
1395 1397
1396 void HistoryBackend::QueryMostVisitedURLsImpl(int result_count,
1397 int days_back,
1398 MostVisitedURLList* result) {
1399 if (!db_)
1400 return;
1401
1402 ScopedVector<PageUsageData> data;
1403 db_->QuerySegmentUsage(base::Time::Now() -
1404 base::TimeDelta::FromDays(days_back),
1405 result_count, &data.get());
1406
1407 for (size_t i = 0; i < data.size(); ++i) {
1408 PageUsageData* current_data = data[i];
1409 RedirectList redirects;
1410 GetMostRecentRedirectsFrom(current_data->GetURL(), &redirects);
1411 MostVisitedURL url = MakeMostVisitedURL(*current_data, redirects);
1412 result->push_back(url);
1413 }
1414 }
1415
1416 void HistoryBackend::GetRedirectsFromSpecificVisit( 1398 void HistoryBackend::GetRedirectsFromSpecificVisit(
1417 VisitID cur_visit, history::RedirectList* redirects) { 1399 VisitID cur_visit, history::RedirectList* redirects) {
1418 // Follow any redirects from the given visit and add them to the list. 1400 // Follow any redirects from the given visit and add them to the list.
1419 // It *should* be impossible to get a circular chain here, but we check 1401 // It *should* be impossible to get a circular chain here, but we check
1420 // just in case to avoid infinite loops. 1402 // just in case to avoid infinite loops.
1421 GURL cur_url; 1403 GURL cur_url;
1422 std::set<VisitID> visit_set; 1404 std::set<VisitID> visit_set;
1423 visit_set.insert(cur_visit); 1405 visit_set.insert(cur_visit);
1424 while (db_->GetRedirectFromVisit(cur_visit, &cur_visit, &cur_url)) { 1406 while (db_->GetRedirectFromVisit(cur_visit, &cur_visit, &cur_url)) {
1425 if (visit_set.find(cur_visit) != visit_set.end()) { 1407 if (visit_set.find(cur_visit) != visit_set.end()) {
(...skipping 1328 matching lines...) Expand 10 before | Expand all | Expand 10 after
2754 info.transition = visit.transition; 2736 info.transition = visit.transition;
2755 // If we don't have a delegate yet during setup or shutdown, we will drop 2737 // If we don't have a delegate yet during setup or shutdown, we will drop
2756 // these notifications. 2738 // these notifications.
2757 if (delegate_) 2739 if (delegate_)
2758 delegate_->NotifyVisitDBObserversOnAddVisit(info); 2740 delegate_->NotifyVisitDBObserversOnAddVisit(info);
2759 } 2741 }
2760 2742
2761 #if defined(OS_ANDROID) 2743 #if defined(OS_ANDROID)
2762 void HistoryBackend::PopulateMostVisitedURLMap() { 2744 void HistoryBackend::PopulateMostVisitedURLMap() {
2763 MostVisitedURLList most_visited_urls; 2745 MostVisitedURLList most_visited_urls;
2764 QueryMostVisitedURLsImpl(kPageVisitStatsMaxTopSites, kSegmentDataRetention, 2746 QueryMostVisitedURLs(kPageVisitStatsMaxTopSites,
2765 &most_visited_urls); 2747 kSegmentDataRetention,
2748 &most_visited_urls);
2766 2749
2767 DCHECK_LE(most_visited_urls.size(), kPageVisitStatsMaxTopSites); 2750 DCHECK_LE(most_visited_urls.size(), kPageVisitStatsMaxTopSites);
2768 for (size_t i = 0; i < most_visited_urls.size(); ++i) { 2751 for (size_t i = 0; i < most_visited_urls.size(); ++i) {
2769 most_visited_urls_map_[most_visited_urls[i].url] = i; 2752 most_visited_urls_map_[most_visited_urls[i].url] = i;
2770 for (size_t j = 0; j < most_visited_urls[i].redirects.size(); ++j) 2753 for (size_t j = 0; j < most_visited_urls[i].redirects.size(); ++j)
2771 most_visited_urls_map_[most_visited_urls[i].redirects[j]] = i; 2754 most_visited_urls_map_[most_visited_urls[i].redirects[j]] = i;
2772 } 2755 }
2773 } 2756 }
2774 2757
2775 void HistoryBackend::RecordTopPageVisitStats(const GURL& url) { 2758 void HistoryBackend::RecordTopPageVisitStats(const GURL& url) {
2776 int rank = kPageVisitStatsMaxTopSites; 2759 int rank = kPageVisitStatsMaxTopSites;
2777 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url); 2760 std::map<GURL, int>::const_iterator it = most_visited_urls_map_.find(url);
2778 if (it != most_visited_urls_map_.end()) 2761 if (it != most_visited_urls_map_.end())
2779 rank = (*it).second; 2762 rank = (*it).second;
2780 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank", 2763 UMA_HISTOGRAM_ENUMERATION("History.TopSitesVisitsByRank",
2781 rank, kPageVisitStatsMaxTopSites + 1); 2764 rank, kPageVisitStatsMaxTopSites + 1);
2782 } 2765 }
2783 #endif 2766 #endif
2784 2767
2785 } // namespace history 2768 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698