Index: chrome/browser/autocomplete/autocomplete_input.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_input.cc b/chrome/browser/autocomplete/autocomplete_input.cc |
index f85b5db900d523bec7319a559182b334016abcc2..1b2d0ed09c14c8207bd7e6dbd6e46705ce0422fb 100644 |
--- a/chrome/browser/autocomplete/autocomplete_input.cc |
+++ b/chrome/browser/autocomplete/autocomplete_input.cc |
@@ -32,7 +32,7 @@ void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed, |
AutocompleteInput::AutocompleteInput() |
: cursor_position_(base::string16::npos), |
current_page_classification_(AutocompleteInput::INVALID_SPEC), |
- type_(INVALID), |
+ type_(metrics::OmniboxInputType::INVALID), |
prevent_inline_autocomplete_(false), |
prefer_keyword_(false), |
allow_exact_keyword_match_(true), |
@@ -69,10 +69,11 @@ AutocompleteInput::AutocompleteInput( |
GURL canonicalized_url; |
type_ = Parse(text_, desired_tld, &parts_, &scheme_, &canonicalized_url); |
- if (type_ == INVALID) |
+ if (type_ == metrics::OmniboxInputType::INVALID) |
return; |
- if (((type_ == UNKNOWN) || (type_ == URL)) && |
+ if (((type_ == metrics::OmniboxInputType::UNKNOWN) || |
+ (type_ == metrics::OmniboxInputType::URL)) && |
canonicalized_url.is_valid() && |
(!canonicalized_url.IsStandard() || canonicalized_url.SchemeIsFile() || |
canonicalized_url.SchemeIsFileSystem() || |
@@ -98,9 +99,10 @@ AutocompleteInput::~AutocompleteInput() { |
// static |
size_t AutocompleteInput::RemoveForcedQueryStringIfNecessary( |
- Type type, |
+ metrics::OmniboxInputType::Type type, |
base::string16* text) { |
- if (type != FORCED_QUERY || text->empty() || (*text)[0] != L'?') |
+ if ((type != metrics::OmniboxInputType::FORCED_QUERY) || text->empty() || |
+ (*text)[0] != L'?') |
return 0; |
// Drop the leading '?'. |
text->erase(0, 1); |
@@ -108,13 +110,14 @@ size_t AutocompleteInput::RemoveForcedQueryStringIfNecessary( |
} |
// static |
-std::string AutocompleteInput::TypeToString(Type type) { |
+std::string AutocompleteInput::TypeToString( |
+ metrics::OmniboxInputType::Type type) { |
switch (type) { |
- case INVALID: return "invalid"; |
- case UNKNOWN: return "unknown"; |
- case URL: return "url"; |
- case QUERY: return "query"; |
- case FORCED_QUERY: return "forced-query"; |
+ case metrics::OmniboxInputType::INVALID: return "invalid"; |
+ case metrics::OmniboxInputType::UNKNOWN: return "unknown"; |
+ case metrics::OmniboxInputType::URL: return "url"; |
+ case metrics::OmniboxInputType::QUERY: return "query"; |
+ case metrics::OmniboxInputType::FORCED_QUERY: return "forced-query"; |
default: |
NOTREACHED(); |
@@ -123,7 +126,7 @@ std::string AutocompleteInput::TypeToString(Type type) { |
} |
// static |
-AutocompleteInput::Type AutocompleteInput::Parse( |
+metrics::OmniboxInputType::Type AutocompleteInput::Parse( |
const base::string16& text, |
const base::string16& desired_tld, |
url::Parsed* parts, |
@@ -131,12 +134,12 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
GURL* canonicalized_url) { |
size_t first_non_white = text.find_first_not_of(base::kWhitespaceUTF16, 0); |
if (first_non_white == base::string16::npos) |
- return INVALID; // All whitespace. |
+ return metrics::OmniboxInputType::INVALID; // All whitespace. |
if (text[first_non_white] == L'?') { |
// If the first non-whitespace character is a '?', we magically treat this |
// as a query. |
- return FORCED_QUERY; |
+ return metrics::OmniboxInputType::FORCED_QUERY; |
} |
// Ask our parsing back-end to help us understand what the user typed. We |
@@ -159,13 +162,13 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
*canonicalized_url = URLFixerUpper::FixupURL(base::UTF16ToUTF8(text), |
base::UTF16ToUTF8(desired_tld)); |
if (!canonicalized_url->is_valid()) |
- return QUERY; |
+ return metrics::OmniboxInputType::QUERY; |
if (LowerCaseEqualsASCII(parsed_scheme, url::kFileScheme)) { |
// A user might or might not type a scheme when entering a file URL. In |
// either case, |parsed_scheme| will tell us that this is a file URL, but |
// |parts->scheme| might be empty, e.g. if the user typed "C:\foo". |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
} |
// If the user typed a scheme, and it's HTTP or HTTPS, we know how to parse it |
@@ -186,7 +189,7 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
LowerCaseEqualsASCII(parsed_scheme, content::kViewSourceScheme) || |
LowerCaseEqualsASCII(parsed_scheme, url::kJavaScriptScheme) || |
LowerCaseEqualsASCII(parsed_scheme, url::kDataScheme)) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// Not an internal protocol. Check and see if the user has explicitly |
// opened this scheme as a URL before, or if the "scheme" is actually a |
@@ -202,12 +205,12 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
base::UTF16ToUTF8(parsed_scheme), true); |
switch (block_state) { |
case ExternalProtocolHandler::DONT_BLOCK: |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
case ExternalProtocolHandler::BLOCK: |
// If we don't want the user to open the URL, don't let it be navigated |
// to at all. |
- return QUERY; |
+ return metrics::OmniboxInputType::QUERY; |
default: { |
// We don't know about this scheme. It might be that the user typed a |
@@ -218,13 +221,14 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
url::Parsed http_parts; |
base::string16 http_scheme; |
GURL http_canonicalized_url; |
- Type http_type = Parse(http_scheme_prefix + text, desired_tld, |
- &http_parts, &http_scheme, |
- &http_canonicalized_url); |
+ metrics::OmniboxInputType::Type http_type = |
+ Parse(http_scheme_prefix + text, desired_tld, &http_parts, |
+ &http_scheme, &http_canonicalized_url); |
DCHECK_EQ(std::string(url::kHttpScheme), |
base::UTF16ToUTF8(http_scheme)); |
- if ((http_type == URL) && http_parts.username.is_nonempty() && |
+ if ((http_type == metrics::OmniboxInputType::URL) && |
+ http_parts.username.is_nonempty() && |
http_parts.password.is_nonempty()) { |
// Manually re-jigger the parsed parts to match |text| (without the |
// http scheme added). |
@@ -248,7 +252,7 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
scheme->clear(); |
*canonicalized_url = http_canonicalized_url; |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
} |
// We don't know about this scheme and it doesn't look like the user |
@@ -257,7 +261,7 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
// the option of treating it as a URL if we're wrong. |
// Note that SegmentURL() is smart so we aren't tricked by "c:\foo" or |
// "www.example.com:81" in this case. |
- return UNKNOWN; |
+ return metrics::OmniboxInputType::UNKNOWN; |
} |
} |
} |
@@ -271,7 +275,7 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
// valid, non-standard URL; for standard URLs, an empty host would have |
// resulted in an invalid |canonicalized_url| above.) |
if (!parts->host.is_nonempty()) |
- return QUERY; |
+ return metrics::OmniboxInputType::QUERY; |
// Sanity-check: GURL should have failed to canonicalize this URL if it had an |
// invalid port. |
@@ -297,11 +301,14 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
base::UTF16ToUTF8(host_with_tld), |
net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES, |
net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); |
- if (tld_length != std::string::npos) |
- return URL; // Something like "99999999999" that looks like a bad IP |
- // address, but becomes valid on attaching a TLD. |
+ if (tld_length != std::string::npos) { |
+ // Something like "99999999999" that looks like a bad IP |
+ // address, but becomes valid on attaching a TLD. |
+ return metrics::OmniboxInputType::URL; |
+ } |
} |
- return QUERY; // Could be a broken IP address, etc. |
+ // Could be a broken IP address, etc. |
+ return metrics::OmniboxInputType::QUERY; |
} |
@@ -335,18 +342,19 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
// These are rare, though probably possible in intranets. |
return (parts->scheme.is_nonempty() || |
((registry_length != 0) && |
- (host.find(' ') == base::string16::npos))) ? UNKNOWN : QUERY; |
+ (host.find(' ') == base::string16::npos))) ? |
+ metrics::OmniboxInputType::UNKNOWN : metrics::OmniboxInputType::QUERY; |
} |
// Now that we've ruled out all schemes other than http or https and done a |
// little more sanity checking, the presence of a scheme means this is likely |
// a URL. |
if (parts->scheme.is_nonempty()) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// See if the host is an IP address. |
if (host_info.family == url::CanonHostInfo::IPV6) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// If the user originally typed a host that looks like an IP address (a |
// dotted quad), they probably want to open it. If the original input was |
// something else (like a single number), they probably wanted to search for |
@@ -359,27 +367,27 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
// below. |
if ((host_info.family == url::CanonHostInfo::IPV4) && |
(host_info.num_ipv4_components == 4)) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// Presence of a password means this is likely a URL. Note that unless the |
// user has typed an explicit "http://" or similar, we'll probably think that |
// the username is some unknown scheme, and bail out in the scheme-handling |
// code above. |
if (parts->password.is_nonempty()) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// Trailing slashes force the input to be treated as a URL. |
if (parts->path.is_nonempty()) { |
char c = text[parts->path.end() - 1]; |
if ((c == '\\') || (c == '/')) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
} |
// If there is more than one recognized non-host component, this is likely to |
// be a URL, even if the TLD is unknown (in which case this is likely an |
// intranet URL). |
if (NumNonHostComponents(*parts) > 1) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// If the host has a known TLD or a port, it's probably a URL, with the |
// following exceptions: |
@@ -393,13 +401,14 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
if ((host_info.family != url::CanonHostInfo::IPV4) && |
((registry_length != 0) || (host == base::ASCIIToUTF16("localhost") || |
parts->port.is_nonempty()))) |
- return parts->username.is_nonempty() ? UNKNOWN : URL; |
+ return parts->username.is_nonempty() ? |
+ metrics::OmniboxInputType::UNKNOWN : metrics::OmniboxInputType::URL; |
// If we reach this point, we know there's no known TLD on the input, so if |
// the user wishes to add a desired_tld, the fixup code will oblige; thus this |
// is a URL. |
if (!desired_tld.empty()) |
- return URL; |
+ return metrics::OmniboxInputType::URL; |
// No scheme, password, port, path, and no known TLD on the host. |
// This could be: |
@@ -418,7 +427,7 @@ AutocompleteInput::Type AutocompleteInput::Parse( |
// QUERY. Since this is indistinguishable from the case above, and this |
// case is much more likely, claim these are UNKNOWN, which should default |
// to the right thing and let users correct us on a case-by-case basis. |
- return UNKNOWN; |
+ return metrics::OmniboxInputType::UNKNOWN; |
} |
// static |
@@ -523,7 +532,7 @@ void AutocompleteInput::Clear() { |
cursor_position_ = base::string16::npos; |
current_url_ = GURL(); |
current_page_classification_ = AutocompleteInput::INVALID_SPEC; |
- type_ = INVALID; |
+ type_ = metrics::OmniboxInputType::INVALID; |
parts_ = url::Parsed(); |
scheme_.clear(); |
canonicalized_url_ = GURL(); |