Index: components/history/core/browser/top_sites_backend.cc |
diff --git a/components/history/core/browser/top_sites_backend.cc b/components/history/core/browser/top_sites_backend.cc |
index 2383c1c9d213510dc217bc28465667d05dda2392..dc0773c8e7934e19ca8250924862cac9f1671719 100644 |
--- a/components/history/core/browser/top_sites_backend.cc |
+++ b/components/history/core/browser/top_sites_backend.cc |
@@ -19,6 +19,18 @@ |
namespace history { |
+TopSitesBackend::HistogramRecording TopSitesBackend::histogram_recorded_ = |
+ HISTOGRAM_RECORDING_NOT_YET; |
+ |
+// static |
+void TopSitesBackend::IncraseHistogramRecordingStatus() { |
+ if (histogram_recorded_ == HISTOGRAM_RECORDING_NOT_YET) { |
+ histogram_recorded_ = HISTOGRAM_RECORDING_IN_PROGRESS; |
+ } else if (histogram_recorded_ == HISTOGRAM_RECORDING_IN_PROGRESS) { |
+ histogram_recorded_ = HISTOGRAM_RECORDING_DONE; |
+ } |
+} |
+ |
TopSitesBackend::TopSitesBackend( |
const scoped_refptr<base::SingleThreadTaskRunner>& db_task_runner) |
: db_(new TopSitesDatabase()), db_task_runner_(db_task_runner) { |
@@ -47,10 +59,12 @@ void TopSitesBackend::GetMostVisitedThumbnails( |
base::Bind(callback, thumbnails)); |
} |
-void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta) { |
+void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta, |
+ const CallLocation location) { |
db_task_runner_->PostTask( |
FROM_HERE, |
- base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta)); |
+ base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta, |
+ location)); |
} |
void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, |
@@ -101,7 +115,8 @@ void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( |
} |
} |
-void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) { |
+void TopSitesBackend::UpdateTopSitesOnDBThread( |
+ const TopSitesDelta& delta, const CallLocation location) { |
TRACE_EVENT0("startup", "history::TopSitesBackend::UpdateTopSitesOnDBThread"); |
if (!db_) |
@@ -120,8 +135,15 @@ void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) { |
for (size_t i = 0; i < delta.moved.size(); ++i) |
db_->UpdatePageRank(delta.moved[i].url, delta.moved[i].rank); |
- UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThreadTime", |
- base::TimeTicks::Now() - begin_time); |
+ // If this is initiated from TopSitesImpl::OnGotMostVisitedThumbnails, and |
+ // |histogram_recorded_| indicates that the histogram recording is in |
+ // progress, records the function execution time. |
+ if (location == CALL_LOCATION_FROM_ON_GOT_MOST_VISITED_THUMBNAILS && |
+ histogram_recorded_ == HISTOGRAM_RECORDING_IN_PROGRESS) { |
+ UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThread_Startup_Time", |
+ base::TimeTicks::Now() - begin_time); |
+ IncraseHistogramRecordingStatus(); |
+ } |
} |
void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, |