Chromium Code Reviews| 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 429bd90fd845e0ebc05f3e82dcc3453d9a539848..3c148b11ed14842ef89a63b05eda0c293023fab4 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 |
| @@ -12,6 +12,25 @@ |
| namespace internal { |
| // Exposed for tests. |
| extern const char kHistogramFromGWSFirstTextPaint[]; |
| + |
| +enum NavigationFromGWSType { |
| + // The navigation was preceeded by a committed load in this WebContents that |
| + // was from google web search. |
| + CommittedNavigationFromGWSPreviousCommit, |
| + |
| + // The navigation had a referrer header that was from google web search, and |
| + // there was no previously committed url in this WebContents. |
| + CommittedNavigationFromGWSOpener, |
| + |
| + // The provisional navigations are ones which never reached the commit point. |
| + ProvisionalNavigationFromGWSPreviousCommit, |
| + |
| + ProvisionalNavigationFromGWSOpener, |
| + |
| + // The navigation had no GWS referrer or previously committed load. |
| + NavigationNotFromGWS, |
|
Bryan McQuade
2016/04/21 20:50:41
let's put this first to make it the default / none
Charlie Harrison
2016/04/21 21:09:24
Acknowledged.
|
| +}; |
| + |
| } // namespace internal |
| // FromGWSPageLoadMetricsLogger is a peer class to |
| @@ -25,9 +44,9 @@ class FromGWSPageLoadMetricsLogger { |
| public: |
| FromGWSPageLoadMetricsLogger() {} |
| - void set_previously_committed_url(const GURL& url) { |
| - previously_committed_url_ = url; |
| - } |
| + void SetPreviouslyCommittedUrl(const GURL& url); |
| + |
| + void SetOpenerUrl(const GURL& url); |
| void set_navigation_initiated_via_link(bool navigation_initiated_via_link) { |
| navigation_initiated_via_link_ = navigation_initiated_via_link; |
| @@ -37,6 +56,8 @@ class FromGWSPageLoadMetricsLogger { |
| void OnComplete(const page_load_metrics::PageLoadTiming& timing, |
| const page_load_metrics::PageLoadExtraInfo& extra_info); |
| + static bool IsUrlFromGWS(const GURL& url); |
| + |
| // The methods below are public only for testing. |
| static bool IsGoogleSearchHostname(base::StringPiece host); |
| static bool IsGoogleSearchResultUrl(const GURL& url); |
| @@ -60,19 +81,32 @@ class FromGWSPageLoadMetricsLogger { |
| // Whether metrics should be logged based on state provided via setters and |
| // the given committed_url. |
| - bool ShouldLogMetrics(const GURL& committed_url) const; |
| + internal::NavigationFromGWSType GetNavigationFromGWSType( |
| + const GURL& committed_url) const; |
| private: |
| - GURL previously_committed_url_; |
| + bool previously_committed_url_from_gws_ = false; |
| + bool previously_committed_url_from_redirector_ = false; |
| bool navigation_initiated_via_link_ = false; |
| + bool opener_from_gws_ = false; |
| // Common helper for QueryContainsComponent and QueryContainsComponentPrefix. |
| static bool QueryContainsComponentHelper(const base::StringPiece query, |
| const base::StringPiece component, |
| bool component_is_prefix); |
| - void LogMetrics(const page_load_metrics::PageLoadTiming& timing, |
| - const page_load_metrics::PageLoadExtraInfo& extra_info); |
| + void LogCommittedMetrics( |
| + const page_load_metrics::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info); |
| + void LogCommittedMetricsUsingOpener( |
| + const page_load_metrics::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info); |
| + void LogProvisionalMetrics( |
| + const page_load_metrics::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info); |
| + void LogProvisionalMetricsUsingOpener( |
| + const page_load_metrics::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info); |
| DISALLOW_COPY_AND_ASSIGN(FromGWSPageLoadMetricsLogger); |
| }; |
| @@ -83,8 +117,11 @@ class FromGWSPageLoadMetricsObserver |
| FromGWSPageLoadMetricsObserver(); |
| // page_load_metrics::PageLoadMetricsObserver implementation: |
| void OnStart(content::NavigationHandle* navigation_handle, |
| + content::WebContents* web_contents, |
| const GURL& currently_committed_url) override; |
| void OnCommit(content::NavigationHandle* navigation_handle) override; |
| + void OnFailedProvisionalLoad( |
| + content::NavigationHandle* navigation_handle) override; |
| void OnComplete( |
| const page_load_metrics::PageLoadTiming& timing, |
| const page_load_metrics::PageLoadExtraInfo& extra_info) override; |