Chromium Code Reviews| Index: chrome/browser/prerender/prerender_histograms.cc |
| diff --git a/chrome/browser/prerender/prerender_histograms.cc b/chrome/browser/prerender/prerender_histograms.cc |
| index 5e75a03cef4eb5f2f4e4e699546b6a56382cd4e9..657c670ec133f6719ff0e608aa17d8350221b244 100644 |
| --- a/chrome/browser/prerender/prerender_histograms.cc |
| +++ b/chrome/browser/prerender/prerender_histograms.cc |
| @@ -21,10 +21,6 @@ namespace prerender { |
| namespace { |
| -// Time window for which we will record windowed PLT's from the last |
| -// observed link rel=prefetch tag. |
| -const int kWindowDurationSeconds = 30; |
| - |
| std::string ComposeHistogramName(const std::string& prefix_type, |
| const std::string& name) { |
| if (prefix_type.empty()) |
| @@ -52,6 +48,10 @@ std::string GetHistogramName(Origin origin, uint8 experiment_id, |
| return ComposeHistogramName("omnibox", name); |
| case ORIGIN_LINK_REL_PRERENDER: |
| return ComposeHistogramName("web", name); |
| + case ORIGIN_LOCAL_PREDICTOR: |
| + return ComposeHistogramName("local", name); |
| + case ORIGIN_NONE: |
| + return ComposeHistogramName("none", name); |
| case ORIGIN_GWS_PRERENDER: // Handled above. |
| default: |
| NOTREACHED(); |
| @@ -73,8 +73,8 @@ bool OriginIsOmnibox(Origin origin) { |
| // All HISTOGRAM arguments must be UMA_HISTOGRAM... macros that contain an |
| // argument "name" which these macros will eventually substitute for the |
| // actual name used. |
| -#define PREFIXED_HISTOGRAM(histogram_name, HISTOGRAM) \ |
| - PREFIXED_HISTOGRAM_INTERNAL(GetCurrentOrigin(), GetCurrentExperimentId(), \ |
| +#define PREFIXED_HISTOGRAM(histogram_name, origin, HISTOGRAM) \ |
| + PREFIXED_HISTOGRAM_INTERNAL(origin, GetCurrentExperimentId(), \ |
| IsOriginExperimentWash(), HISTOGRAM, \ |
| histogram_name) |
| @@ -112,10 +112,11 @@ bool OriginIsOmnibox(Origin origin) { |
| } \ |
| } |
| -PrerenderHistograms::PrerenderHistograms() |
| +PrerenderHistograms::PrerenderHistograms(base::TimeDelta prerender_ttl) |
| : last_experiment_id_(kNoExperiment), |
| last_origin_(ORIGIN_LINK_REL_PRERENDER), |
| origin_experiment_wash_(false), |
| + prerender_ttl_(prerender_ttl), |
| seen_any_pageload_(true), |
| seen_pageload_started_after_prerender_(true) { |
| } |
| @@ -178,13 +179,15 @@ void PrerenderHistograms::RecordUsedPrerender(Origin origin) const { |
| } |
| void PrerenderHistograms::RecordTimeSinceLastRecentVisit( |
| + Origin origin, |
| base::TimeDelta delta) const { |
| PREFIXED_HISTOGRAM( |
| - "TimeSinceLastRecentVisit", |
| + "TimeSinceLastRecentVisit", origin, |
| UMA_HISTOGRAM_TIMES(name, delta)); |
| } |
| void PrerenderHistograms::RecordFractionPixelsFinalAtSwapin( |
| + Origin origin, |
| double fraction) const { |
| if (fraction < 0.0 || fraction > 1.0) |
| return; |
| @@ -193,7 +196,7 @@ void PrerenderHistograms::RecordFractionPixelsFinalAtSwapin( |
| return; |
| PREFIXED_HISTOGRAM( |
| base::FieldTrial::MakeName("FractionPixelsFinalAtSwapin", "Prerender"), |
| - UMA_HISTOGRAM_PERCENTAGE(name, percentage)); |
| + origin, UMA_HISTOGRAM_PERCENTAGE(name, percentage)); |
| } |
| base::TimeTicks PrerenderHistograms::GetCurrentTimeTicks() const { |
| @@ -203,7 +206,7 @@ base::TimeTicks PrerenderHistograms::GetCurrentTimeTicks() const { |
| // Helper macro for histograms. |
| #define RECORD_PLT(tag, perceived_page_load_time) { \ |
| PREFIXED_HISTOGRAM( \ |
| - base::FieldTrial::MakeName(tag, "Prerender"), \ |
| + base::FieldTrial::MakeName(tag, "Prerender"), origin, \ |
| UMA_HISTOGRAM_CUSTOM_TIMES( \ |
| name, \ |
| perceived_page_load_time, \ |
| @@ -236,7 +239,9 @@ base::TimeTicks PrerenderHistograms::GetCurrentTimeTicks() const { |
| // FirstAfterMissNonOverlapping but NOT FirstAfterMiss |
| void PrerenderHistograms::RecordPerceivedPageLoadTime( |
| - base::TimeDelta perceived_page_load_time, bool was_prerender, |
| + Origin origin, |
| + base::TimeDelta perceived_page_load_time, |
| + bool was_prerender, |
| bool was_complete_prerender, const GURL& url) { |
| if (!IsWebURL(url)) |
| return; |
| @@ -286,7 +291,9 @@ void PrerenderHistograms::RecordPerceivedPageLoadTime( |
| } |
| void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn( |
| - base::TimeDelta page_load_time, const GURL& url) const { |
| + Origin origin, |
| + base::TimeDelta page_load_time, |
| + const GURL& url) const { |
| // If the URL to be prerendered is not a http[s] URL, or is a Google URL, |
| // do not record. |
| if (!IsWebURL(url) || IsGoogleDomain(url)) |
| @@ -295,7 +302,9 @@ void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn( |
| } |
| void PrerenderHistograms::RecordSimulatedLocalBrowsingBaselinePLT( |
| - base::TimeDelta page_load_time, const GURL& url) const { |
| + Origin origin, |
| + base::TimeDelta page_load_time, |
| + const GURL& url) const { |
| // If the URL to be prerendered is not a http[s] URL do not record. |
| if (!IsWebURL(url)) |
| return; |
| @@ -303,15 +312,17 @@ void PrerenderHistograms::RecordSimulatedLocalBrowsingBaselinePLT( |
| } |
| void PrerenderHistograms::RecordSimulatedLocalBrowsingPLT( |
| - base::TimeDelta page_load_time, const GURL& url) const { |
| + Origin origin, |
| + base::TimeDelta page_load_time, |
| + const GURL& url) const { |
| // If the URL to be prerendered is not a http[s] URL do not record. |
| if (!IsWebURL(url)) |
| return; |
| RECORD_PLT("SimulatedLocalBrowsingPLT", page_load_time); |
| } |
| -void PrerenderHistograms::RecordPercentLoadDoneAtSwapin(double fraction) |
| - const { |
| +void PrerenderHistograms::RecordPercentLoadDoneAtSwapin(Origin origin, |
| + double fraction) const { |
| if (fraction < 0.0 || fraction > 1.0) |
| return; |
| int percentage = static_cast<int>(fraction * 100); |
| @@ -319,7 +330,7 @@ void PrerenderHistograms::RecordPercentLoadDoneAtSwapin(double fraction) |
| return; |
| PREFIXED_HISTOGRAM( |
| base::FieldTrial::MakeName("PercentLoadDoneAtSwapin", "Prerender"), |
| - UMA_HISTOGRAM_PERCENTAGE(name, percentage)); |
| + origin, UMA_HISTOGRAM_PERCENTAGE(name, percentage)); |
| } |
| base::TimeDelta PrerenderHistograms::GetTimeSinceLastPrerender() const { |
| @@ -329,15 +340,15 @@ base::TimeDelta PrerenderHistograms::GetTimeSinceLastPrerender() const { |
| bool PrerenderHistograms::WithinWindow() const { |
| if (last_prerender_seen_time_.is_null()) |
| return false; |
| - return GetTimeSinceLastPrerender() <= |
| - base::TimeDelta::FromSeconds(kWindowDurationSeconds); |
| + return GetTimeSinceLastPrerender() <= prerender_ttl_; |
| } |
| void PrerenderHistograms::RecordTimeUntilUsed( |
| + Origin origin, |
| base::TimeDelta time_until_used, |
| base::TimeDelta time_to_live) const { |
| PREFIXED_HISTOGRAM( |
| - "TimeUntilUsed", |
| + "TimeUntilUsed", origin, |
| UMA_HISTOGRAM_CUSTOM_TIMES( |
| name, |
| time_until_used, |
| @@ -346,16 +357,17 @@ void PrerenderHistograms::RecordTimeUntilUsed( |
| 50)); |
| } |
| -void PrerenderHistograms::RecordPerSessionCount(int count) const { |
| +void PrerenderHistograms::RecordPerSessionCount(Origin origin, |
| + int count) const { |
| PREFIXED_HISTOGRAM( |
| - "PrerendersPerSessionCount", |
| + "PrerendersPerSessionCount", origin, |
| UMA_HISTOGRAM_COUNTS(name, count)); |
| } |
| void PrerenderHistograms::RecordTimeBetweenPrerenderRequests( |
| - base::TimeDelta time) const { |
| + Origin origin, base::TimeDelta time) const { |
| PREFIXED_HISTOGRAM( |
| - "TimeBetweenPrerenderRequests", |
| + "TimeBetweenPrerenderRequests", origin, |
| UMA_HISTOGRAM_TIMES(name, time)); |
| } |
| @@ -389,12 +401,6 @@ uint8 PrerenderHistograms::GetCurrentExperimentId() const { |
| return last_experiment_id_; |
| } |
| -Origin PrerenderHistograms::GetCurrentOrigin() const { |
| - if (!WithinWindow()) |
| - return ORIGIN_LINK_REL_PRERENDER; |
| - return last_origin_; |
| -} |
| - |
| bool PrerenderHistograms::IsOriginExperimentWash() const { |
| if (!WithinWindow()) |
| return false; |
| @@ -411,9 +417,11 @@ void PrerenderHistograms::RecordLocalPredictorEvent( |
| } |
| void PrerenderHistograms::RecordLocalPredictorTimeUntilUsed( |
| - base::TimeDelta time_until_used, base::TimeDelta max_age) const { |
| + Origin origin, |
|
mmenke
2012/10/08 18:20:07
The function name kinda implies the origin. Think
|
| + base::TimeDelta time_until_used, |
| + base::TimeDelta max_age) const { |
| PREFIXED_HISTOGRAM( |
| - "LocalPredictorTimeUntilUsed", |
| + "LocalPredictorTimeUntilUsed", origin, |
| UMA_HISTOGRAM_CUSTOM_TIMES( |
| name, |
| time_until_used, |