Chromium Code Reviews| 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); |