| Index: chrome/browser/autocomplete/search_provider_unittest.cc
|
| diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc
|
| index 0dbe4ca9b2c048b58d1cd3f687ccdd099b232133..2cb68a43cce360d9f77a20dff095c57beb6e5c96 100644
|
| --- a/chrome/browser/autocomplete/search_provider_unittest.cc
|
| +++ b/chrome/browser/autocomplete/search_provider_unittest.cc
|
| @@ -3025,146 +3025,159 @@ TEST_F(SearchProviderTest, NavigationInline) {
|
| // Some cases do not trim "http://" to match from the start of the scheme.
|
| const std::string fill_into_edit;
|
| const std::string inline_autocompletion;
|
| - const bool allowed_to_be_default_match;
|
| + const bool allowed_to_be_default_match_in_regular_mode;
|
| + const bool allowed_to_be_default_match_in_prevent_inline_mode;
|
| } cases[] = {
|
| // Do not inline matches that do not contain the input; trim http as needed.
|
| - { "x", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { "https:", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { "abc.com/", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| + { "x", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { "https:", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| { "http://www.abc.com/a", "http://www.abc.com",
|
| - "http://www.abc.com", std::string(), false },
|
| + "http://www.abc.com", std::string(), false,
|
| + false },
|
| { "http://www.abc.com", "https://www.abc.com",
|
| - "https://www.abc.com", std::string(), false },
|
| + "https://www.abc.com", std::string(), false,
|
| + false },
|
| { "http://abc.com", "ftp://abc.com",
|
| - "ftp://abc.com", std::string(), false },
|
| + "ftp://abc.com", std::string(), false,
|
| + false },
|
| { "https://www.abc.com", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| + "www.abc.com", std::string(), false,
|
| + false },
|
| { "ftp://abc.com", "http://abc.com",
|
| - "abc.com", std::string(), false },
|
| + "abc.com", std::string(), false,
|
| + false },
|
|
|
| // Do not inline matches with invalid input prefixes; trim http as needed.
|
| - { "ttp", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { "://w", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { "ww.", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { ".ab", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { "bc", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| - { ".com", "http://www.abc.com",
|
| - "www.abc.com", std::string(), false },
|
| + { "ttp", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { "://w", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { "ww.", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { ".ab", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { "bc", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
| + { ".com", "http://www.abc.com",
|
| + "www.abc.com", std::string(), false, false },
|
|
|
| // Do not inline matches that omit input domain labels; trim http as needed.
|
| - { "www.a", "http://a.com",
|
| - "a.com", std::string(), false },
|
| - { "http://www.a", "http://a.com",
|
| - "http://a.com", std::string(), false },
|
| - { "www.a", "ftp://a.com",
|
| - "ftp://a.com", std::string(), false },
|
| - { "ftp://www.a", "ftp://a.com",
|
| - "ftp://a.com", std::string(), false },
|
| + { "www.a", "http://a.com",
|
| + "a.com", std::string(), false, false },
|
| + { "http://www.a", "http://a.com",
|
| + "http://a.com", std::string(), false, false },
|
| + { "www.a", "ftp://a.com",
|
| + "ftp://a.com", std::string(), false, false },
|
| + { "ftp://www.a", "ftp://a.com",
|
| + "ftp://a.com", std::string(), false, false },
|
|
|
| // Input matching but with nothing to inline will not yield an offset, but
|
| // will be allowed to be default.
|
| - { "abc.com", "http://www.abc.com",
|
| - "www.abc.com", std::string(), true },
|
| - { "http://www.abc.com", "http://www.abc.com",
|
| - "http://www.abc.com", std::string(), true },
|
| + { "abc.com", "http://www.abc.com",
|
| + "www.abc.com", std::string(), true, true },
|
| + { "abc.com/", "http://www.abc.com",
|
| + "www.abc.com", std::string(), true, true },
|
| + { "http://www.abc.com", "http://www.abc.com",
|
| + "http://www.abc.com", std::string(), true, true },
|
| + { "http://www.abc.com/", "http://www.abc.com",
|
| + "http://www.abc.com", std::string(), true, true },
|
|
|
| // Inline matches when the input is a leading substring of the scheme.
|
| - { "h", "http://www.abc.com",
|
| - "http://www.abc.com", "ttp://www.abc.com", true },
|
| - { "http", "http://www.abc.com",
|
| - "http://www.abc.com", "://www.abc.com", true },
|
| + { "h", "http://www.abc.com",
|
| + "http://www.abc.com", "ttp://www.abc.com", true, false },
|
| + { "http", "http://www.abc.com",
|
| + "http://www.abc.com", "://www.abc.com", true, false },
|
|
|
| // Inline matches when the input is a leading substring of the full URL.
|
| - { "http:", "http://www.abc.com",
|
| - "http://www.abc.com", "//www.abc.com", true },
|
| - { "http://w", "http://www.abc.com",
|
| - "http://www.abc.com", "ww.abc.com", true },
|
| - { "http://www.", "http://www.abc.com",
|
| - "http://www.abc.com", "abc.com", true },
|
| - { "http://www.ab", "http://www.abc.com",
|
| - "http://www.abc.com", "c.com", true },
|
| + { "http:", "http://www.abc.com",
|
| + "http://www.abc.com", "//www.abc.com", true, false },
|
| + { "http://w", "http://www.abc.com",
|
| + "http://www.abc.com", "ww.abc.com", true, false },
|
| + { "http://www.", "http://www.abc.com",
|
| + "http://www.abc.com", "abc.com", true, false },
|
| + { "http://www.ab", "http://www.abc.com",
|
| + "http://www.abc.com", "c.com", true, false },
|
| { "http://www.abc.com/p", "http://www.abc.com/path/file.htm?q=x#foo",
|
| "http://www.abc.com/path/file.htm?q=x#foo",
|
| "ath/file.htm?q=x#foo",
|
| - true },
|
| + true, false },
|
| { "http://abc.com/p", "http://abc.com/path/file.htm?q=x#foo",
|
| "http://abc.com/path/file.htm?q=x#foo",
|
| - "ath/file.htm?q=x#foo", true},
|
| + "ath/file.htm?q=x#foo",
|
| + true, false},
|
|
|
| // Inline matches with valid URLPrefixes; only trim "http://".
|
| { "w", "http://www.abc.com",
|
| - "www.abc.com", "ww.abc.com", true },
|
| + "www.abc.com", "ww.abc.com", true, false },
|
| { "www.a", "http://www.abc.com",
|
| - "www.abc.com", "bc.com", true },
|
| + "www.abc.com", "bc.com", true, false },
|
| { "abc", "http://www.abc.com",
|
| - "www.abc.com", ".com", true },
|
| + "www.abc.com", ".com", true, false },
|
| { "abc.c", "http://www.abc.com",
|
| - "www.abc.com", "om", true },
|
| + "www.abc.com", "om", true, false },
|
| { "abc.com/p", "http://www.abc.com/path/file.htm?q=x#foo",
|
| "www.abc.com/path/file.htm?q=x#foo",
|
| - "ath/file.htm?q=x#foo", true },
|
| + "ath/file.htm?q=x#foo",
|
| + true, false },
|
| { "abc.com/p", "http://abc.com/path/file.htm?q=x#foo",
|
| "abc.com/path/file.htm?q=x#foo",
|
| - "ath/file.htm?q=x#foo", true },
|
| + "ath/file.htm?q=x#foo",
|
| + true, false },
|
|
|
| // Inline matches using the maximal URLPrefix components.
|
| { "h", "http://help.com",
|
| - "help.com", "elp.com", true },
|
| + "help.com", "elp.com", true, false },
|
| { "http", "http://http.com",
|
| - "http.com", ".com", true },
|
| + "http.com", ".com", true, false },
|
| { "h", "http://www.help.com",
|
| - "www.help.com", "elp.com", true },
|
| + "www.help.com", "elp.com", true, false },
|
| { "http", "http://www.http.com",
|
| - "www.http.com", ".com", true },
|
| + "www.http.com", ".com", true, false },
|
| { "w", "http://www.www.com",
|
| - "www.www.com", "ww.com", true },
|
| + "www.www.com", "ww.com", true, false },
|
|
|
| // Test similar behavior for the ftp and https schemes.
|
| - { "ftp://www.ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "www.ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "ab", "ftp://abc.com/path/file.htm?q=x#foo",
|
| - "ftp://abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| + { "ftp://www.ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| + { "www.ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| + { "ab", "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "ftp://www.abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| + { "ab", "ftp://abc.com/path/file.htm?q=x#foo",
|
| + "ftp://abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| { "https://www.ab", "https://www.abc.com/path/file.htm?q=x#foo",
|
| "https://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "www.ab", "https://www.abc.com/path/file.htm?q=x#foo",
|
| - "https://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "ab", "https://www.abc.com/path/file.htm?q=x#foo",
|
| - "https://www.abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| - { "ab", "https://abc.com/path/file.htm?q=x#foo",
|
| - "https://abc.com/path/file.htm?q=x#foo",
|
| - "c.com/path/file.htm?q=x#foo", true },
|
| + "c.com/path/file.htm?q=x#foo",
|
| + true, false },
|
| + { "www.ab", "https://www.abc.com/path/file.htm?q=x#foo",
|
| + "https://www.abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| + { "ab", "https://www.abc.com/path/file.htm?q=x#foo",
|
| + "https://www.abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
| + { "ab", "https://abc.com/path/file.htm?q=x#foo",
|
| + "https://abc.com/path/file.htm?q=x#foo",
|
| + "c.com/path/file.htm?q=x#foo", true, false },
|
|
|
| // Forced query input should inline and retain the "?" prefix.
|
| { "?http://www.ab", "http://www.abc.com",
|
| - "?http://www.abc.com", "c.com", true },
|
| + "?http://www.abc.com", "c.com", true, false },
|
| { "?www.ab", "http://www.abc.com",
|
| - "?www.abc.com", "c.com", true },
|
| + "?www.abc.com", "c.com", true, false },
|
| { "?ab", "http://www.abc.com",
|
| - "?www.abc.com", "c.com", true },
|
| + "?www.abc.com", "c.com", true, false },
|
| { "?abc.com", "http://www.abc.com",
|
| - "?www.abc.com", "", true },
|
| + "?www.abc.com", "", true, true },
|
| };
|
|
|
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); i++) {
|
| + // First test regular mode.
|
| QueryForInput(ASCIIToUTF16(cases[i].input), false, false);
|
| AutocompleteMatch match(
|
| provider_->NavigationToMatch(SearchProvider::NavigationResult(
|
| @@ -3173,8 +3186,21 @@ TEST_F(SearchProviderTest, NavigationInline) {
|
| EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion),
|
| match.inline_autocompletion);
|
| EXPECT_EQ(ASCIIToUTF16(cases[i].fill_into_edit), match.fill_into_edit);
|
| - EXPECT_EQ(cases[i].allowed_to_be_default_match,
|
| + EXPECT_EQ(cases[i].allowed_to_be_default_match_in_regular_mode,
|
| match.allowed_to_be_default_match);
|
| +
|
| + // Then test prevent-inline-autocomplete mode.
|
| + QueryForInput(ASCIIToUTF16(cases[i].input), true, false);
|
| + AutocompleteMatch match_prevent_inline(
|
| + provider_->NavigationToMatch(SearchProvider::NavigationResult(
|
| + *provider_.get(), GURL(cases[i].url), base::string16(), false, 0,
|
| + false, ASCIIToUTF16(cases[i].input), std::string())));
|
| + EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion),
|
| + match_prevent_inline.inline_autocompletion);
|
| + EXPECT_EQ(ASCIIToUTF16(cases[i].fill_into_edit),
|
| + match_prevent_inline.fill_into_edit);
|
| + EXPECT_EQ(cases[i].allowed_to_be_default_match_in_prevent_inline_mode,
|
| + match_prevent_inline.allowed_to_be_default_match);
|
| }
|
| }
|
|
|
| @@ -3194,11 +3220,10 @@ TEST_F(SearchProviderTest, NavigationInlineSchemeSubstring) {
|
| EXPECT_TRUE(match_inline.allowed_to_be_default_match);
|
| EXPECT_EQ(url, match_inline.contents);
|
|
|
| - // Check the same offset and strings when inline autocompletion is prevented.
|
| + // Check the same strings when inline autocompletion is prevented.
|
| QueryForInput(input, true, false);
|
| AutocompleteMatch match_prevent(provider_->NavigationToMatch(result));
|
| EXPECT_EQ(url, match_prevent.fill_into_edit);
|
| - EXPECT_TRUE(match_prevent.inline_autocompletion.empty());
|
| EXPECT_FALSE(match_prevent.allowed_to_be_default_match);
|
| EXPECT_EQ(url, match_prevent.contents);
|
| }
|
|
|