OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/omnibox/search_provider.h" | 5 #include "components/omnibox/search_provider.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 // With suggested relevance scores in a situation where navsuggest | 790 // With suggested relevance scores in a situation where navsuggest |
791 // would go first only because verbatim has been demoted. | 791 // would go first only because verbatim has been demoted. |
792 { "[\"a\",[\"http://a1.com\", \"a2\"],[],[]," | 792 { "[\"a\",[\"http://a1.com\", \"a2\"],[],[]," |
793 "{\"google:suggesttype\":[\"NAVIGATION\", \"QUERY\"]," | 793 "{\"google:suggesttype\":[\"NAVIGATION\", \"QUERY\"]," |
794 "\"google:suggestrelevance\":[1450, 1400]," | 794 "\"google:suggestrelevance\":[1450, 1400]," |
795 "\"google:verbatimrelevance\":1350}]", | 795 "\"google:verbatimrelevance\":1350}]", |
796 { "a1.com", "a2", "a" }, | 796 { "a1.com", "a2", "a" }, |
797 { "a2", "a", kEmptyMatch } }, | 797 { "a2", "a", kEmptyMatch } }, |
798 }; | 798 }; |
799 | 799 |
800 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 800 for (size_t i = 0; i < arraysize(cases); ++i) { |
801 ForcedQueryTestHelper("a", cases[i].json, cases[i].matches_in_default_mode, | 801 ForcedQueryTestHelper("a", cases[i].json, cases[i].matches_in_default_mode, |
802 "regular input with json=" + cases[i].json); | 802 "regular input with json=" + cases[i].json); |
803 ForcedQueryTestHelper("?a", cases[i].json, | 803 ForcedQueryTestHelper("?a", cases[i].json, |
804 cases[i].matches_in_forced_query_mode, | 804 cases[i].matches_in_forced_query_mode, |
805 "forced query input with json=" + cases[i].json); | 805 "forced query input with json=" + cases[i].json); |
806 } | 806 } |
807 } | 807 } |
808 | 808 |
809 // A multiword search with one visit should not autocomplete until multiple | 809 // A multiword search with one visit should not autocomplete until multiple |
810 // words are typed. | 810 // words are typed. |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 { "[\"k a\",[\"k adefault-query\", \"adefault.com\"],[],[]," | 1240 { "[\"k a\",[\"k adefault-query\", \"adefault.com\"],[],[]," |
1241 "{\"google:verbatimrelevance\":9700," | 1241 "{\"google:verbatimrelevance\":9700," |
1242 "\"google:suggesttype\":[\"QUERY\", \"NAVIGATION\"]," | 1242 "\"google:suggesttype\":[\"QUERY\", \"NAVIGATION\"]," |
1243 "\"google:suggestrelevance\":[9900, 9800]}]", | 1243 "\"google:suggestrelevance\":[9900, 9800]}]", |
1244 "[\"a\",[\"akeyword-query\"],[],[],{\"google:suggesttype\":[\"QUERY\"]," | 1244 "[\"a\",[\"akeyword-query\"],[],[],{\"google:suggesttype\":[\"QUERY\"]," |
1245 "\"google:verbatimrelevance\":9500," | 1245 "\"google:verbatimrelevance\":9500," |
1246 "\"google:suggestrelevance\":[9600]}]", | 1246 "\"google:suggestrelevance\":[9600]}]", |
1247 { "akeyword-query", "a", "k a", "adefault.com", "k adefault-query" } } | 1247 { "akeyword-query", "a", "k a", "adefault.com", "k adefault-query" } } |
1248 }; | 1248 }; |
1249 | 1249 |
1250 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 1250 for (size_t i = 0; i < arraysize(cases); ++i) { |
1251 // Send the query twice in order to have a synchronous pass after the first | 1251 // Send the query twice in order to have a synchronous pass after the first |
1252 // response is received. This is necessary because SearchProvider doesn't | 1252 // response is received. This is necessary because SearchProvider doesn't |
1253 // allow an asynchronous response to change the default match. | 1253 // allow an asynchronous response to change the default match. |
1254 for (size_t j = 0; j < 2; ++j) { | 1254 for (size_t j = 0; j < 2; ++j) { |
1255 QueryForInputAndWaitForFetcherResponses( | 1255 QueryForInputAndWaitForFetcherResponses( |
1256 ASCIIToUTF16("k a"), true, cases[i].default_provider_json, | 1256 ASCIIToUTF16("k a"), true, cases[i].default_provider_json, |
1257 cases[i].keyword_provider_json); | 1257 cases[i].keyword_provider_json); |
1258 } | 1258 } |
1259 | 1259 |
1260 SCOPED_TRACE( | 1260 SCOPED_TRACE( |
1261 "for input with default_provider_json=" + | 1261 "for input with default_provider_json=" + |
1262 cases[i].default_provider_json + " and keyword_provider_json=" + | 1262 cases[i].default_provider_json + " and keyword_provider_json=" + |
1263 cases[i].keyword_provider_json); | 1263 cases[i].keyword_provider_json); |
1264 const ACMatches& matches = provider_->matches(); | 1264 const ACMatches& matches = provider_->matches(); |
1265 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 1265 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
1266 size_t j = 0; | 1266 size_t j = 0; |
1267 // Ensure that the returned matches equal the expectations. | 1267 // Ensure that the returned matches equal the expectations. |
1268 for (; j < matches.size(); ++j) | 1268 for (; j < matches.size(); ++j) |
1269 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j]), matches[j].contents); | 1269 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j]), matches[j].contents); |
1270 // Ensure that no expected matches are missing. | 1270 // Ensure that no expected matches are missing. |
1271 for (; j < ARRAYSIZE_UNSAFE(cases[i].matches); ++j) | 1271 for (; j < arraysize(cases[i].matches); ++j) |
1272 EXPECT_EQ(std::string(), cases[i].matches[j]); | 1272 EXPECT_EQ(std::string(), cases[i].matches[j]); |
1273 } | 1273 } |
1274 } | 1274 } |
1275 | 1275 |
1276 // Verifies that suggest results with relevance scores are added | 1276 // Verifies that suggest results with relevance scores are added |
1277 // properly when using the default fetcher. When adding a new test | 1277 // properly when using the default fetcher. When adding a new test |
1278 // case to this test, please consider adding it to the tests in | 1278 // case to this test, please consider adding it to the tests in |
1279 // KeywordFetcherSuggestRelevance below. | 1279 // KeywordFetcherSuggestRelevance below. |
1280 TEST_F(SearchProviderTest, DefaultFetcherSuggestRelevance) { | 1280 TEST_F(SearchProviderTest, DefaultFetcherSuggestRelevance) { |
1281 struct { | 1281 struct { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1485 { "[\"a\",[],[],[],{\"google:verbatimrelevance\":1}]", | 1485 { "[\"a\",[],[],[],{\"google:verbatimrelevance\":1}]", |
1486 { { "a", true }, kEmptyExpectedMatch, kEmptyExpectedMatch, | 1486 { { "a", true }, kEmptyExpectedMatch, kEmptyExpectedMatch, |
1487 kEmptyExpectedMatch, kEmptyExpectedMatch, kEmptyExpectedMatch }, | 1487 kEmptyExpectedMatch, kEmptyExpectedMatch, kEmptyExpectedMatch }, |
1488 std::string() }, | 1488 std::string() }, |
1489 { "[\"a\",[],[],[],{\"google:verbatimrelevance\":0}]", | 1489 { "[\"a\",[],[],[],{\"google:verbatimrelevance\":0}]", |
1490 { { "a", true }, kEmptyExpectedMatch, kEmptyExpectedMatch, | 1490 { { "a", true }, kEmptyExpectedMatch, kEmptyExpectedMatch, |
1491 kEmptyExpectedMatch, kEmptyExpectedMatch, kEmptyExpectedMatch }, | 1491 kEmptyExpectedMatch, kEmptyExpectedMatch, kEmptyExpectedMatch }, |
1492 std::string() }, | 1492 std::string() }, |
1493 }; | 1493 }; |
1494 | 1494 |
1495 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 1495 for (size_t i = 0; i < arraysize(cases); ++i) { |
1496 // Send the query twice in order to have a synchronous pass after the first | 1496 // Send the query twice in order to have a synchronous pass after the first |
1497 // response is received. This is necessary because SearchProvider doesn't | 1497 // response is received. This is necessary because SearchProvider doesn't |
1498 // allow an asynchronous response to change the default match. | 1498 // allow an asynchronous response to change the default match. |
1499 for (size_t j = 0; j < 2; ++j) { | 1499 for (size_t j = 0; j < 2; ++j) { |
1500 QueryForInputAndWaitForFetcherResponses( | 1500 QueryForInputAndWaitForFetcherResponses( |
1501 ASCIIToUTF16("a"), false, cases[i].json, std::string()); | 1501 ASCIIToUTF16("a"), false, cases[i].json, std::string()); |
1502 } | 1502 } |
1503 | 1503 |
1504 const std::string description = "for input with json=" + cases[i].json; | 1504 const std::string description = "for input with json=" + cases[i].json; |
1505 CheckMatches(description, ARRAYSIZE_UNSAFE(cases[i].matches), | 1505 CheckMatches(description, arraysize(cases[i].matches), cases[i].matches, |
1506 cases[i].matches, provider_->matches()); | 1506 provider_->matches()); |
1507 } | 1507 } |
1508 } | 1508 } |
1509 | 1509 |
1510 // Verifies that suggest results with relevance scores are added | 1510 // Verifies that suggest results with relevance scores are added |
1511 // properly when using the keyword fetcher. This is similar to the | 1511 // properly when using the keyword fetcher. This is similar to the |
1512 // test DefaultFetcherSuggestRelevance above but this uses inputs that | 1512 // test DefaultFetcherSuggestRelevance above but this uses inputs that |
1513 // trigger keyword suggestions (i.e., "k a" rather than "a") and has | 1513 // trigger keyword suggestions (i.e., "k a" rather than "a") and has |
1514 // different expectations (because now the results are a mix of | 1514 // different expectations (because now the results are a mix of |
1515 // keyword suggestions and default provider suggestions). When a new | 1515 // keyword suggestions and default provider suggestions). When a new |
1516 // test is added to this TEST_F, please consider if it would be | 1516 // test is added to this TEST_F, please consider if it would be |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1917 "\"google:suggestrelevance\":[9998, 9997, 9999]}]", | 1917 "\"google:suggestrelevance\":[9998, 9997, 9999]}]", |
1918 { { "a3", true, true }, | 1918 { { "a3", true, true }, |
1919 { "a1.com", false, false }, | 1919 { "a1.com", false, false }, |
1920 { "a2.com", false, false }, | 1920 { "a2.com", false, false }, |
1921 { "a", true, true }, | 1921 { "a", true, true }, |
1922 { "k a", false, false }, | 1922 { "k a", false, false }, |
1923 kEmptyMatch }, | 1923 kEmptyMatch }, |
1924 "3" }, | 1924 "3" }, |
1925 }; | 1925 }; |
1926 | 1926 |
1927 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 1927 for (size_t i = 0; i < arraysize(cases); ++i) { |
1928 // Send the query twice in order to have a synchronous pass after the first | 1928 // Send the query twice in order to have a synchronous pass after the first |
1929 // response is received. This is necessary because SearchProvider doesn't | 1929 // response is received. This is necessary because SearchProvider doesn't |
1930 // allow an asynchronous response to change the default match. | 1930 // allow an asynchronous response to change the default match. |
1931 for (size_t j = 0; j < 2; ++j) { | 1931 for (size_t j = 0; j < 2; ++j) { |
1932 QueryForInput(ASCIIToUTF16("k a"), false, true); | 1932 QueryForInput(ASCIIToUTF16("k a"), false, true); |
1933 | 1933 |
1934 // Set up a default fetcher with no results. | 1934 // Set up a default fetcher with no results. |
1935 net::TestURLFetcher* default_fetcher = | 1935 net::TestURLFetcher* default_fetcher = |
1936 test_factory_.GetFetcherByID( | 1936 test_factory_.GetFetcherByID( |
1937 SearchProvider::kDefaultProviderURLFetcherID); | 1937 SearchProvider::kDefaultProviderURLFetcherID); |
(...skipping 17 matching lines...) Expand all Loading... |
1955 SCOPED_TRACE("for input with json=" + cases[i].json); | 1955 SCOPED_TRACE("for input with json=" + cases[i].json); |
1956 const ACMatches& matches = provider_->matches(); | 1956 const ACMatches& matches = provider_->matches(); |
1957 ASSERT_FALSE(matches.empty()); | 1957 ASSERT_FALSE(matches.empty()); |
1958 // Find the first match that's allowed to be the default match and check | 1958 // Find the first match that's allowed to be the default match and check |
1959 // its inline_autocompletion. | 1959 // its inline_autocompletion. |
1960 ACMatches::const_iterator it = FindDefaultMatch(matches); | 1960 ACMatches::const_iterator it = FindDefaultMatch(matches); |
1961 ASSERT_NE(matches.end(), it); | 1961 ASSERT_NE(matches.end(), it); |
1962 EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion), | 1962 EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion), |
1963 it->inline_autocompletion); | 1963 it->inline_autocompletion); |
1964 | 1964 |
1965 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 1965 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
1966 size_t j = 0; | 1966 size_t j = 0; |
1967 // Ensure that the returned matches equal the expectations. | 1967 // Ensure that the returned matches equal the expectations. |
1968 for (; j < matches.size(); ++j) { | 1968 for (; j < matches.size(); ++j) { |
1969 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j].contents), | 1969 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j].contents), |
1970 matches[j].contents); | 1970 matches[j].contents); |
1971 EXPECT_EQ(cases[i].matches[j].from_keyword, | 1971 EXPECT_EQ(cases[i].matches[j].from_keyword, |
1972 matches[j].keyword == ASCIIToUTF16("k")); | 1972 matches[j].keyword == ASCIIToUTF16("k")); |
1973 EXPECT_EQ(cases[i].matches[j].allowed_to_be_default_match, | 1973 EXPECT_EQ(cases[i].matches[j].allowed_to_be_default_match, |
1974 matches[j].allowed_to_be_default_match); | 1974 matches[j].allowed_to_be_default_match); |
1975 } | 1975 } |
1976 // Ensure that no expected matches are missing. | 1976 // Ensure that no expected matches are missing. |
1977 for (; j < ARRAYSIZE_UNSAFE(cases[i].matches); ++j) { | 1977 for (; j < arraysize(cases[i].matches); ++j) { |
1978 SCOPED_TRACE(" Case # " + base::IntToString(i)); | 1978 SCOPED_TRACE(" Case # " + base::IntToString(i)); |
1979 EXPECT_EQ(kNotApplicable, cases[i].matches[j].contents); | 1979 EXPECT_EQ(kNotApplicable, cases[i].matches[j].contents); |
1980 } | 1980 } |
1981 } | 1981 } |
1982 } | 1982 } |
1983 | 1983 |
1984 TEST_F(SearchProviderTest, DontInlineAutocompleteAsynchronously) { | 1984 TEST_F(SearchProviderTest, DontInlineAutocompleteAsynchronously) { |
1985 // This test sends two separate queries, each receiving different JSON | 1985 // This test sends two separate queries, each receiving different JSON |
1986 // replies, and checks that at each stage of processing (receiving first | 1986 // replies, and checks that at each stage of processing (receiving first |
1987 // asynchronous response, handling new keystroke synchronously / sending the | 1987 // asynchronous response, handling new keystroke synchronously / sending the |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2155 kEmptyExpectedMatch }, | 2155 kEmptyExpectedMatch }, |
2156 { { "ab1", true }, { "ab2", true }, { "ab", true }, | 2156 { { "ab1", true }, { "ab2", true }, { "ab", true }, |
2157 kEmptyExpectedMatch }, | 2157 kEmptyExpectedMatch }, |
2158 "[\"ab\",[\"ab1\", \"ab3\"],[],[]," | 2158 "[\"ab\",[\"ab1\", \"ab3\"],[],[]," |
2159 "{\"google:verbatimrelevance\":9000," | 2159 "{\"google:verbatimrelevance\":9000," |
2160 "\"google:suggestrelevance\":[8000, 9500]}]", | 2160 "\"google:suggestrelevance\":[8000, 9500]}]", |
2161 { { "ab", true }, { "ab3", false }, { "ab1", true }, | 2161 { { "ab", true }, { "ab3", false }, { "ab1", true }, |
2162 kEmptyExpectedMatch } }, | 2162 kEmptyExpectedMatch } }, |
2163 }; | 2163 }; |
2164 | 2164 |
2165 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2165 for (size_t i = 0; i < arraysize(cases); ++i) { |
2166 // First, send the query "a" and receive the JSON response |first_json|. | 2166 // First, send the query "a" and receive the JSON response |first_json|. |
2167 ClearAllResults(); | 2167 ClearAllResults(); |
2168 QueryForInputAndWaitForFetcherResponses( | 2168 QueryForInputAndWaitForFetcherResponses( |
2169 ASCIIToUTF16("a"), false, cases[i].first_json, std::string()); | 2169 ASCIIToUTF16("a"), false, cases[i].first_json, std::string()); |
2170 | 2170 |
2171 // Verify that the matches after the asynchronous results are as expected. | 2171 // Verify that the matches after the asynchronous results are as expected. |
2172 std::string description = "first asynchronous response for input with " | 2172 std::string description = "first asynchronous response for input with " |
2173 "first_json=" + cases[i].first_json; | 2173 "first_json=" + cases[i].first_json; |
2174 CheckMatches(description, ARRAYSIZE_UNSAFE(cases[i].first_async_matches), | 2174 CheckMatches(description, arraysize(cases[i].first_async_matches), |
2175 cases[i].first_async_matches, provider_->matches()); | 2175 cases[i].first_async_matches, provider_->matches()); |
2176 | 2176 |
2177 // Then, send the query "ab" and check the synchronous matches. | 2177 // Then, send the query "ab" and check the synchronous matches. |
2178 description = "synchronous response after the first keystroke after input " | 2178 description = "synchronous response after the first keystroke after input " |
2179 "with first_json=" + cases[i].first_json; | 2179 "with first_json=" + cases[i].first_json; |
2180 QueryForInput(ASCIIToUTF16("ab"), false, false); | 2180 QueryForInput(ASCIIToUTF16("ab"), false, false); |
2181 CheckMatches(description, ARRAYSIZE_UNSAFE(cases[i].sync_matches), | 2181 CheckMatches(description, arraysize(cases[i].sync_matches), |
2182 cases[i].sync_matches, provider_->matches()); | 2182 cases[i].sync_matches, provider_->matches()); |
2183 | 2183 |
2184 // Finally, get the provided JSON response, |second_json|, and verify the | 2184 // Finally, get the provided JSON response, |second_json|, and verify the |
2185 // matches after the second asynchronous response are as expected. | 2185 // matches after the second asynchronous response are as expected. |
2186 description = "second asynchronous response after input with first_json=" + | 2186 description = "second asynchronous response after input with first_json=" + |
2187 cases[i].first_json + " and second_json=" + cases[i].second_json; | 2187 cases[i].first_json + " and second_json=" + cases[i].second_json; |
2188 net::TestURLFetcher* second_fetcher = | 2188 net::TestURLFetcher* second_fetcher = |
2189 test_factory_.GetFetcherByID( | 2189 test_factory_.GetFetcherByID( |
2190 SearchProvider::kDefaultProviderURLFetcherID); | 2190 SearchProvider::kDefaultProviderURLFetcherID); |
2191 ASSERT_TRUE(second_fetcher); | 2191 ASSERT_TRUE(second_fetcher); |
2192 second_fetcher->set_response_code(200); | 2192 second_fetcher->set_response_code(200); |
2193 second_fetcher->SetResponseString(cases[i].second_json); | 2193 second_fetcher->SetResponseString(cases[i].second_json); |
2194 second_fetcher->delegate()->OnURLFetchComplete(second_fetcher); | 2194 second_fetcher->delegate()->OnURLFetchComplete(second_fetcher); |
2195 RunTillProviderDone(); | 2195 RunTillProviderDone(); |
2196 CheckMatches(description, ARRAYSIZE_UNSAFE(cases[i].second_async_matches), | 2196 CheckMatches(description, arraysize(cases[i].second_async_matches), |
2197 cases[i].second_async_matches, provider_->matches()); | 2197 cases[i].second_async_matches, provider_->matches()); |
2198 } | 2198 } |
2199 } | 2199 } |
2200 | 2200 |
2201 TEST_F(SearchProviderTest, LocalAndRemoteRelevances) { | 2201 TEST_F(SearchProviderTest, LocalAndRemoteRelevances) { |
2202 // We hardcode the string "term1" below, so ensure that the search term that | 2202 // We hardcode the string "term1" below, so ensure that the search term that |
2203 // got added to history already is that string. | 2203 // got added to history already is that string. |
2204 ASSERT_EQ(ASCIIToUTF16("term1"), term1_); | 2204 ASSERT_EQ(ASCIIToUTF16("term1"), term1_); |
2205 base::string16 term = term1_.substr(0, term1_.length() - 1); | 2205 base::string16 term = term1_.substr(0, term1_.length() - 1); |
2206 | 2206 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2251 "\"google:suggestrelevance\":[1440, 1430, 1420, 1410, 1400, 1390]}]", | 2251 "\"google:suggestrelevance\":[1440, 1430, 1420, 1410, 1400, 1390]}]", |
2252 { "term", "a1", "a2", "a3", "a4", "a5" } }, | 2252 { "term", "a1", "a2", "a3", "a4", "a5" } }, |
2253 { term, | 2253 { term, |
2254 "[\"term\",[\"a1\", \"a2\", \"a3\", \"a4\"],[],[]," | 2254 "[\"term\",[\"a1\", \"a2\", \"a3\", \"a4\"],[],[]," |
2255 "{\"google:suggesttype\":[\"QUERY\", \"QUERY\", \"QUERY\", \"QUERY\"]," | 2255 "{\"google:suggesttype\":[\"QUERY\", \"QUERY\", \"QUERY\", \"QUERY\"]," |
2256 "\"google:verbatimrelevance\":1450," | 2256 "\"google:verbatimrelevance\":1450," |
2257 "\"google:suggestrelevance\":[1430, 1410, 1390, 1370]}]", | 2257 "\"google:suggestrelevance\":[1430, 1410, 1390, 1370]}]", |
2258 { "term", "a1", "a2", "term2", "a3", "a4" } } | 2258 { "term", "a1", "a2", "term2", "a3", "a4" } } |
2259 }; | 2259 }; |
2260 | 2260 |
2261 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2261 for (size_t i = 0; i < arraysize(cases); ++i) { |
2262 QueryForInputAndWaitForFetcherResponses( | 2262 QueryForInputAndWaitForFetcherResponses( |
2263 cases[i].input, false, cases[i].json, std::string()); | 2263 cases[i].input, false, cases[i].json, std::string()); |
2264 | 2264 |
2265 const std::string description = "for input with json=" + cases[i].json; | 2265 const std::string description = "for input with json=" + cases[i].json; |
2266 const ACMatches& matches = provider_->matches(); | 2266 const ACMatches& matches = provider_->matches(); |
2267 | 2267 |
2268 // Ensure no extra matches are present. | 2268 // Ensure no extra matches are present. |
2269 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 2269 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
2270 | 2270 |
2271 size_t j = 0; | 2271 size_t j = 0; |
2272 // Ensure that the returned matches equal the expectations. | 2272 // Ensure that the returned matches equal the expectations. |
2273 for (; j < matches.size(); ++j) | 2273 for (; j < matches.size(); ++j) |
2274 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j]), | 2274 EXPECT_EQ(ASCIIToUTF16(cases[i].matches[j]), |
2275 matches[j].contents) << description; | 2275 matches[j].contents) << description; |
2276 // Ensure that no expected matches are missing. | 2276 // Ensure that no expected matches are missing. |
2277 for (; j < ARRAYSIZE_UNSAFE(cases[i].matches); ++j) | 2277 for (; j < arraysize(cases[i].matches); ++j) |
2278 EXPECT_EQ(kNotApplicable, cases[i].matches[j]) << | 2278 EXPECT_EQ(kNotApplicable, cases[i].matches[j]) << |
2279 "Case # " << i << " " << description; | 2279 "Case # " << i << " " << description; |
2280 } | 2280 } |
2281 } | 2281 } |
2282 | 2282 |
2283 // Verifies suggest relevance behavior for URL input. | 2283 // Verifies suggest relevance behavior for URL input. |
2284 TEST_F(SearchProviderTest, DefaultProviderSuggestRelevanceScoringUrlInput) { | 2284 TEST_F(SearchProviderTest, DefaultProviderSuggestRelevanceScoringUrlInput) { |
2285 struct DefaultFetcherUrlInputMatch { | 2285 struct DefaultFetcherUrlInputMatch { |
2286 const std::string match_contents; | 2286 const std::string match_contents; |
2287 AutocompleteMatch::Type match_type; | 2287 AutocompleteMatch::Type match_type; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2363 { { "a.com", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, true }, | 2363 { { "a.com", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, true }, |
2364 { "info", AutocompleteMatchType::SEARCH_SUGGEST, false }, | 2364 { "info", AutocompleteMatchType::SEARCH_SUGGEST, false }, |
2365 kEmptyMatch, kEmptyMatch } }, | 2365 kEmptyMatch, kEmptyMatch } }, |
2366 { "a.com", "[\"a.com\",[\"info\"],[],[]," | 2366 { "a.com", "[\"a.com\",[\"info\"],[],[]," |
2367 "{\"google:suggestrelevance\":[9999]}]", | 2367 "{\"google:suggestrelevance\":[9999]}]", |
2368 { { "a.com", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, true }, | 2368 { { "a.com", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, true }, |
2369 { "info", AutocompleteMatchType::SEARCH_SUGGEST, false }, | 2369 { "info", AutocompleteMatchType::SEARCH_SUGGEST, false }, |
2370 kEmptyMatch, kEmptyMatch } }, | 2370 kEmptyMatch, kEmptyMatch } }, |
2371 }; | 2371 }; |
2372 | 2372 |
2373 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2373 for (size_t i = 0; i < arraysize(cases); ++i) { |
2374 // Send the query twice in order to have a synchronous pass after the first | 2374 // Send the query twice in order to have a synchronous pass after the first |
2375 // response is received. This is necessary because SearchProvider doesn't | 2375 // response is received. This is necessary because SearchProvider doesn't |
2376 // allow an asynchronous response to change the default match. | 2376 // allow an asynchronous response to change the default match. |
2377 for (size_t j = 0; j < 2; ++j) { | 2377 for (size_t j = 0; j < 2; ++j) { |
2378 QueryForInputAndWaitForFetcherResponses( | 2378 QueryForInputAndWaitForFetcherResponses( |
2379 ASCIIToUTF16(cases[i].input), false, cases[i].json, std::string()); | 2379 ASCIIToUTF16(cases[i].input), false, cases[i].json, std::string()); |
2380 } | 2380 } |
2381 | 2381 |
2382 SCOPED_TRACE("input=" + cases[i].input + " json=" + cases[i].json); | 2382 SCOPED_TRACE("input=" + cases[i].input + " json=" + cases[i].json); |
2383 size_t j = 0; | 2383 size_t j = 0; |
2384 const ACMatches& matches = provider_->matches(); | 2384 const ACMatches& matches = provider_->matches(); |
2385 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].output)); | 2385 ASSERT_LE(matches.size(), arraysize(cases[i].output)); |
2386 // Ensure that the returned matches equal the expectations. | 2386 // Ensure that the returned matches equal the expectations. |
2387 for (; j < matches.size(); ++j) { | 2387 for (; j < matches.size(); ++j) { |
2388 EXPECT_EQ(ASCIIToUTF16(cases[i].output[j].match_contents), | 2388 EXPECT_EQ(ASCIIToUTF16(cases[i].output[j].match_contents), |
2389 matches[j].contents); | 2389 matches[j].contents); |
2390 EXPECT_EQ(cases[i].output[j].match_type, matches[j].type); | 2390 EXPECT_EQ(cases[i].output[j].match_type, matches[j].type); |
2391 EXPECT_EQ(cases[i].output[j].allowed_to_be_default_match, | 2391 EXPECT_EQ(cases[i].output[j].allowed_to_be_default_match, |
2392 matches[j].allowed_to_be_default_match); | 2392 matches[j].allowed_to_be_default_match); |
2393 } | 2393 } |
2394 // Ensure that no expected matches are missing. | 2394 // Ensure that no expected matches are missing. |
2395 for (; j < ARRAYSIZE_UNSAFE(cases[i].output); ++j) { | 2395 for (; j < arraysize(cases[i].output); ++j) { |
2396 EXPECT_EQ(kNotApplicable, cases[i].output[j].match_contents); | 2396 EXPECT_EQ(kNotApplicable, cases[i].output[j].match_contents); |
2397 EXPECT_EQ(AutocompleteMatchType::NUM_TYPES, | 2397 EXPECT_EQ(AutocompleteMatchType::NUM_TYPES, |
2398 cases[i].output[j].match_type); | 2398 cases[i].output[j].match_type); |
2399 EXPECT_FALSE(cases[i].output[j].allowed_to_be_default_match); | 2399 EXPECT_FALSE(cases[i].output[j].allowed_to_be_default_match); |
2400 } | 2400 } |
2401 } | 2401 } |
2402 } | 2402 } |
2403 | 2403 |
2404 // A basic test that verifies the field trial triggered parsing logic. | 2404 // A basic test that verifies the field trial triggered parsing logic. |
2405 TEST_F(SearchProviderTest, FieldTrialTriggeredParsing) { | 2405 TEST_F(SearchProviderTest, FieldTrialTriggeredParsing) { |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2587 { "?http://www.ab", "http://www.abc.com", | 2587 { "?http://www.ab", "http://www.abc.com", |
2588 "?http://www.abc.com", "c.com", true, false }, | 2588 "?http://www.abc.com", "c.com", true, false }, |
2589 { "?www.ab", "http://www.abc.com", | 2589 { "?www.ab", "http://www.abc.com", |
2590 "?www.abc.com", "c.com", true, false }, | 2590 "?www.abc.com", "c.com", true, false }, |
2591 { "?ab", "http://www.abc.com", | 2591 { "?ab", "http://www.abc.com", |
2592 "?www.abc.com", "c.com", true, false }, | 2592 "?www.abc.com", "c.com", true, false }, |
2593 { "?abc.com", "http://www.abc.com", | 2593 { "?abc.com", "http://www.abc.com", |
2594 "?www.abc.com", std::string(), true, true }, | 2594 "?www.abc.com", std::string(), true, true }, |
2595 }; | 2595 }; |
2596 | 2596 |
2597 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2597 for (size_t i = 0; i < arraysize(cases); ++i) { |
2598 // First test regular mode. | 2598 // First test regular mode. |
2599 QueryForInput(ASCIIToUTF16(cases[i].input), false, false); | 2599 QueryForInput(ASCIIToUTF16(cases[i].input), false, false); |
2600 SearchSuggestionParser::NavigationResult result( | 2600 SearchSuggestionParser::NavigationResult result( |
2601 ChromeAutocompleteSchemeClassifier(&profile_), GURL(cases[i].url), | 2601 ChromeAutocompleteSchemeClassifier(&profile_), GURL(cases[i].url), |
2602 AutocompleteMatchType::NAVSUGGEST, base::string16(), std::string(), | 2602 AutocompleteMatchType::NAVSUGGEST, base::string16(), std::string(), |
2603 false, 0, false, ASCIIToUTF16(cases[i].input), std::string()); | 2603 false, 0, false, ASCIIToUTF16(cases[i].input), std::string()); |
2604 result.set_received_after_last_keystroke(false); | 2604 result.set_received_after_last_keystroke(false); |
2605 AutocompleteMatch match(provider_->NavigationToMatch(result)); | 2605 AutocompleteMatch match(provider_->NavigationToMatch(result)); |
2606 EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion), | 2606 EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion), |
2607 match.inline_autocompletion); | 2607 match.inline_autocompletion); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2723 "\"google:suggesttype\":[\"QUERY\",\"ENTITY\"]}]", | 2723 "\"google:suggesttype\":[\"QUERY\",\"ENTITY\"]}]", |
2724 { { "x", "", "", "x", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, | 2724 { { "x", "", "", "x", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, |
2725 { "xy", "", "", "xy", AutocompleteMatchType::SEARCH_SUGGEST }, | 2725 { "xy", "", "", "xy", AutocompleteMatchType::SEARCH_SUGGEST }, |
2726 { "xy", "A", "p=v", "xy", | 2726 { "xy", "A", "p=v", "xy", |
2727 AutocompleteMatchType::SEARCH_SUGGEST_ENTITY }, | 2727 AutocompleteMatchType::SEARCH_SUGGEST_ENTITY }, |
2728 kEmptyMatch, | 2728 kEmptyMatch, |
2729 kEmptyMatch | 2729 kEmptyMatch |
2730 }, | 2730 }, |
2731 }, | 2731 }, |
2732 }; | 2732 }; |
2733 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2733 for (size_t i = 0; i < arraysize(cases); ++i) { |
2734 QueryForInputAndWaitForFetcherResponses( | 2734 QueryForInputAndWaitForFetcherResponses( |
2735 ASCIIToUTF16(cases[i].input_text), false, cases[i].response_json, | 2735 ASCIIToUTF16(cases[i].input_text), false, cases[i].response_json, |
2736 std::string()); | 2736 std::string()); |
2737 | 2737 |
2738 const ACMatches& matches = provider_->matches(); | 2738 const ACMatches& matches = provider_->matches(); |
2739 ASSERT_FALSE(matches.empty()); | 2739 ASSERT_FALSE(matches.empty()); |
2740 | 2740 |
2741 SCOPED_TRACE("for input with json = " + cases[i].response_json); | 2741 SCOPED_TRACE("for input with json = " + cases[i].response_json); |
2742 | 2742 |
2743 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 2743 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
2744 size_t j = 0; | 2744 size_t j = 0; |
2745 // Ensure that the returned matches equal the expectations. | 2745 // Ensure that the returned matches equal the expectations. |
2746 for (; j < matches.size(); ++j) { | 2746 for (; j < matches.size(); ++j) { |
2747 const Match& match = cases[i].matches[j]; | 2747 const Match& match = cases[i].matches[j]; |
2748 SCOPED_TRACE(" and match index: " + base::IntToString(j)); | 2748 SCOPED_TRACE(" and match index: " + base::IntToString(j)); |
2749 EXPECT_EQ(match.contents, | 2749 EXPECT_EQ(match.contents, |
2750 base::UTF16ToUTF8(matches[j].contents)); | 2750 base::UTF16ToUTF8(matches[j].contents)); |
2751 EXPECT_EQ(match.description, | 2751 EXPECT_EQ(match.description, |
2752 base::UTF16ToUTF8(matches[j].description)); | 2752 base::UTF16ToUTF8(matches[j].description)); |
2753 EXPECT_EQ(match.query_params, | 2753 EXPECT_EQ(match.query_params, |
2754 matches[j].search_terms_args->suggest_query_params); | 2754 matches[j].search_terms_args->suggest_query_params); |
2755 EXPECT_EQ(match.fill_into_edit, | 2755 EXPECT_EQ(match.fill_into_edit, |
2756 base::UTF16ToUTF8(matches[j].fill_into_edit)); | 2756 base::UTF16ToUTF8(matches[j].fill_into_edit)); |
2757 EXPECT_EQ(match.type, matches[j].type); | 2757 EXPECT_EQ(match.type, matches[j].type); |
2758 } | 2758 } |
2759 // Ensure that no expected matches are missing. | 2759 // Ensure that no expected matches are missing. |
2760 for (; j < ARRAYSIZE_UNSAFE(cases[i].matches); ++j) { | 2760 for (; j < arraysize(cases[i].matches); ++j) { |
2761 SCOPED_TRACE(" and match index: " + base::IntToString(j)); | 2761 SCOPED_TRACE(" and match index: " + base::IntToString(j)); |
2762 EXPECT_EQ(cases[i].matches[j].contents, kNotApplicable); | 2762 EXPECT_EQ(cases[i].matches[j].contents, kNotApplicable); |
2763 EXPECT_EQ(cases[i].matches[j].description, kNotApplicable); | 2763 EXPECT_EQ(cases[i].matches[j].description, kNotApplicable); |
2764 EXPECT_EQ(cases[i].matches[j].query_params, kNotApplicable); | 2764 EXPECT_EQ(cases[i].matches[j].query_params, kNotApplicable); |
2765 EXPECT_EQ(cases[i].matches[j].fill_into_edit, kNotApplicable); | 2765 EXPECT_EQ(cases[i].matches[j].fill_into_edit, kNotApplicable); |
2766 EXPECT_EQ(cases[i].matches[j].type, AutocompleteMatchType::NUM_TYPES); | 2766 EXPECT_EQ(cases[i].matches[j].type, AutocompleteMatchType::NUM_TYPES); |
2767 } | 2767 } |
2768 } | 2768 } |
2769 } | 2769 } |
2770 #endif // !defined(OS_WIN) | 2770 #endif // !defined(OS_WIN) |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2849 "[\"a\",[\"b\", \"c\"],[],[],{\"google:suggestrelevance\":[1, 2]}]", | 2849 "[\"a\",[\"b\", \"c\"],[],[],{\"google:suggestrelevance\":[1, 2]}]", |
2850 { { "a", false, AutocompleteMatchType::SEARCH_OTHER_ENGINE, true}, | 2850 { { "a", false, AutocompleteMatchType::SEARCH_OTHER_ENGINE, true}, |
2851 { "k a", false, AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, false }, | 2851 { "k a", false, AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, false }, |
2852 { "ab", false, AutocompleteMatchType::SEARCH_SUGGEST, false }, | 2852 { "ab", false, AutocompleteMatchType::SEARCH_SUGGEST, false }, |
2853 { "c", false, AutocompleteMatchType::SEARCH_SUGGEST, true }, | 2853 { "c", false, AutocompleteMatchType::SEARCH_SUGGEST, true }, |
2854 { "b", false, AutocompleteMatchType::SEARCH_SUGGEST, true } | 2854 { "b", false, AutocompleteMatchType::SEARCH_SUGGEST, true } |
2855 }, | 2855 }, |
2856 } | 2856 } |
2857 }; | 2857 }; |
2858 | 2858 |
2859 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2859 for (size_t i = 0; i < arraysize(cases); ++i) { |
2860 QueryForInputAndWaitForFetcherResponses( | 2860 QueryForInputAndWaitForFetcherResponses( |
2861 ASCIIToUTF16(cases[i].input_text), | 2861 ASCIIToUTF16(cases[i].input_text), |
2862 cases[i].prefer_keyword_provider_results, | 2862 cases[i].prefer_keyword_provider_results, |
2863 cases[i].default_provider_response_json, | 2863 cases[i].default_provider_response_json, |
2864 cases[i].prefer_keyword_provider_results ? | 2864 cases[i].prefer_keyword_provider_results ? |
2865 cases[i].keyword_provider_response_json : std::string()); | 2865 cases[i].keyword_provider_response_json : std::string()); |
2866 | 2866 |
2867 const std::string description = | 2867 const std::string description = |
2868 "for input with json =" + cases[i].default_provider_response_json; | 2868 "for input with json =" + cases[i].default_provider_response_json; |
2869 const ACMatches& matches = provider_->matches(); | 2869 const ACMatches& matches = provider_->matches(); |
2870 // The top match must inline and score as highly as calculated verbatim. | 2870 // The top match must inline and score as highly as calculated verbatim. |
2871 ASSERT_FALSE(matches.empty()); | 2871 ASSERT_FALSE(matches.empty()); |
2872 EXPECT_GE(matches[0].relevance, 1300); | 2872 EXPECT_GE(matches[0].relevance, 1300); |
2873 | 2873 |
2874 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 2874 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
2875 // Ensure that the returned matches equal the expectations. | 2875 // Ensure that the returned matches equal the expectations. |
2876 for (size_t j = 0; j < matches.size(); ++j) { | 2876 for (size_t j = 0; j < matches.size(); ++j) { |
2877 SCOPED_TRACE(description); | 2877 SCOPED_TRACE(description); |
2878 EXPECT_EQ(cases[i].matches[j].contents, | 2878 EXPECT_EQ(cases[i].matches[j].contents, |
2879 base::UTF16ToUTF8(matches[j].contents)); | 2879 base::UTF16ToUTF8(matches[j].contents)); |
2880 EXPECT_EQ(cases[i].matches[j].allowed_to_be_prefetched, | 2880 EXPECT_EQ(cases[i].matches[j].allowed_to_be_prefetched, |
2881 SearchProvider::ShouldPrefetch(matches[j])); | 2881 SearchProvider::ShouldPrefetch(matches[j])); |
2882 EXPECT_EQ(cases[i].matches[j].type, matches[j].type); | 2882 EXPECT_EQ(cases[i].matches[j].type, matches[j].type); |
2883 EXPECT_EQ(cases[i].matches[j].from_keyword, | 2883 EXPECT_EQ(cases[i].matches[j].from_keyword, |
2884 matches[j].keyword == ASCIIToUTF16("k")); | 2884 matches[j].keyword == ASCIIToUTF16("k")); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2947 "{\"google:suggesttype\":[\"QUERY\",\"QUERY\"]," | 2947 "{\"google:suggesttype\":[\"QUERY\",\"QUERY\"]," |
2948 "\"google:suggestrelevance\":[1, 2]}]", | 2948 "\"google:suggestrelevance\":[1, 2]}]", |
2949 { { "a", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, | 2949 { { "a", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, |
2950 { "c", AutocompleteMatchType::SEARCH_SUGGEST }, | 2950 { "c", AutocompleteMatchType::SEARCH_SUGGEST }, |
2951 { "b", AutocompleteMatchType::SEARCH_SUGGEST }, | 2951 { "b", AutocompleteMatchType::SEARCH_SUGGEST }, |
2952 kEmptyMatch, | 2952 kEmptyMatch, |
2953 }, | 2953 }, |
2954 }, | 2954 }, |
2955 }; | 2955 }; |
2956 | 2956 |
2957 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 2957 for (size_t i = 0; i < arraysize(cases); ++i) { |
2958 ClearAllResults(); | 2958 ClearAllResults(); |
2959 QueryForInputAndWaitForFetcherResponses( | 2959 QueryForInputAndWaitForFetcherResponses( |
2960 ASCIIToUTF16(cases[i].input_text), false, | 2960 ASCIIToUTF16(cases[i].input_text), false, |
2961 cases[i].default_provider_response_json, std::string()); | 2961 cases[i].default_provider_response_json, std::string()); |
2962 | 2962 |
2963 const ACMatches& matches = provider_->matches(); | 2963 const ACMatches& matches = provider_->matches(); |
2964 // The top match must inline and score as highly as calculated verbatim. | 2964 // The top match must inline and score as highly as calculated verbatim. |
2965 ASSERT_FALSE(matches.empty()); | 2965 ASSERT_FALSE(matches.empty()); |
2966 EXPECT_GE(matches[0].relevance, 1300); | 2966 EXPECT_GE(matches[0].relevance, 1300); |
2967 | 2967 |
2968 SCOPED_TRACE("for case: " + base::IntToString(i)); | 2968 SCOPED_TRACE("for case: " + base::IntToString(i)); |
2969 ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches)); | 2969 ASSERT_LE(matches.size(), arraysize(cases[i].matches)); |
2970 size_t j = 0; | 2970 size_t j = 0; |
2971 // Ensure that the returned matches equal the expectations. | 2971 // Ensure that the returned matches equal the expectations. |
2972 for (; j < matches.size(); ++j) { | 2972 for (; j < matches.size(); ++j) { |
2973 SCOPED_TRACE("and match: " + base::IntToString(j)); | 2973 SCOPED_TRACE("and match: " + base::IntToString(j)); |
2974 EXPECT_EQ(cases[i].matches[j].contents, | 2974 EXPECT_EQ(cases[i].matches[j].contents, |
2975 base::UTF16ToUTF8(matches[j].contents)); | 2975 base::UTF16ToUTF8(matches[j].contents)); |
2976 EXPECT_EQ(cases[i].matches[j].type, matches[j].type); | 2976 EXPECT_EQ(cases[i].matches[j].type, matches[j].type); |
2977 } | 2977 } |
2978 for (; j < ARRAYSIZE_UNSAFE(cases[i].matches); ++j) { | 2978 for (; j < arraysize(cases[i].matches); ++j) { |
2979 SCOPED_TRACE("and match: " + base::IntToString(j)); | 2979 SCOPED_TRACE("and match: " + base::IntToString(j)); |
2980 EXPECT_EQ(cases[i].matches[j].contents, kNotApplicable); | 2980 EXPECT_EQ(cases[i].matches[j].contents, kNotApplicable); |
2981 EXPECT_EQ(cases[i].matches[j].type, AutocompleteMatchType::NUM_TYPES); | 2981 EXPECT_EQ(cases[i].matches[j].type, AutocompleteMatchType::NUM_TYPES); |
2982 } | 2982 } |
2983 } | 2983 } |
2984 } | 2984 } |
2985 | 2985 |
2986 // Test that deletion url gets set on an AutocompleteMatch when available for a | 2986 // Test that deletion url gets set on an AutocompleteMatch when available for a |
2987 // personalized query or a personalized URL. | 2987 // personalized query or a personalized URL. |
2988 TEST_F(SearchProviderTest, ParseDeletionUrl) { | 2988 TEST_F(SearchProviderTest, ParseDeletionUrl) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3054 { { "a", "", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, | 3054 { { "a", "", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED }, |
3055 { "ac", "", AutocompleteMatchType::SEARCH_SUGGEST }, | 3055 { "ac", "", AutocompleteMatchType::SEARCH_SUGGEST }, |
3056 { "ab", "", AutocompleteMatchType::SEARCH_SUGGEST }, | 3056 { "ab", "", AutocompleteMatchType::SEARCH_SUGGEST }, |
3057 { "www.amazon.com", "", | 3057 { "www.amazon.com", "", |
3058 AutocompleteMatchType::NAVSUGGEST_PERSONALIZED }, | 3058 AutocompleteMatchType::NAVSUGGEST_PERSONALIZED }, |
3059 kEmptyMatch, | 3059 kEmptyMatch, |
3060 }, | 3060 }, |
3061 }, | 3061 }, |
3062 }; | 3062 }; |
3063 | 3063 |
3064 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 3064 for (size_t i = 0; i < arraysize(cases); ++i) { |
3065 QueryForInputAndWaitForFetcherResponses( | 3065 QueryForInputAndWaitForFetcherResponses( |
3066 ASCIIToUTF16(cases[i].input_text), false, cases[i].response_json, | 3066 ASCIIToUTF16(cases[i].input_text), false, cases[i].response_json, |
3067 std::string()); | 3067 std::string()); |
3068 | 3068 |
3069 const ACMatches& matches = provider_->matches(); | 3069 const ACMatches& matches = provider_->matches(); |
3070 ASSERT_FALSE(matches.empty()); | 3070 ASSERT_FALSE(matches.empty()); |
3071 | 3071 |
3072 SCOPED_TRACE("for input with json = " + cases[i].response_json); | 3072 SCOPED_TRACE("for input with json = " + cases[i].response_json); |
3073 | 3073 |
3074 for (size_t j = 0; j < matches.size(); ++j) { | 3074 for (size_t j = 0; j < matches.size(); ++j) { |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3448 EXPECT_EQ(base::ASCIIToUTF16("42"), matches[0].answer_type); | 3448 EXPECT_EQ(base::ASCIIToUTF16("42"), matches[0].answer_type); |
3449 EXPECT_TRUE(matches[1].answer_contents.empty()); | 3449 EXPECT_TRUE(matches[1].answer_contents.empty()); |
3450 EXPECT_TRUE(matches[1].answer_type.empty()); | 3450 EXPECT_TRUE(matches[1].answer_type.empty()); |
3451 EXPECT_TRUE(matches[2].answer_contents.empty()); | 3451 EXPECT_TRUE(matches[2].answer_contents.empty()); |
3452 EXPECT_TRUE(matches[2].answer_type.empty()); | 3452 EXPECT_TRUE(matches[2].answer_type.empty()); |
3453 EXPECT_TRUE(matches[3].answer_contents.empty()); | 3453 EXPECT_TRUE(matches[3].answer_contents.empty()); |
3454 EXPECT_TRUE(matches[3].answer_type.empty()); | 3454 EXPECT_TRUE(matches[3].answer_type.empty()); |
3455 EXPECT_TRUE(matches[4].answer_contents.empty()); | 3455 EXPECT_TRUE(matches[4].answer_contents.empty()); |
3456 EXPECT_TRUE(matches[4].answer_type.empty()); | 3456 EXPECT_TRUE(matches[4].answer_type.empty()); |
3457 } | 3457 } |
OLD | NEW |