Index: chrome/browser/metrics/first_web_contents_profiler.h |
diff --git a/chrome/browser/metrics/first_web_contents_profiler.h b/chrome/browser/metrics/first_web_contents_profiler.h |
index 832d55539165642601e13c74422136012096a31a..9402f492608d48c1c1d40981f9d4421bafec1512 100644 |
--- a/chrome/browser/metrics/first_web_contents_profiler.h |
+++ b/chrome/browser/metrics/first_web_contents_profiler.h |
@@ -5,6 +5,8 @@ |
#ifndef CHROME_BROWSER_METRICS_FIRST_WEB_CONTENTS_PROFILER_H_ |
#define CHROME_BROWSER_METRICS_FIRST_WEB_CONTENTS_PROFILER_H_ |
+#include <set> |
+ |
#include "base/memory/scoped_ptr.h" |
#include "base/metrics/histogram.h" |
#include "content/public/browser/web_contents_observer.h" |
@@ -42,17 +44,23 @@ class FirstWebContentsProfiler : public content::WebContentsObserver { |
}; |
explicit FirstWebContentsProfiler(content::WebContents* web_contents); |
- ~FirstWebContentsProfiler() = default; |
+ ~FirstWebContentsProfiler(); |
// content::WebContentsObserver: |
void DidFirstVisuallyNonEmptyPaint() override; |
void DocumentOnLoadCompletedInMainFrame() override; |
+ void DidStartNavigation( |
+ content::NavigationHandle* navigation_handle) override; |
+ void DidFinishNavigation( |
+ content::NavigationHandle* navigation_handle) override; |
void NavigationEntryCommitted( |
const content::LoadCommittedDetails& load_details) override; |
void WasHidden() override; |
void WebContentsDestroyed() override; |
- // Whether this instance has finished collecting all of its metrics. |
+ // Whether this instance has finished collecting first-paint and main-frame- |
+ // load metrics (navigation metrics are recorded on a best effort but don't |
+ // prevent the FirstWebContentsProfiler from calling it). |
bool IsFinishedCollectingMetrics(); |
// Logs |finish_reason| to UMA and deletes this FirstWebContentsProfiler. |
@@ -72,6 +80,20 @@ class FirstWebContentsProfiler : public content::WebContentsObserver { |
// Whether an attempt was made to collect the "MainFrameLoad" metric. |
bool collected_load_metric_; |
+ // Whether an attempt was made to collect the "MainNavigationStart" metric. |
+ bool collected_main_navigation_start_metric_; |
+ |
+ // Whether an attempt was made to collect the "MainNavigationFinished" metric. |
+ bool collected_main_navigation_finished_metric_; |
+ |
+ // Whether an attempt was made to collect the "MainNavigationFinishedAll" |
+ // metric. |
+ bool collected_main_navigation_finished_all_metric_; |
+ |
+ // The set of all live NavigationHandles for the main frame (i.e. handles seen |
+ // by DidStartNavigation() but not by DidFinishNavigation()). |
+ std::set<content::NavigationHandle*> main_navigation_handles_; |
+ |
// Histogram that keeps track of response times for the watched thread. |
base::HistogramBase* responsiveness_histogram_; |