Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2025)

Unified Diff: chrome/browser/google/google_util.cc

Issue 333723002: Componentize google_util (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + build fix Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/google/google_util.h ('k') | chrome/browser/google/google_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/google/google_util.cc
diff --git a/chrome/browser/google/google_util.cc b/chrome/browser/google/google_util.cc
deleted file mode 100644
index f4d06810d7ef4a5eabb3f469bf102ff2a6bd9439..0000000000000000000000000000000000000000
--- a/chrome/browser/google/google_util.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/google/google_util.h"
-
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "components/google/core/browser/google_switches.h"
-#include "components/google/core/browser/google_url_tracker.h"
-#include "components/url_fixer/url_fixer.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-#include "net/base/url_util.h"
-#include "url/gurl.h"
-
-// Only use Link Doctor on official builds. It uses an API key, too, but
-// seems best to just disable it, for more responsive error pages and to reduce
-// server load.
-#if defined(GOOGLE_CHROME_BUILD)
-#define LINKDOCTOR_SERVER_REQUEST_URL "https://www.googleapis.com/rpc"
-#else
-#define LINKDOCTOR_SERVER_REQUEST_URL ""
-#endif
-
-
-// Helpers --------------------------------------------------------------------
-
-namespace {
-
-bool gUseMockLinkDoctorBaseURLForTesting = false;
-
-bool IsPathHomePageBase(const std::string& path) {
- return (path == "/") || (path == "/webhp");
-}
-
-// True if |host| is "[www.]<domain_in_lower_case>.<TLD>" with a valid TLD. If
-// |subdomain_permission| is ALLOW_SUBDOMAIN, we check against host
-// "*.<domain_in_lower_case>.<TLD>" instead.
-bool IsValidHostName(const std::string& host,
- const std::string& domain_in_lower_case,
- google_util::SubdomainPermission subdomain_permission) {
- size_t tld_length = net::registry_controlled_domains::GetRegistryLength(
- host,
- net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
- if ((tld_length == 0) || (tld_length == std::string::npos))
- return false;
- // Removes the tld and the preceding dot.
- std::string host_minus_tld(host, 0, host.length() - tld_length - 1);
- if (LowerCaseEqualsASCII(host_minus_tld, domain_in_lower_case.c_str()))
- return true;
- if (subdomain_permission == google_util::ALLOW_SUBDOMAIN)
- return EndsWith(host_minus_tld, "." + domain_in_lower_case, false);
- return LowerCaseEqualsASCII(host_minus_tld,
- ("www." + domain_in_lower_case).c_str());
-}
-
-// True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission|
-// is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard
-// port for its scheme (80 for HTTP, 443 for HTTPS).
-bool IsValidURL(const GURL& url, google_util::PortPermission port_permission) {
- return url.is_valid() && url.SchemeIsHTTPOrHTTPS() &&
- (url.port().empty() ||
- (port_permission == google_util::ALLOW_NON_STANDARD_PORTS));
-}
-
-} // namespace
-
-
-namespace google_util {
-
-// Global functions -----------------------------------------------------------
-
-bool HasGoogleSearchQueryParam(const std::string& str) {
- url::Component query(0, str.length()), key, value;
- while (url::ExtractQueryKeyValue(str.c_str(), &query, &key, &value)) {
- if ((key.len == 1) && (str[key.begin] == 'q') && value.is_nonempty())
- return true;
- }
- return false;
-}
-
-GURL LinkDoctorBaseURL() {
- if (gUseMockLinkDoctorBaseURLForTesting)
- return GURL("http://mock.linkdoctor.url/for?testing");
- return GURL(LINKDOCTOR_SERVER_REQUEST_URL);
-}
-
-void SetMockLinkDoctorBaseURLForTesting() {
- gUseMockLinkDoctorBaseURLForTesting = true;
-}
-
-std::string GetGoogleLocale(const std::string& application_locale) {
- // Google does not recognize "nb" for Norwegian Bokmal; it uses "no".
- return (application_locale == "nb") ? "no" : application_locale;
-}
-
-GURL AppendGoogleLocaleParam(const GURL& url,
- const std::string& application_locale) {
- return net::AppendQueryParameter(
- url, "hl", GetGoogleLocale(application_locale));
-}
-
-std::string GetGoogleCountryCode(GURL google_homepage_url) {
- const std::string google_hostname = google_homepage_url.host();
- const size_t last_dot = google_hostname.find_last_of('.');
- if (last_dot == std::string::npos) {
- NOTREACHED();
- }
- std::string country_code = google_hostname.substr(last_dot + 1);
- // Assume the com TLD implies the US.
- if (country_code == "com")
- return "us";
- // Google uses the Unicode Common Locale Data Repository (CLDR), and the CLDR
- // code for the UK is "gb".
- if (country_code == "uk")
- return "gb";
- // Catalonia does not have a CLDR country code, since it's a region in Spain,
- // so use Spain instead.
- if (country_code == "cat")
- return "es";
- return country_code;
-}
-
-GURL GetGoogleSearchURL(GURL google_homepage_url) {
- // To transform the homepage URL into the corresponding search URL, add the
- // "search" and the "q=" query string.
- std::string search_path = "search";
- std::string query_string = "q=";
- GURL::Replacements replacements;
- replacements.SetPathStr(search_path);
- replacements.SetQueryStr(query_string);
- return google_homepage_url.ReplaceComponents(replacements);
-}
-
-GURL CommandLineGoogleBaseURL() {
- // Unit tests may add command-line flags after the first call to this
- // function, so we don't simply initialize a static |base_url| directly and
- // then unconditionally return it.
- CR_DEFINE_STATIC_LOCAL(std::string, switch_value, ());
- CR_DEFINE_STATIC_LOCAL(GURL, base_url, ());
- std::string current_switch_value(
- CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kGoogleBaseURL));
- if (current_switch_value != switch_value) {
- switch_value = current_switch_value;
- base_url = url_fixer::FixupURL(switch_value, std::string());
- if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref())
- base_url = GURL();
- }
- return base_url;
-}
-
-bool StartsWithCommandLineGoogleBaseURL(const GURL& url) {
- GURL base_url(CommandLineGoogleBaseURL());
- return base_url.is_valid() &&
- StartsWithASCII(url.possibly_invalid_spec(), base_url.spec(), true);
-}
-
-bool IsGoogleHostname(const std::string& host,
- SubdomainPermission subdomain_permission) {
- GURL base_url(CommandLineGoogleBaseURL());
- if (base_url.is_valid() && (host == base_url.host()))
- return true;
-
- return IsValidHostName(host, "google", subdomain_permission);
-}
-
-bool IsGoogleDomainUrl(const GURL& url,
- SubdomainPermission subdomain_permission,
- PortPermission port_permission) {
- return IsValidURL(url, port_permission) &&
- 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))
- return false;
-
- // Make sure the path is a known home page path.
- std::string path(url.path());
- return IsPathHomePageBase(path) || StartsWithASCII(path, "/ig", false);
-}
-
-bool IsGoogleSearchUrl(const GURL& url) {
- // First check to see if this has a Google domain.
- if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS))
- return false;
-
- // Make sure the path is a known search path.
- std::string path(url.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.
- return HasGoogleSearchQueryParam(url.ref()) ||
- (!is_home_page_base && HasGoogleSearchQueryParam(url.query()));
-}
-
-bool IsYoutubeDomainUrl(const GURL& url,
- SubdomainPermission subdomain_permission,
- PortPermission port_permission) {
- return IsValidURL(url, port_permission) &&
- IsValidHostName(url.host(), "youtube", subdomain_permission);
-}
-
-} // namespace google_util
« no previous file with comments | « chrome/browser/google/google_util.h ('k') | chrome/browser/google/google_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698