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; |