diff options
Diffstat (limited to 'chrome/browser/google/google_util.cc')
-rw-r--r-- | chrome/browser/google/google_util.cc | 77 |
1 files changed, 37 insertions, 40 deletions
diff --git a/chrome/browser/google/google_util.cc b/chrome/browser/google/google_util.cc index 5a5befb..8211ecc 100644 --- a/chrome/browser/google/google_util.cc +++ b/chrome/browser/google/google_util.cc @@ -35,16 +35,25 @@ #define LINKDOCTOR_SERVER_REQUEST_URL std::string() #endif + +// Helpers -------------------------------------------------------------------- + namespace { const char* brand_for_testing = NULL; - bool gUseMockLinkDoctorBaseURLForTesting = false; -} // anonymous namespace +bool IsPathHomePageBase(const std::string& path) { + return (path == "/") || (path == "/webhp"); +} + +} // namespace + namespace google_util { +// Global functions ----------------------------------------------------------- + bool HasGoogleSearchQueryParam(const std::string& str) { url_parse::Component query(0, str.length()), key, value; while (url_parse::ExtractQueryKeyValue(str.c_str(), &query, &key, @@ -65,15 +74,6 @@ void SetMockLinkDoctorBaseURLForTesting() { gUseMockLinkDoctorBaseURLForTesting = true; } -BrandForTesting::BrandForTesting(const std::string& brand) : brand_(brand) { - DCHECK(brand_for_testing == NULL); - brand_for_testing = brand_.c_str(); -} - -BrandForTesting::~BrandForTesting() { - brand_for_testing = NULL; -} - GURL AppendGoogleLocaleParam(const GURL& url) { // Google does not yet recognize 'nb' for Norwegian Bokmal, but it uses // 'no' for that. @@ -152,14 +152,6 @@ bool GetReactivationBrand(std::string* brand) { #endif -bool IsGoogleDomainUrl(const GURL& url, - SubdomainPermission subdomain_permission, - PortPermission port_permission) { - return url.is_valid() && (url.SchemeIs("http") || url.SchemeIs("https")) && - (url.port().empty() || (port_permission == ALLOW_NON_STANDARD_PORTS)) && - google_util::IsGoogleHostname(url.host(), subdomain_permission); -} - bool IsGoogleHostname(const std::string& host, SubdomainPermission subdomain_permission) { size_t tld_length = net::registry_controlled_domains::GetRegistryLength( @@ -176,6 +168,14 @@ bool IsGoogleHostname(const std::string& host, return LowerCaseEqualsASCII(host_minus_tld, "www.google."); } +bool IsGoogleDomainUrl(const GURL& url, + SubdomainPermission subdomain_permission, + PortPermission port_permission) { + return url.is_valid() && (url.SchemeIs("http") || url.SchemeIs("https")) && + (url.port().empty() || (port_permission == ALLOW_NON_STANDARD_PORTS)) && + google_util::IsGoogleHostname(url.host(), subdomain_permission); +} + bool IsGoogleHomePageUrl(const GURL& url) { // First check to see if this has a Google domain. if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS)) @@ -183,12 +183,7 @@ bool IsGoogleHomePageUrl(const GURL& url) { // Make sure the path is a known home page path. std::string path(url.path()); - if (path != "/" && path != "/webhp" && - !StartsWithASCII(path, "/ig", false)) { - return false; - } - - return true; + return IsPathHomePageBase(path) || StartsWithASCII(path, "/ig", false); } bool IsGoogleSearchUrl(const GURL& url) { @@ -198,25 +193,14 @@ bool IsGoogleSearchUrl(const GURL& url) { // Make sure the path is a known search path. std::string path(url.path()); - bool has_valid_path = false; - bool is_home_page_base = false; - if (path == "/search") { - has_valid_path = true; - } else if (path == "/webhp" || path == "/") { - // Note that we allow both "/" and "" paths, but GURL spits them - // both out as just "/". - has_valid_path = true; - is_home_page_base = true; - } - if (!has_valid_path) + bool is_home_page_base = IsPathHomePageBase(path); + if (!is_home_page_base && (path != "/search")) return false; // Check for query parameter in URL parameter and hash fragment, depending on // the path type. - std::string query(url.query()); - std::string ref(url.ref()); - return HasGoogleSearchQueryParam(ref) || - (!is_home_page_base && HasGoogleSearchQueryParam(query)); + return HasGoogleSearchQueryParam(url.ref()) || + (!is_home_page_base && HasGoogleSearchQueryParam(url.query())); } bool IsOrganic(const std::string& brand) { @@ -280,4 +264,17 @@ bool IsInternetCafeBrandCode(const std::string& brand) { return found != end; } + +// BrandForTesting ------------------------------------------------------------ + +BrandForTesting::BrandForTesting(const std::string& brand) : brand_(brand) { + DCHECK(brand_for_testing == NULL); + brand_for_testing = brand_.c_str(); +} + +BrandForTesting::~BrandForTesting() { + brand_for_testing = NULL; +} + + } // namespace google_util |