diff --git a/chrome/browser/autocomplete/autocomplete_input.cc b/chrome/browser/autocomplete/autocomplete_input.cc
index c1fdf54..0ddfa5c 100644
--- a/chrome/browser/autocomplete/autocomplete_input.cc
+++ b/chrome/browser/autocomplete/autocomplete_input.cc
@@ -172,7 +172,7 @@
   // (e.g. "ftp" or "view-source") but I'll wait to spend the effort on that
   // until I run into some cases that really need it.
   if (parts->scheme.is_nonempty() &&
-      !LowerCaseEqualsASCII(parsed_scheme, chrome::kHttpScheme) &&
+      !LowerCaseEqualsASCII(parsed_scheme, content::kHttpScheme) &&
       !LowerCaseEqualsASCII(parsed_scheme, content::kHttpsScheme)) {
     // See if we know how to handle the URL internally.
     if (ProfileIOData::IsHandledProtocol(UTF16ToASCII(parsed_scheme)))
@@ -208,7 +208,7 @@
         // We don't know about this scheme.  It might be that the user typed a
         // URL of the form "username:password@foo.com".
         const string16 http_scheme_prefix =
-            ASCIIToUTF16(std::string(chrome::kHttpScheme) +
+            ASCIIToUTF16(std::string(content::kHttpScheme) +
                          content::kStandardSchemeSeparator);
         url_parse::Parsed http_parts;
         string16 http_scheme;
@@ -216,7 +216,7 @@
         Type http_type = Parse(http_scheme_prefix + text, desired_tld,
                                &http_parts, &http_scheme,
                                &http_canonicalized_url);
-        DCHECK_EQ(std::string(chrome::kHttpScheme), UTF16ToUTF8(http_scheme));
+        DCHECK_EQ(std::string(content::kHttpScheme), UTF16ToUTF8(http_scheme));
 
         if (http_type == URL &&
             http_parts.username.is_nonempty() &&
diff --git a/chrome/browser/autocomplete/autocomplete_match.cc b/chrome/browser/autocomplete/autocomplete_match.cc
index ae89aa0f..3346d35 100644
--- a/chrome/browser/autocomplete/autocomplete_match.cc
+++ b/chrome/browser/autocomplete/autocomplete_match.cc
@@ -378,8 +378,8 @@
   // Replace https protocol with http protocol.
   if (stripped_destination_url.SchemeIs(content::kHttpsScheme)) {
     replacements.SetScheme(
-        chrome::kHttpScheme,
-        url_parse::Component(0, strlen(chrome::kHttpScheme)));
+        content::kHttpScheme,
+        url_parse::Component(0, strlen(content::kHttpScheme)));
     needs_replacement = true;
   }
 
diff --git a/chrome/browser/autocomplete/autocomplete_provider.cc b/chrome/browser/autocomplete/autocomplete_provider.cc
index 873bbac..15af9ab 100644
--- a/chrome/browser/autocomplete/autocomplete_provider.cc
+++ b/chrome/browser/autocomplete/autocomplete_provider.cc
@@ -129,7 +129,7 @@
   if (url_util::FindAndCompareScheme(utf8_input, content::kViewSourceScheme,
                                      &scheme))
     utf8_input.erase(0, scheme.end() + 1);
-  return url_util::FindAndCompareScheme(utf8_input, chrome::kHttpScheme, NULL);
+  return url_util::FindAndCompareScheme(utf8_input, content::kHttpScheme, NULL);
 }
 
 void AutocompleteProvider::UpdateStarredStateOfMatches() {
diff --git a/chrome/browser/autocomplete/history_provider.cc b/chrome/browser/autocomplete/history_provider.cc
index 90e25fa..32776b90 100644
--- a/chrome/browser/autocomplete/history_provider.cc
+++ b/chrome/browser/autocomplete/history_provider.cc
@@ -138,11 +138,11 @@
   if (!HasHTTPScheme(*url))
     return 0;
   size_t scheme_pos =
-      url->find(ASCIIToUTF16(chrome::kHttpScheme) + char16(':'));
+      url->find(ASCIIToUTF16(content::kHttpScheme) + char16(':'));
   DCHECK_NE(string16::npos, scheme_pos);
 
   // Erase scheme plus up to two slashes.
-  size_t prefix_end = scheme_pos + strlen(chrome::kHttpScheme) + 1;
+  size_t prefix_end = scheme_pos + strlen(content::kHttpScheme) + 1;
   const size_t after_slashes = std::min(url->length(), prefix_end + 2);
   while ((prefix_end < after_slashes) && ((*url)[prefix_end] == '/'))
     ++prefix_end;
diff --git a/chrome/browser/autocomplete/history_url_provider.cc b/chrome/browser/autocomplete/history_url_provider.cc
index cf996fb7..a29f827 100644
--- a/chrome/browser/autocomplete/history_url_provider.cc
+++ b/chrome/browser/autocomplete/history_url_provider.cc
@@ -795,7 +795,7 @@
   // input's text and parts between Parse() and here, it seems better to be
   // paranoid and check.
   if ((input.type() != AutocompleteInput::UNKNOWN) ||
-      !LowerCaseEqualsASCII(input.scheme(), chrome::kHttpScheme) ||
+      !LowerCaseEqualsASCII(input.scheme(), content::kHttpScheme) ||
       !input.parts().host.is_nonempty())
     return false;
   const std::string host(UTF16ToUTF8(
diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
index 5b366b6..e222ad0 100644
--- a/chrome/browser/autocomplete/search_provider.cc
+++ b/chrome/browser/autocomplete/search_provider.cc
@@ -745,7 +745,7 @@
   // and happens to currently be invalid -- in which case we again want to run
   // our checks below.  Other QUERY cases are less likely to be URLs and thus we
   // assume we're OK.
-  if (!LowerCaseEqualsASCII(input_.scheme(), chrome::kHttpScheme) &&
+  if (!LowerCaseEqualsASCII(input_.scheme(), content::kHttpScheme) &&
       !LowerCaseEqualsASCII(input_.scheme(), content::kHttpsScheme) &&
       !LowerCaseEqualsASCII(input_.scheme(), chrome::kFtpScheme))
     return (input_.type() == AutocompleteInput::QUERY);
diff --git a/chrome/browser/autocomplete/zero_suggest_provider.cc b/chrome/browser/autocomplete/zero_suggest_provider.cc
index 6680bb98..ead3844 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider.cc
+++ b/chrome/browser/autocomplete/zero_suggest_provider.cc
@@ -222,7 +222,7 @@
   // Only allow HTTP URLs or Google HTTPS URLs (including Google search
   // result pages).  For the latter case, Google was already sent the HTTPS
   // URLs when requesting the page, so the information is just re-sent.
-  return (url.scheme() == chrome::kHttpScheme) ||
+  return (url.scheme() == content::kHttpScheme) ||
       google_util::IsGoogleDomainUrl(url, google_util::ALLOW_SUBDOMAIN,
                                      google_util::ALLOW_NON_STANDARD_PORTS);
 }
