Index: chrome/browser/autocomplete/autocomplete.cc |
diff --git a/chrome/browser/autocomplete/autocomplete.cc b/chrome/browser/autocomplete/autocomplete.cc |
index e6404e44c1c3601421a6bc831baf296b7244b536..2c77c98d3c91a28c6416a591cf907acade48c8a6 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,15 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
return URL; |
} |
+ if (LowerCaseEqualsASCII(parsed_scheme, chrome::kFileSystemScheme)) { |
+ // This could theoretically be a strange search, but let's check. |
+ ParseFileSystemURL(text.data(), text.length(), parts); |
sky
2012/02/16 15:43:26
Is it really safe to reuse parts here?
ericu
2012/02/22 00:00:51
It would be if I'd remembered to clear out inner_p
|
+ // 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 +460,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; |
} |
} |