Index: chrome/browser/prerender/prerender_histograms.h |
diff --git a/chrome/browser/prerender/prerender_histograms.h b/chrome/browser/prerender/prerender_histograms.h |
index 71bff438758ac90e03a948094b9de17a19b66c51..3fda4bee4bd05b163d6e14f668a559a2b16b4013 100644 |
--- a/chrome/browser/prerender/prerender_histograms.h |
+++ b/chrome/browser/prerender/prerender_histograms.h |
@@ -28,43 +28,34 @@ enum NavigationType { |
NAVIGATION_TYPE_PRERENDERED, |
}; |
-// PrerenderHistograms is responsible for recording all prerender specific |
-// histograms for PrerenderManager. It keeps track of the type of prerender |
-// currently underway (based on the PrerenderOrigin of the most recent |
-// prerenders, and any experiments detected). |
-// PrerenderHistograms does not necessarily record all histograms related to |
-// prerendering, only the ones in the context of PrerenderManager. |
+// Records histograms for PrerenderManager. |
+// |
+// A few histograms are dynamically constructed to avoid binary size bloat from |
+// histogram_macros.h. Such histograms require careful handling: |
+// 1. slow - make sure only rare events are recorded this way, a handful of such |
+// events per page load should be OK |
+// 2. may lead to small sporadic memory leaks in Histogram::Factory::Build() - |
+// ensuring that they are recorded from the same thread is sufficient |
+// |
+// Besides thread checking this class is stateless, all public methods are |
+// const. |
class PrerenderHistograms { |
public: |
// Owned by a PrerenderManager object for the lifetime of the |
// PrerenderManager. |
PrerenderHistograms(); |
- // Records the perceived page load time for a page - effectively the time from |
- // when the user navigates to a page to when it finishes loading. The actual |
- // load may have started prior to navigation due to prerender hints. |
- void RecordPerceivedPageLoadTime(Origin origin, |
- base::TimeDelta perceived_page_load_time, |
- NavigationType navigation_type, |
- const GURL& url); |
- |
// Record that a first contentful paint occured, and whether we were able to |
// successfuly record the perceived FCP. |
void RecordPerceivedFirstContentfulPaintStatus(Origin origin, |
bool successful, |
- bool was_hidden); |
+ bool was_hidden) const; |
// Records, in a histogram, the percentage of the page load time that had |
// elapsed by the time it is swapped in. Values outside of [0, 1.0] are |
// invalid and ignored. |
void RecordPercentLoadDoneAtSwapin(Origin origin, double fraction) const; |
- // Records the actual pageload time of a prerender that has not been swapped |
- // in yet, but finished loading. |
- void RecordPageLoadTimeNotSwappedIn(Origin origin, |
- base::TimeDelta page_load_time, |
- const GURL& url) const; |
- |
// Records the time from when a page starts prerendering to when the user |
// navigates to it. This must be called on the UI thread. |
void RecordTimeUntilUsed(Origin origin, |
@@ -85,16 +76,9 @@ class PrerenderHistograms { |
// Record a final status of a prerendered page in a histogram. |
void RecordFinalStatus(Origin origin, FinalStatus final_status) const; |
- // To be called when a new prerender is added. |
- void RecordPrerender(); |
- |
// To be called when a new prerender is started. |
void RecordPrerenderStarted(Origin origin) const; |
- // To be called when we know how many prerenders are running after starting |
- // a prerender. |
- void RecordConcurrency(size_t prerender_count) const; |
- |
// Called when we swap in a prerender. |
void RecordUsedPrerender(Origin origin) const; |
@@ -129,34 +113,14 @@ class PrerenderHistograms { |
// advance of navigation start). One of several histograms is used, depending |
// on whether this URL could have been prefetched before the navigation |
// leading to the paint. |
- void RecordPrefetchFirstContentfulPaintTime(Origin origin, |
- bool is_no_store, |
- bool was_hidden, |
- base::TimeDelta time, |
- base::TimeDelta prefetch_age); |
+ void RecordPrefetchFirstContentfulPaintTime( |
+ Origin origin, |
+ bool is_no_store, |
+ bool was_hidden, |
+ base::TimeDelta time, |
+ base::TimeDelta prefetch_age) const; |
private: |
- base::TimeTicks GetCurrentTimeTicks() const; |
- |
- // Returns the time elapsed since the last prerender happened. |
- base::TimeDelta GetTimeSinceLastPrerender() const; |
- |
- // Returns whether the PrerenderManager is currently within the prerender |
- // window - effectively, up to 30 seconds after a prerender tag has been |
- // observed. |
- bool WithinWindow() const; |
- |
- // The time when we last saw a prerender request coming from a renderer. |
- // This is used to record perceived PLT's for a certain amount of time |
- // from the point that we last saw a <link rel=prerender> tag. |
- base::TimeTicks last_prerender_seen_time_; |
- |
- // Indicates whether we have recorded page load events after the most |
- // recent prerender. These must be initialized to true, so that we don't |
- // start recording events before the first prerender occurs. |
- bool seen_any_pageload_; |
- bool seen_pageload_started_after_prerender_; |
- |
base::ThreadChecker thread_checker_; |
DISALLOW_COPY_AND_ASSIGN(PrerenderHistograms); |