Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h |
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h |
index 94fc16dc255f5bf7135a097dba8247533f5bbd68..91647a1d18b46aaec980f747d81aec602690a35a 100644 |
--- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h |
+++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h |
@@ -21,10 +21,14 @@ extern const char kHistogramFromGWSParseStartToFirstContentfulPaint[]; |
extern const char kHistogramFromGWSParseDuration[]; |
extern const char kHistogramFromGWSParseStart[]; |
extern const char kHistogramFromGWSAbortStopBeforePaint[]; |
+extern const char kHistogramFromGWSAbortStopBeforeInteraction[]; |
extern const char kHistogramFromGWSAbortStopBeforeCommit[]; |
extern const char kHistogramFromGWSAbortCloseBeforePaint[]; |
+extern const char kHistogramFromGWSAbortCloseBeforeInteraction[]; |
extern const char kHistogramFromGWSAbortCloseBeforeCommit[]; |
extern const char kHistogramFromGWSAbortNewNavigationBeforePaint[]; |
+extern const char kHistogramFromGWSAbortNewNavigationBeforeInteraction[]; |
+extern const char kHistogramFromGWSAbortReloadBeforeInteraction[]; |
extern const char kHistogramFromGWSAbortUnknownNavigationBeforeCommit[]; |
} // namespace internal |
@@ -47,6 +51,12 @@ class FromGWSPageLoadMetricsLogger { |
navigation_initiated_via_link_ = navigation_initiated_via_link; |
} |
+ void SetNavigationStart(const base::TimeTicks navigation_start) { |
+ // Should be invoked at most once |
+ DCHECK(navigation_start_.is_null()); |
+ navigation_start_ = navigation_start; |
+ } |
+ |
// Invoked when metrics for the given page are complete. |
void OnComplete(const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& extra_info); |
@@ -70,6 +80,7 @@ class FromGWSPageLoadMetricsLogger { |
const page_load_metrics::PageLoadExtraInfo& extra_info); |
void OnParseStop(const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& extra_info); |
+ void OnUserInput(const blink::WebInputEvent& event); |
// The methods below are public only for testing. |
static bool IsGoogleSearchHostname(base::StringPiece host); |
@@ -102,6 +113,14 @@ class FromGWSPageLoadMetricsLogger { |
bool provisional_url_has_search_hostname_ = false; |
bool provisional_url_is_non_http_or_https_ = false; |
+ // The state of if first paint is triggered. |
+ bool first_paint_triggered_ = false; |
+ |
+ base::TimeTicks navigation_start_; |
+ |
+ // The time of first user interaction after paint from navigation start. |
+ base::TimeDelta first_user_interaction_after_paint_; |
+ |
// Common helper for QueryContainsComponent and QueryContainsComponentPrefix. |
static bool QueryContainsComponentHelper(const base::StringPiece query, |
const base::StringPiece component, |
@@ -149,6 +168,8 @@ class FromGWSPageLoadMetricsObserver |
const page_load_metrics::PageLoadTiming& timing, |
const page_load_metrics::PageLoadExtraInfo& extra_info) override; |
+ void OnUserInput(const blink::WebInputEvent& event) override; |
+ |
private: |
FromGWSPageLoadMetricsLogger logger_; |