| 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..f0de3577e0cab8e910482c10ba7c62d8a06e0b5b 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 | 
| @@ -47,6 +47,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 +76,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 +109,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 +164,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_; | 
|  | 
|  |