return ComposeHistogramName("externalrequest", name);
case ORIGIN_INSTANT:
return ComposeHistogramName("Instant", name);
+ case ORIGIN_LINK_REL_NEXT:
+ return ComposeHistogramName("webnext", name);
case ORIGIN_GWS_PRERENDER: // Handled above.
default:
NOTREACHED();
histogram_name)
#define PREFIXED_HISTOGRAM_INTERNAL(origin, experiment, wash, HISTOGRAM, \
- histogram_name) { \
+ histogram_name) do { \
{ \
/* Do not rename. HISTOGRAM expects a local variable "name". */ \
std::string name = ComposeHistogramName(std::string(), histogram_name); \
HISTOGRAM; \
} else if (origin == ORIGIN_INSTANT) { \
HISTOGRAM; \
+ } else if (origin == ORIGIN_LINK_REL_NEXT) { \
+ HISTOGRAM; \
} else if (experiment != kNoExperiment) { \
HISTOGRAM; \
} else { \
HISTOGRAM; \
} \
-}
+} while (0)
PrerenderHistograms::PrerenderHistograms()
: last_experiment_id_(kNoExperiment),
}
// Helper macro for histograms.
-#define RECORD_PLT(tag, perceived_page_load_time) { \
+#define RECORD_PLT(tag, perceived_page_load_time) \
PREFIXED_HISTOGRAM( \
tag, origin, \
UMA_HISTOGRAM_CUSTOM_TIMES( \
perceived_page_load_time, \
base::TimeDelta::FromMilliseconds(10), \
base::TimeDelta::FromSeconds(60), \
- 100)); \
-}
+ 100))
// Summary of all histograms Perceived PLT histograms:
// (all prefixed PerceivedPLT)
void PrerenderHistograms::RecordPerceivedPageLoadTime(
Origin origin,
base::TimeDelta perceived_page_load_time,
- bool was_prerender,
- bool was_complete_prerender, const GURL& url) {
+ NavigationType navigation_type,
+ const GURL& url) {
if (!url.SchemeIsHTTPOrHTTPS())
return;
bool within_window = WithinWindow();
RECORD_PLT("PerceivedPLT", perceived_page_load_time);
if (within_window)
RECORD_PLT("PerceivedPLTWindowed", perceived_page_load_time);
- if (was_prerender || was_complete_prerender) {
- if (was_prerender)
+ if (navigation_type != NAVIGATION_TYPE_NORMAL) {
+ DCHECK(navigation_type == NAVIGATION_TYPE_WOULD_HAVE_BEEN_PRERENDERED ||
+ navigation_type == NAVIGATION_TYPE_PRERENDERED);
+ RECORD_PLT("PerceivedPLTMatchedComplete", perceived_page_load_time);
+ if (navigation_type == NAVIGATION_TYPE_PRERENDERED)
RECORD_PLT("PerceivedPLTMatched", perceived_page_load_time);
- if (was_complete_prerender)
- RECORD_PLT("PerceivedPLTMatchedComplete", perceived_page_load_time);
seen_any_pageload_ = true;
seen_pageload_started_after_prerender_ = true;
} else if (within_window) {
UMA_HISTOGRAM_BOOLEAN(name, visited_before));
}
+void PrerenderHistograms::RecordNetworkBytes(bool used,
+ int64 prerender_bytes,
+ int64 profile_bytes) {
+ const int kHistogramMin = 1;
+ const int kHistogramMax = 100000000; // 100M.
+ const int kBucketCount = 50;
+
+ if (used) {
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Prerender.NetworkBytes.Used",
+ prerender_bytes,
+ kHistogramMin,
+ kHistogramMax,
+ kBucketCount);
+ } else {
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Prerender.NetworkBytes.Wasted",
+ prerender_bytes,
+ kHistogramMin,
+ kHistogramMax,
+ kBucketCount);
+ }
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Prerender.NetworkBytes.TotalForProfile",
+ profile_bytes,
+ kHistogramMin,
+ kHistogramMax,
+ kBucketCount);
+}
+
uint8 PrerenderHistograms::GetCurrentExperimentId() const {
if (!WithinWindow())
return kNoExperiment;