| Index: chrome/browser/autocomplete/autocomplete_provider.cc
|
| diff --git a/chrome/browser/autocomplete/autocomplete_provider.cc b/chrome/browser/autocomplete/autocomplete_provider.cc
|
| index db083c82bfd56c242a32bbee242e79276d677519..72c99e861940f6a4d47374623106d78b3b480cb0 100644
|
| --- a/chrome/browser/autocomplete/autocomplete_provider.cc
|
| +++ b/chrome/browser/autocomplete/autocomplete_provider.cc
|
| @@ -134,15 +134,18 @@ void AutocompleteProvider::UpdateStarredStateOfMatches() {
|
| }
|
|
|
| // static
|
| -bool AutocompleteProvider::FixupUserInput(AutocompleteInput* input) {
|
| - const base::string16& input_text = input->text();
|
| +AutocompleteProvider::FixupReturn AutocompleteProvider::FixupUserInput(
|
| + const AutocompleteInput& input) {
|
| + const base::string16& input_text = input.text();
|
| + const FixupReturn failed(false, input_text);
|
| +
|
| // Fixup and canonicalize user input.
|
| const GURL canonical_gurl(URLFixerUpper::FixupURL(
|
| base::UTF16ToUTF8(input_text), std::string()));
|
| std::string canonical_gurl_str(canonical_gurl.possibly_invalid_spec());
|
| if (canonical_gurl_str.empty()) {
|
| // This probably won't happen, but there are no guarantees.
|
| - return false;
|
| + return failed;
|
| }
|
|
|
| // If the user types a number, GURL will convert it to a dotted quad.
|
| @@ -151,11 +154,11 @@ bool AutocompleteProvider::FixupUserInput(AutocompleteInput* input) {
|
| // for hostname beginning with numbers (e.g. input of "17173" will be matched
|
| // against "0.0.67.21" instead of the original "17173", failing to find
|
| // "17173.com"), swap the original hostname in for the fixed-up one.
|
| - if ((input->type() != AutocompleteInput::URL) &&
|
| + if ((input.type() != AutocompleteInput::URL) &&
|
| canonical_gurl.HostIsIPAddress()) {
|
| std::string original_hostname =
|
| - base::UTF16ToUTF8(input_text.substr(input->parts().host.begin,
|
| - input->parts().host.len));
|
| + base::UTF16ToUTF8(input_text.substr(input.parts().host.begin,
|
| + input.parts().host.len));
|
| const url::Parsed& parts =
|
| canonical_gurl.parsed_for_possibly_invalid_spec();
|
| // parts.host must not be empty when HostIsIPAddress() is true.
|
| @@ -163,7 +166,7 @@ bool AutocompleteProvider::FixupUserInput(AutocompleteInput* input) {
|
| canonical_gurl_str.replace(parts.host.begin, parts.host.len,
|
| original_hostname);
|
| }
|
| - base::string16 output = base::UTF8ToUTF16(canonical_gurl_str);
|
| + base::string16 output(base::UTF8ToUTF16(canonical_gurl_str));
|
| // Don't prepend a scheme when the user didn't have one. Since the fixer
|
| // upper only prepends the "http" scheme, that's all we need to check for.
|
| if (!AutocompleteInput::HasHTTPScheme(input_text))
|
| @@ -197,11 +200,10 @@ bool AutocompleteProvider::FixupUserInput(AutocompleteInput* input) {
|
| output.append(num_input_slashes - num_output_slashes, '/');
|
| else if (num_output_slashes > num_input_slashes)
|
| output.erase(output.length() - num_output_slashes + num_input_slashes);
|
| + if (output.empty())
|
| + return failed;
|
|
|
| - url::Parsed parts;
|
| - URLFixerUpper::SegmentURL(output, &parts);
|
| - input->UpdateText(output, base::string16::npos, parts);
|
| - return !output.empty();
|
| + return FixupReturn(true, output);
|
| }
|
|
|
| // static
|
|
|