Index: chrome/browser/autocomplete/autocomplete.cc |
diff --git a/chrome/browser/autocomplete/autocomplete.cc b/chrome/browser/autocomplete/autocomplete.cc |
index e6404e44c1c3601421a6bc831baf296b7244b536..768b6cb0877bba4572cdf5c700b57a54f235a3bf 100644 |
--- a/chrome/browser/autocomplete/autocomplete.cc |
+++ b/chrome/browser/autocomplete/autocomplete.cc |
@@ -90,6 +90,7 @@ AutocompleteInput::AutocompleteInput(const string16& text, |
if (((type_ == UNKNOWN) || (type_ == REQUESTED_URL) || (type_ == URL)) && |
canonicalized_url.is_valid() && |
(!canonicalized_url.IsStandard() || canonicalized_url.SchemeIsFile() || |
+ canonicalized_url.SchemeIsFileSystem() || |
!canonicalized_url.host().empty())) |
canonicalized_url_ = canonicalized_url; |
@@ -161,6 +162,14 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
return URL; |
} |
+ if (LowerCaseEqualsASCII(parsed_scheme, chrome::kFileSystemScheme)) { |
+ // This could theoretically be a strange search, but let's check. |
+ // If it's got an inner_url with a scheme, it's a URL, whether it's valid or |
+ // not. |
+ if (parts->inner_parsed() && parts->inner_parsed()->scheme.is_valid()) |
+ return URL; |
+ } |
+ |
// If the user typed a scheme, and it's HTTP or HTTPS, we know how to parse it |
// well enough that we can fall through to the heuristics below. If it's |
// something else, we can just determine our action based on what we do with |
@@ -450,6 +459,9 @@ void AutocompleteInput::ParseForEmphasizeComponents( |
host->reset(); |
} |
} |
+ } else if (LowerCaseEqualsASCII(scheme_str, chrome::kFileSystemScheme) && |
+ parts.inner_parsed() && parts.inner_parsed()->scheme.is_valid()) { |
+ *host = parts.inner_parsed()->host; |
} |
} |