Index: chrome/browser/prerender/prerender_link_manager.cc |
diff --git a/chrome/browser/prerender/prerender_link_manager.cc b/chrome/browser/prerender/prerender_link_manager.cc |
index 787a8116836bade0505a3eb202a23a71907d22c8..8fae9e73c48bc6d776d7eb130ca1218ac1356e38 100644 |
--- a/chrome/browser/prerender/prerender_link_manager.cc |
+++ b/chrome/browser/prerender/prerender_link_manager.cc |
@@ -11,6 +11,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/histogram.h" |
#include "chrome/browser/prerender/prerender_contents.h" |
#include "chrome/browser/prerender/prerender_handle.h" |
#include "chrome/browser/prerender/prerender_manager.h" |
@@ -41,7 +42,7 @@ bool ShouldStartRelNextPrerenders() { |
return experiment_name.find("Yes") != std::string::npos; |
} |
-bool ShouldStartPrerender(uint32 rel_types) { |
+bool ShouldStartPrerender(const uint32 rel_types) { |
const bool should_start_rel_next_prerenders = |
ShouldStartRelNextPrerenders(); |
@@ -54,6 +55,31 @@ bool ShouldStartPrerender(uint32 rel_types) { |
return false; |
} |
+COMPILE_ASSERT(PrerenderRelTypePrerender == 0x1, |
+ RelTypeHistogramEnum_must_match_PrerenderRelType); |
+COMPILE_ASSERT(PrerenderRelTypeNext == 0x2, |
+ RelTypeHistogramEnum_must_match_PrerenderRelType); |
+enum RelTypeHistogramEnum { |
gavinp
2013/12/20 19:56:43
Our coding standard doesn't define an order for tr
|
+ RelTypeHistogramEnumNone = 0, |
+ RelTypeHistogramEnumPrerender = PrerenderRelTypePrerender, |
+ RelTypeHistogramEnumNext = PrerenderRelTypeNext, |
+ RelTypeHistogramEnumPrerenderAndNext = |
+ PrerenderRelTypePrerender | PrerenderRelTypeNext, |
+ RelTypeHistogramEnumMax, |
+}; |
+ |
+void RecordLinkManagerAdded(const uint32 rel_types) { |
+ const uint32 enum_value = rel_types & (RelTypeHistogramEnumMax - 1); |
+ UMA_HISTOGRAM_ENUMERATION("Prerender.RelTypesLinkAdded", enum_value, |
+ RelTypeHistogramEnumMax); |
+} |
+ |
+void RecordLinkManagerStarting(const uint32 rel_types) { |
+ const uint32 enum_value = rel_types & (RelTypeHistogramEnumMax - 1); |
+ UMA_HISTOGRAM_ENUMERATION("Prerender.RelTypesLinkStarted", enum_value, |
+ RelTypeHistogramEnumMax); |
+} |
+ |
void Send(int child_id, IPC::Message* raw_message) { |
using content::RenderProcessHost; |
scoped_ptr<IPC::Message> own_message(raw_message); |
@@ -105,6 +131,7 @@ void PrerenderLinkManager::OnAddPrerender(int launcher_child_id, |
prerender(launcher_child_id, prerender_id, url, rel_types, referrer, size, |
render_view_route_id, manager_->GetCurrentTimeTicks()); |
prerenders_.push_back(prerender); |
+ RecordLinkManagerAdded(rel_types); |
StartPrerenders(); |
} |
@@ -293,6 +320,7 @@ void PrerenderLinkManager::StartPrerenders() { |
handle->SetObserver(this); |
if (handle->IsPrerendering()) |
OnPrerenderStart(handle); |
+ RecordLinkManagerStarting((*i)->rel_types); |
running_launcher_and_render_view_routes.insert( |
launcher_and_render_view_route); |