| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/google/core/browser/google_util.h" | 5 #include "components/google/core/browser/google_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 base_url = url_fixer::FixupURL(switch_value, std::string()); | 156 base_url = url_fixer::FixupURL(switch_value, std::string()); |
| 157 if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref()) | 157 if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref()) |
| 158 base_url = GURL(); | 158 base_url = GURL(); |
| 159 } | 159 } |
| 160 return base_url; | 160 return base_url; |
| 161 } | 161 } |
| 162 | 162 |
| 163 bool StartsWithCommandLineGoogleBaseURL(const GURL& url) { | 163 bool StartsWithCommandLineGoogleBaseURL(const GURL& url) { |
| 164 GURL base_url(CommandLineGoogleBaseURL()); | 164 GURL base_url(CommandLineGoogleBaseURL()); |
| 165 return base_url.is_valid() && | 165 return base_url.is_valid() && |
| 166 base::StartsWithASCII(url.possibly_invalid_spec(), base_url.spec(), | 166 base::StartsWith(url.possibly_invalid_spec(), base_url.spec(), |
| 167 true); | 167 base::CompareCase::SENSITIVE); |
| 168 } | 168 } |
| 169 | 169 |
| 170 bool IsGoogleHostname(const std::string& host, | 170 bool IsGoogleHostname(const std::string& host, |
| 171 SubdomainPermission subdomain_permission) { | 171 SubdomainPermission subdomain_permission) { |
| 172 GURL base_url(CommandLineGoogleBaseURL()); | 172 GURL base_url(CommandLineGoogleBaseURL()); |
| 173 if (base_url.is_valid() && (host == base_url.host())) | 173 if (base_url.is_valid() && (host == base_url.host())) |
| 174 return true; | 174 return true; |
| 175 | 175 |
| 176 return IsValidHostName(host, "google", subdomain_permission); | 176 return IsValidHostName(host, "google", subdomain_permission); |
| 177 } | 177 } |
| 178 | 178 |
| 179 bool IsGoogleDomainUrl(const GURL& url, | 179 bool IsGoogleDomainUrl(const GURL& url, |
| 180 SubdomainPermission subdomain_permission, | 180 SubdomainPermission subdomain_permission, |
| 181 PortPermission port_permission) { | 181 PortPermission port_permission) { |
| 182 return IsValidURL(url, port_permission) && | 182 return IsValidURL(url, port_permission) && |
| 183 IsGoogleHostname(url.host(), subdomain_permission); | 183 IsGoogleHostname(url.host(), subdomain_permission); |
| 184 } | 184 } |
| 185 | 185 |
| 186 bool IsGoogleHomePageUrl(const GURL& url) { | 186 bool IsGoogleHomePageUrl(const GURL& url) { |
| 187 // First check to see if this has a Google domain. | 187 // First check to see if this has a Google domain. |
| 188 if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS)) | 188 if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS)) |
| 189 return false; | 189 return false; |
| 190 | 190 |
| 191 // Make sure the path is a known home page path. | 191 // Make sure the path is a known home page path. |
| 192 std::string path(url.path()); | 192 std::string path(url.path()); |
| 193 return IsPathHomePageBase(path) || base::StartsWithASCII(path, "/ig", false); | 193 return IsPathHomePageBase(path) || |
| 194 base::StartsWith(path, "/ig", base::CompareCase::INSENSITIVE_ASCII); |
| 194 } | 195 } |
| 195 | 196 |
| 196 bool IsGoogleSearchUrl(const GURL& url) { | 197 bool IsGoogleSearchUrl(const GURL& url) { |
| 197 // First check to see if this has a Google domain. | 198 // First check to see if this has a Google domain. |
| 198 if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS)) | 199 if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, DISALLOW_NON_STANDARD_PORTS)) |
| 199 return false; | 200 return false; |
| 200 | 201 |
| 201 // Make sure the path is a known search path. | 202 // Make sure the path is a known search path. |
| 202 std::string path(url.path()); | 203 std::string path(url.path()); |
| 203 bool is_home_page_base = IsPathHomePageBase(path); | 204 bool is_home_page_base = IsPathHomePageBase(path); |
| 204 if (!is_home_page_base && (path != "/search")) | 205 if (!is_home_page_base && (path != "/search")) |
| 205 return false; | 206 return false; |
| 206 | 207 |
| 207 // Check for query parameter in URL parameter and hash fragment, depending on | 208 // Check for query parameter in URL parameter and hash fragment, depending on |
| 208 // the path type. | 209 // the path type. |
| 209 return HasGoogleSearchQueryParam(url.ref()) || | 210 return HasGoogleSearchQueryParam(url.ref()) || |
| 210 (!is_home_page_base && HasGoogleSearchQueryParam(url.query())); | 211 (!is_home_page_base && HasGoogleSearchQueryParam(url.query())); |
| 211 } | 212 } |
| 212 | 213 |
| 213 bool IsYoutubeDomainUrl(const GURL& url, | 214 bool IsYoutubeDomainUrl(const GURL& url, |
| 214 SubdomainPermission subdomain_permission, | 215 SubdomainPermission subdomain_permission, |
| 215 PortPermission port_permission) { | 216 PortPermission port_permission) { |
| 216 return IsValidURL(url, port_permission) && | 217 return IsValidURL(url, port_permission) && |
| 217 IsValidHostName(url.host(), "youtube", subdomain_permission); | 218 IsValidHostName(url.host(), "youtube", subdomain_permission); |
| 218 } | 219 } |
| 219 | 220 |
| 220 } // namespace google_util | 221 } // namespace google_util |
| OLD | NEW |