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/omnibox/browser/autocomplete_input.h" | 5 #include "components/omnibox/browser/autocomplete_input.h" |
6 | 6 |
7 #include "base/strings/string_split.h" | 7 #include "base/strings/string_split.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "components/metrics/proto/omnibox_event.pb.h" | 10 #include "components/metrics/proto/omnibox_event.pb.h" |
11 #include "components/omnibox/browser/autocomplete_scheme_classifier.h" | 11 #include "components/omnibox/browser/autocomplete_scheme_classifier.h" |
12 #include "components/omnibox/browser/omnibox_field_trial.h" | 12 #include "components/omnibox/browser/omnibox_field_trial.h" |
13 #include "components/url_fixer/url_fixer.h" | 13 #include "components/url_formatter/url_fixer.h" |
| 14 #include "components/url_formatter/url_formatter.h" |
14 #include "net/base/net_util.h" | 15 #include "net/base/net_util.h" |
15 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 16 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
16 #include "url/url_canon_ip.h" | 17 #include "url/url_canon_ip.h" |
17 #include "url/url_util.h" | 18 #include "url/url_util.h" |
18 | 19 |
19 namespace { | 20 namespace { |
20 | 21 |
21 // Hardcode constant to avoid any dependencies on content/. | 22 // Hardcode constant to avoid any dependencies on content/. |
22 const char kViewSourceScheme[] = "view-source"; | 23 const char kViewSourceScheme[] = "view-source"; |
23 | 24 |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 return metrics::OmniboxInputType::FORCED_QUERY; | 182 return metrics::OmniboxInputType::FORCED_QUERY; |
182 } | 183 } |
183 | 184 |
184 // Ask our parsing back-end to help us understand what the user typed. We | 185 // Ask our parsing back-end to help us understand what the user typed. We |
185 // use the URLFixerUpper here because we want to be smart about what we | 186 // use the URLFixerUpper here because we want to be smart about what we |
186 // consider a scheme. For example, we shouldn't consider www.google.com:80 | 187 // consider a scheme. For example, we shouldn't consider www.google.com:80 |
187 // to have a scheme. | 188 // to have a scheme. |
188 url::Parsed local_parts; | 189 url::Parsed local_parts; |
189 if (!parts) | 190 if (!parts) |
190 parts = &local_parts; | 191 parts = &local_parts; |
191 const base::string16 parsed_scheme(url_fixer::SegmentURL(text, parts)); | 192 const base::string16 parsed_scheme(url_formatter::SegmentURL(text, parts)); |
192 if (scheme) | 193 if (scheme) |
193 *scheme = parsed_scheme; | 194 *scheme = parsed_scheme; |
194 const std::string parsed_scheme_utf8(base::UTF16ToUTF8(parsed_scheme)); | 195 const std::string parsed_scheme_utf8(base::UTF16ToUTF8(parsed_scheme)); |
195 | 196 |
196 // If we can't canonicalize the user's input, the rest of the autocomplete | 197 // If we can't canonicalize the user's input, the rest of the autocomplete |
197 // system isn't going to be able to produce a navigable URL match for it. | 198 // system isn't going to be able to produce a navigable URL match for it. |
198 // So we just return QUERY immediately in these cases. | 199 // So we just return QUERY immediately in these cases. |
199 GURL placeholder_canonicalized_url; | 200 GURL placeholder_canonicalized_url; |
200 if (!canonicalized_url) | 201 if (!canonicalized_url) |
201 canonicalized_url = &placeholder_canonicalized_url; | 202 canonicalized_url = &placeholder_canonicalized_url; |
202 *canonicalized_url = | 203 *canonicalized_url = |
203 url_fixer::FixupURL(base::UTF16ToUTF8(text), desired_tld); | 204 url_formatter::FixupURL(base::UTF16ToUTF8(text), desired_tld); |
204 if (!canonicalized_url->is_valid()) | 205 if (!canonicalized_url->is_valid()) |
205 return metrics::OmniboxInputType::QUERY; | 206 return metrics::OmniboxInputType::QUERY; |
206 | 207 |
207 if (base::LowerCaseEqualsASCII(parsed_scheme_utf8, url::kFileScheme)) { | 208 if (base::LowerCaseEqualsASCII(parsed_scheme_utf8, url::kFileScheme)) { |
208 // A user might or might not type a scheme when entering a file URL. In | 209 // A user might or might not type a scheme when entering a file URL. In |
209 // either case, |parsed_scheme_utf8| will tell us that this is a file URL, | 210 // either case, |parsed_scheme_utf8| will tell us that this is a file URL, |
210 // but |parts->scheme| might be empty, e.g. if the user typed "C:\foo". | 211 // but |parts->scheme| might be empty, e.g. if the user typed "C:\foo". |
211 return metrics::OmniboxInputType::URL; | 212 return metrics::OmniboxInputType::URL; |
212 } | 213 } |
213 | 214 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 url::Component* components[] = { | 249 url::Component* components[] = { |
249 &http_parts.username, | 250 &http_parts.username, |
250 &http_parts.password, | 251 &http_parts.password, |
251 &http_parts.host, | 252 &http_parts.host, |
252 &http_parts.port, | 253 &http_parts.port, |
253 &http_parts.path, | 254 &http_parts.path, |
254 &http_parts.query, | 255 &http_parts.query, |
255 &http_parts.ref, | 256 &http_parts.ref, |
256 }; | 257 }; |
257 for (size_t i = 0; i < arraysize(components); ++i) { | 258 for (size_t i = 0; i < arraysize(components); ++i) { |
258 url_fixer::OffsetComponent( | 259 url_formatter::OffsetComponent( |
259 -static_cast<int>(http_scheme_prefix.length()), components[i]); | 260 -static_cast<int>(http_scheme_prefix.length()), components[i]); |
260 } | 261 } |
261 | 262 |
262 *parts = http_parts; | 263 *parts = http_parts; |
263 if (scheme) | 264 if (scheme) |
264 scheme->clear(); | 265 scheme->clear(); |
265 *canonicalized_url = http_canonicalized_url; | 266 *canonicalized_url = http_canonicalized_url; |
266 | 267 |
267 return metrics::OmniboxInputType::URL; | 268 return metrics::OmniboxInputType::URL; |
268 } | 269 } |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 parts.inner_parsed() && parts.inner_parsed()->scheme.is_valid()) { | 498 parts.inner_parsed() && parts.inner_parsed()->scheme.is_valid()) { |
498 *host = parts.inner_parsed()->host; | 499 *host = parts.inner_parsed()->host; |
499 } | 500 } |
500 } | 501 } |
501 | 502 |
502 // static | 503 // static |
503 base::string16 AutocompleteInput::FormattedStringWithEquivalentMeaning( | 504 base::string16 AutocompleteInput::FormattedStringWithEquivalentMeaning( |
504 const GURL& url, | 505 const GURL& url, |
505 const base::string16& formatted_url, | 506 const base::string16& formatted_url, |
506 const AutocompleteSchemeClassifier& scheme_classifier) { | 507 const AutocompleteSchemeClassifier& scheme_classifier) { |
507 if (!net::CanStripTrailingSlash(url)) | 508 if (!url_formatter::CanStripTrailingSlash(url)) |
508 return formatted_url; | 509 return formatted_url; |
509 const base::string16 url_with_path(formatted_url + base::char16('/')); | 510 const base::string16 url_with_path(formatted_url + base::char16('/')); |
510 return (AutocompleteInput::Parse(formatted_url, std::string(), | 511 return (AutocompleteInput::Parse(formatted_url, std::string(), |
511 scheme_classifier, NULL, NULL, NULL) == | 512 scheme_classifier, NULL, NULL, NULL) == |
512 AutocompleteInput::Parse(url_with_path, std::string(), | 513 AutocompleteInput::Parse(url_with_path, std::string(), |
513 scheme_classifier, NULL, NULL, NULL)) ? | 514 scheme_classifier, NULL, NULL, NULL)) ? |
514 formatted_url : url_with_path; | 515 formatted_url : url_with_path; |
515 } | 516 } |
516 | 517 |
517 // static | 518 // static |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 parts_ = url::Parsed(); | 565 parts_ = url::Parsed(); |
565 scheme_.clear(); | 566 scheme_.clear(); |
566 canonicalized_url_ = GURL(); | 567 canonicalized_url_ = GURL(); |
567 prevent_inline_autocomplete_ = false; | 568 prevent_inline_autocomplete_ = false; |
568 prefer_keyword_ = false; | 569 prefer_keyword_ = false; |
569 allow_exact_keyword_match_ = false; | 570 allow_exact_keyword_match_ = false; |
570 want_asynchronous_matches_ = true; | 571 want_asynchronous_matches_ = true; |
571 from_omnibox_focus_ = false; | 572 from_omnibox_focus_ = false; |
572 terms_prefixed_by_http_or_https_.clear(); | 573 terms_prefixed_by_http_or_https_.clear(); |
573 } | 574 } |
OLD | NEW |