Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
index c11c9587767fe76972d17018c67d24d71cfee75b..67be4a081b59a12b7502a3d6e5df6c5809dde993 100644 |
--- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
@@ -9,7 +9,6 @@ |
#include "base/strings/string_util.h" |
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
#include "chrome/common/page_load_metrics/page_load_timing.h" |
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
using page_load_metrics::PageAbortReason; |
@@ -321,39 +320,18 @@ bool WasAbortedBeforeInteraction( |
// for additional details. |
// static |
-bool FromGWSPageLoadMetricsLogger::IsGoogleSearchHostname( |
- base::StringPiece host) { |
- const char kGoogleSearchHostnamePrefix[] = "www."; |
- |
- // Hostname must start with 'www.' Hostnames are not case sensitive. |
- if (!base::StartsWith(host, kGoogleSearchHostnamePrefix, |
- base::CompareCase::INSENSITIVE_ASCII)) { |
- return false; |
- } |
- std::string domain = net::registry_controlled_domains::GetDomainAndRegistry( |
- host, |
- // Do not include private registries, such as appspot.com. We don't want |
- // to match URLs like www.google.appspot.com. |
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); |
- |
- // Domain and registry must start with 'google.' e.g. 'google.com' or |
- // 'google.co.uk'. |
- if (!base::StartsWith(domain, "google.", |
- base::CompareCase::INSENSITIVE_ASCII)) { |
- return false; |
- } |
- |
- // Finally, the length of the URL before the domain and registry must be equal |
- // in length to the search hostname prefix. |
- const size_t url_hostname_prefix_length = host.length() - domain.length(); |
- return url_hostname_prefix_length == strlen(kGoogleSearchHostnamePrefix); |
+bool FromGWSPageLoadMetricsLogger::IsGoogleSearchHostname(const GURL& url) { |
+ base::StringPiece google_hostname_prefix; |
+ return page_load_metrics::IsGoogleHostnameAndGetPrefix( |
+ url, &google_hostname_prefix) && |
+ google_hostname_prefix == "www"; |
} |
// static |
bool FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(const GURL& url) { |
// NOTE: we do not require 'q=' in the query, as AJAXy search may instead |
// store the query in the URL fragment. |
- if (!IsGoogleSearchHostname(url.host_piece())) { |
+ if (!IsGoogleSearchHostname(url)) { |
return false; |
} |
@@ -370,7 +348,7 @@ bool FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(const GURL& url) { |
// static |
bool FromGWSPageLoadMetricsLogger::IsGoogleSearchRedirectorUrl( |
const GURL& url) { |
- if (!IsGoogleSearchHostname(url.host_piece())) |
+ if (!IsGoogleSearchHostname(url)) |
return false; |
// The primary search redirector. Google search result redirects are |
@@ -466,8 +444,7 @@ void FromGWSPageLoadMetricsLogger::SetPreviouslyCommittedUrl(const GURL& url) { |
} |
void FromGWSPageLoadMetricsLogger::SetProvisionalUrl(const GURL& url) { |
- provisional_url_has_search_hostname_ = |
- IsGoogleSearchHostname(url.host_piece()); |
+ provisional_url_has_search_hostname_ = IsGoogleSearchHostname(url); |
} |
FromGWSPageLoadMetricsObserver::FromGWSPageLoadMetricsObserver() {} |
@@ -643,7 +620,7 @@ bool FromGWSPageLoadMetricsLogger::ShouldLogPostCommitMetrics(const GURL& url) { |
// these cases are relatively uncommon, and we run the risk of logging metrics |
// for some search redirector URLs. Thus we choose the more conservative |
// approach of ignoring all urls on known search hostnames. |
- if (IsGoogleSearchHostname(url.host_piece())) |
+ if (IsGoogleSearchHostname(url)) |
return false; |
// We're only interested in tracking navigations (e.g. clicks) initiated via |