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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_input.cc

Issue 254763005: Move some content url constants to /url. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initial patches. Created 6 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/autocomplete/autocomplete_input.h" 5 #include "chrome/browser/autocomplete/autocomplete_input.h"
6 6
7 #include "base/strings/string_util.h" 7 #include "base/strings/string_util.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/external_protocol/external_protocol_handler.h" 9 #include "chrome/browser/external_protocol/external_protocol_handler.h"
10 #include "chrome/browser/profiles/profile_io_data.h" 10 #include "chrome/browser/profiles/profile_io_data.h"
11 #include "chrome/common/net/url_fixer_upper.h" 11 #include "chrome/common/net/url_fixer_upper.h"
12 #include "content/public/common/url_constants.h" 12 #include "content/public/common/url_constants.h"
13 #include "net/base/net_util.h" 13 #include "net/base/net_util.h"
14 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 14 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
15 #include "net/base/url_constants.h"
15 #include "url/url_canon_ip.h" 16 #include "url/url_canon_ip.h"
16 #include "url/url_util.h" 17 #include "url/url_util.h"
17 18
18 namespace { 19 namespace {
19 20
20 void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed, 21 void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed,
21 size_t* cursor_position) { 22 size_t* cursor_position) {
22 if (*cursor_position == base::string16::npos) 23 if (*cursor_position == base::string16::npos)
23 return; 24 return;
24 if (num_leading_chars_removed < *cursor_position) 25 if (num_leading_chars_removed < *cursor_position)
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 return URL; 173 return URL;
173 } 174 }
174 175
175 // If the user typed a scheme, and it's HTTP or HTTPS, we know how to parse it 176 // If the user typed a scheme, and it's HTTP or HTTPS, we know how to parse it
176 // well enough that we can fall through to the heuristics below. If it's 177 // well enough that we can fall through to the heuristics below. If it's
177 // something else, we can just determine our action based on what we do with 178 // something else, we can just determine our action based on what we do with
178 // any input of this scheme. In theory we could do better with some schemes 179 // any input of this scheme. In theory we could do better with some schemes
179 // (e.g. "ftp" or "view-source") but I'll wait to spend the effort on that 180 // (e.g. "ftp" or "view-source") but I'll wait to spend the effort on that
180 // until I run into some cases that really need it. 181 // until I run into some cases that really need it.
181 if (parts->scheme.is_nonempty() && 182 if (parts->scheme.is_nonempty() &&
182 !LowerCaseEqualsASCII(parsed_scheme, content::kHttpScheme) && 183 !LowerCaseEqualsASCII(parsed_scheme, net::kHttpScheme) &&
183 !LowerCaseEqualsASCII(parsed_scheme, content::kHttpsScheme)) { 184 !LowerCaseEqualsASCII(parsed_scheme, net::kHttpsScheme)) {
184 // See if we know how to handle the URL internally. There are some schemes 185 // See if we know how to handle the URL internally. There are some schemes
185 // that we convert to other things before they reach the renderer or else 186 // that we convert to other things before they reach the renderer or else
186 // the renderer handles internally without reaching the net::URLRequest 187 // the renderer handles internally without reaching the net::URLRequest
187 // logic. They thus won't be listed as "handled protocols", but we should 188 // logic. They thus won't be listed as "handled protocols", but we should
188 // still claim to handle them. 189 // still claim to handle them.
189 if (ProfileIOData::IsHandledProtocol(base::UTF16ToASCII(parsed_scheme)) || 190 if (ProfileIOData::IsHandledProtocol(base::UTF16ToASCII(parsed_scheme)) ||
190 LowerCaseEqualsASCII(parsed_scheme, content::kViewSourceScheme) || 191 LowerCaseEqualsASCII(parsed_scheme, content::kViewSourceScheme) ||
191 LowerCaseEqualsASCII(parsed_scheme, content::kJavaScriptScheme) || 192 LowerCaseEqualsASCII(parsed_scheme, content::kJavaScriptScheme) ||
192 LowerCaseEqualsASCII(parsed_scheme, content::kDataScheme)) 193 LowerCaseEqualsASCII(parsed_scheme, content::kDataScheme))
193 return return_value_for_non_http_url; 194 return return_value_for_non_http_url;
(...skipping 15 matching lines...) Expand all
209 return return_value_for_non_http_url; 210 return return_value_for_non_http_url;
210 211
211 case ExternalProtocolHandler::BLOCK: 212 case ExternalProtocolHandler::BLOCK:
212 // If we don't want the user to open the URL, don't let it be navigated 213 // If we don't want the user to open the URL, don't let it be navigated
213 // to at all. 214 // to at all.
214 return QUERY; 215 return QUERY;
215 216
216 default: { 217 default: {
217 // We don't know about this scheme. It might be that the user typed a 218 // We don't know about this scheme. It might be that the user typed a
218 // URL of the form "username:password@foo.com". 219 // URL of the form "username:password@foo.com".
219 const base::string16 http_scheme_prefix = 220 const base::string16 http_scheme_prefix = base::ASCIIToUTF16(
220 base::ASCIIToUTF16(std::string(content::kHttpScheme) + 221 std::string(net::kHttpScheme) + content::kStandardSchemeSeparator);
221 content::kStandardSchemeSeparator);
222 url_parse::Parsed http_parts; 222 url_parse::Parsed http_parts;
223 base::string16 http_scheme; 223 base::string16 http_scheme;
224 GURL http_canonicalized_url; 224 GURL http_canonicalized_url;
225 Type http_type = Parse(http_scheme_prefix + text, desired_tld, 225 Type http_type = Parse(http_scheme_prefix + text, desired_tld,
226 &http_parts, &http_scheme, 226 &http_parts, &http_scheme,
227 &http_canonicalized_url); 227 &http_canonicalized_url);
228 DCHECK_EQ(std::string(content::kHttpScheme), 228 DCHECK_EQ(std::string(net::kHttpScheme),
229 base::UTF16ToUTF8(http_scheme)); 229 base::UTF16ToUTF8(http_scheme));
230 230
231 if ((http_type == URL) && http_parts.username.is_nonempty() && 231 if ((http_type == URL) && http_parts.username.is_nonempty() &&
232 http_parts.password.is_nonempty()) { 232 http_parts.password.is_nonempty()) {
233 // Manually re-jigger the parsed parts to match |text| (without the 233 // Manually re-jigger the parsed parts to match |text| (without the
234 // http scheme added). 234 // http scheme added).
235 http_parts.scheme.reset(); 235 http_parts.scheme.reset();
236 url_parse::Component* components[] = { 236 url_parse::Component* components[] = {
237 &http_parts.username, 237 &http_parts.username,
238 &http_parts.password, 238 &http_parts.password,
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 return num_nonhost_components; 505 return num_nonhost_components;
506 } 506 }
507 507
508 // static 508 // static
509 bool AutocompleteInput::HasHTTPScheme(const base::string16& input) { 509 bool AutocompleteInput::HasHTTPScheme(const base::string16& input) {
510 std::string utf8_input(base::UTF16ToUTF8(input)); 510 std::string utf8_input(base::UTF16ToUTF8(input));
511 url_parse::Component scheme; 511 url_parse::Component scheme;
512 if (url_util::FindAndCompareScheme(utf8_input, content::kViewSourceScheme, 512 if (url_util::FindAndCompareScheme(utf8_input, content::kViewSourceScheme,
513 &scheme)) 513 &scheme))
514 utf8_input.erase(0, scheme.end() + 1); 514 utf8_input.erase(0, scheme.end() + 1);
515 return url_util::FindAndCompareScheme(utf8_input, content::kHttpScheme, NULL); 515 return url_util::FindAndCompareScheme(utf8_input, net::kHttpScheme, NULL);
516 } 516 }
517 517
518 void AutocompleteInput::UpdateText(const base::string16& text, 518 void AutocompleteInput::UpdateText(const base::string16& text,
519 size_t cursor_position, 519 size_t cursor_position,
520 const url_parse::Parsed& parts) { 520 const url_parse::Parsed& parts) {
521 DCHECK(cursor_position <= text.length() || 521 DCHECK(cursor_position <= text.length() ||
522 cursor_position == base::string16::npos) 522 cursor_position == base::string16::npos)
523 << "Text: '" << text << "', cp: " << cursor_position; 523 << "Text: '" << text << "', cp: " << cursor_position;
524 text_ = text; 524 text_ = text;
525 cursor_position_ = cursor_position; 525 cursor_position_ = cursor_position;
526 parts_ = parts; 526 parts_ = parts;
527 } 527 }
528 528
529 void AutocompleteInput::Clear() { 529 void AutocompleteInput::Clear() {
530 text_.clear(); 530 text_.clear();
531 cursor_position_ = base::string16::npos; 531 cursor_position_ = base::string16::npos;
532 current_url_ = GURL(); 532 current_url_ = GURL();
533 current_page_classification_ = AutocompleteInput::INVALID_SPEC; 533 current_page_classification_ = AutocompleteInput::INVALID_SPEC;
534 type_ = INVALID; 534 type_ = INVALID;
535 parts_ = url_parse::Parsed(); 535 parts_ = url_parse::Parsed();
536 scheme_.clear(); 536 scheme_.clear();
537 canonicalized_url_ = GURL(); 537 canonicalized_url_ = GURL();
538 prevent_inline_autocomplete_ = false; 538 prevent_inline_autocomplete_ = false;
539 prefer_keyword_ = false; 539 prefer_keyword_ = false;
540 allow_exact_keyword_match_ = false; 540 allow_exact_keyword_match_ = false;
541 want_asynchronous_matches_ = true; 541 want_asynchronous_matches_ = true;
542 } 542 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698