summaryrefslogtreecommitdiffstats
path: root/chrome/browser/google/google_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/google/google_util.cc')
-rw-r--r--chrome/browser/google/google_util.cc77
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