OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "chrome/browser/autocomplete/history_quick_provider.h" | 5 #include "chrome/browser/autocomplete/history_quick_provider.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 // Runs an autocomplete query on |text| and checks to see that the returned | 151 // Runs an autocomplete query on |text| and checks to see that the returned |
152 // results' destination URLs match those provided. |expected_urls| does not | 152 // results' destination URLs match those provided. |expected_urls| does not |
153 // need to be in sorted order. | 153 // need to be in sorted order. |
154 void RunTest(const base::string16 text, | 154 void RunTest(const base::string16 text, |
155 bool prevent_inline_autocomplete, | 155 bool prevent_inline_autocomplete, |
156 std::vector<std::string> expected_urls, | 156 std::vector<std::string> expected_urls, |
157 bool can_inline_top_result, | 157 bool can_inline_top_result, |
158 base::string16 expected_fill_into_edit, | 158 base::string16 expected_fill_into_edit, |
159 base::string16 autocompletion); | 159 base::string16 autocompletion); |
160 | 160 |
| 161 // As above, simply with a cursor position specified. |
| 162 void RunTestWithCursor(const base::string16 text, |
| 163 const size_t cursor_position, |
| 164 bool prevent_inline_autocomplete, |
| 165 std::vector<std::string> expected_urls, |
| 166 bool can_inline_top_result, |
| 167 base::string16 expected_fill_into_edit, |
| 168 base::string16 autocompletion); |
| 169 |
161 history::HistoryBackend* history_backend() { | 170 history::HistoryBackend* history_backend() { |
162 return history_service_->history_backend_; | 171 return history_service_->history_backend_; |
163 } | 172 } |
164 | 173 |
165 base::MessageLoopForUI message_loop_; | 174 base::MessageLoopForUI message_loop_; |
166 content::TestBrowserThread ui_thread_; | 175 content::TestBrowserThread ui_thread_; |
167 content::TestBrowserThread file_thread_; | 176 content::TestBrowserThread file_thread_; |
168 | 177 |
169 scoped_ptr<TestingProfile> profile_; | 178 scoped_ptr<TestingProfile> profile_; |
170 HistoryService* history_service_; | 179 HistoryService* history_service_; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 iter != matched_urls.end(); ++iter) | 263 iter != matched_urls.end(); ++iter) |
255 matches_.insert(iter->destination_url.spec()); | 264 matches_.insert(iter->destination_url.spec()); |
256 } | 265 } |
257 | 266 |
258 void HistoryQuickProviderTest::SetShouldContain::operator()( | 267 void HistoryQuickProviderTest::SetShouldContain::operator()( |
259 const std::string& expected) { | 268 const std::string& expected) { |
260 EXPECT_EQ(1U, matches_.erase(expected)) | 269 EXPECT_EQ(1U, matches_.erase(expected)) |
261 << "Results did not contain '" << expected << "' but should have."; | 270 << "Results did not contain '" << expected << "' but should have."; |
262 } | 271 } |
263 | 272 |
| 273 void HistoryQuickProviderTest::RunTest( |
| 274 const base::string16 text, |
| 275 bool prevent_inline_autocomplete, |
| 276 std::vector<std::string> expected_urls, |
| 277 bool can_inline_top_result, |
| 278 base::string16 expected_fill_into_edit, |
| 279 base::string16 expected_autocompletion) { |
| 280 RunTestWithCursor(text, base::string16::npos, prevent_inline_autocomplete, |
| 281 expected_urls, can_inline_top_result, |
| 282 expected_fill_into_edit, expected_autocompletion); |
| 283 } |
264 | 284 |
265 void HistoryQuickProviderTest::RunTest(const base::string16 text, | 285 void HistoryQuickProviderTest::RunTestWithCursor( |
266 bool prevent_inline_autocomplete, | 286 const base::string16 text, |
267 std::vector<std::string> expected_urls, | 287 const size_t cursor_position, |
268 bool can_inline_top_result, | 288 bool prevent_inline_autocomplete, |
269 base::string16 expected_fill_into_edit, | 289 std::vector<std::string> expected_urls, |
270 base::string16 expected_autocompletion) { | 290 bool can_inline_top_result, |
| 291 base::string16 expected_fill_into_edit, |
| 292 base::string16 expected_autocompletion) { |
271 SCOPED_TRACE(text); // Minimal hint to query being run. | 293 SCOPED_TRACE(text); // Minimal hint to query being run. |
272 base::MessageLoop::current()->RunUntilIdle(); | 294 base::MessageLoop::current()->RunUntilIdle(); |
273 AutocompleteInput input(text, base::string16::npos, base::string16(), | 295 AutocompleteInput input(text, cursor_position, base::string16(), |
274 GURL(), metrics::OmniboxEventProto::INVALID_SPEC, | 296 GURL(), metrics::OmniboxEventProto::INVALID_SPEC, |
275 prevent_inline_autocomplete, false, true, true, | 297 prevent_inline_autocomplete, false, true, true, |
276 ChromeAutocompleteSchemeClassifier(profile_.get())); | 298 ChromeAutocompleteSchemeClassifier(profile_.get())); |
277 provider_->Start(input, false); | 299 provider_->Start(input, false); |
278 EXPECT_TRUE(provider_->done()); | 300 EXPECT_TRUE(provider_->done()); |
279 | 301 |
280 ac_matches_ = provider_->matches(); | 302 ac_matches_ = provider_->matches(); |
281 | 303 |
282 // We should have gotten back at most AutocompleteProvider::kMaxMatches. | 304 // We should have gotten back at most AutocompleteProvider::kMaxMatches. |
283 EXPECT_LE(ac_matches_.size(), AutocompleteProvider::kMaxMatches); | 305 EXPECT_LE(ac_matches_.size(), AutocompleteProvider::kMaxMatches); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 } | 343 } |
322 | 344 |
323 TEST_F(HistoryQuickProviderTest, SimpleSingleMatch) { | 345 TEST_F(HistoryQuickProviderTest, SimpleSingleMatch) { |
324 std::vector<std::string> expected_urls; | 346 std::vector<std::string> expected_urls; |
325 expected_urls.push_back("http://slashdot.org/favorite_page.html"); | 347 expected_urls.push_back("http://slashdot.org/favorite_page.html"); |
326 RunTest(ASCIIToUTF16("slashdot"), false, expected_urls, true, | 348 RunTest(ASCIIToUTF16("slashdot"), false, expected_urls, true, |
327 ASCIIToUTF16("slashdot.org/favorite_page.html"), | 349 ASCIIToUTF16("slashdot.org/favorite_page.html"), |
328 ASCIIToUTF16(".org/favorite_page.html")); | 350 ASCIIToUTF16(".org/favorite_page.html")); |
329 } | 351 } |
330 | 352 |
| 353 TEST_F(HistoryQuickProviderTest, SingleMatchWithCursor) { |
| 354 std::vector<std::string> expected_urls; |
| 355 expected_urls.push_back("http://slashdot.org/favorite_page.html"); |
| 356 // With cursor after "slash", we should retrieve the desired result but it |
| 357 // should not be allowed to be the default match. |
| 358 RunTestWithCursor(ASCIIToUTF16("slashfavorite_page.html"), 5, false, |
| 359 expected_urls, false, |
| 360 ASCIIToUTF16("slashdot.org/favorite_page.html"), |
| 361 base::string16()); |
| 362 // If the cursor is in the middle of a valid URL suggestion, it should be |
| 363 // allowed to be the default match. The inline completion will be empty |
| 364 // though as no completion is necessary. |
| 365 RunTestWithCursor(ASCIIToUTF16("slashdot.org/favorite_page.html"), 5, false, |
| 366 expected_urls, true, |
| 367 ASCIIToUTF16("slashdot.org/favorite_page.html"), |
| 368 base::string16()); |
| 369 } |
| 370 |
331 TEST_F(HistoryQuickProviderTest, WordBoundariesWithPunctuationMatch) { | 371 TEST_F(HistoryQuickProviderTest, WordBoundariesWithPunctuationMatch) { |
332 std::vector<std::string> expected_urls; | 372 std::vector<std::string> expected_urls; |
333 expected_urls.push_back("http://popularsitewithpathonly.com/moo"); | 373 expected_urls.push_back("http://popularsitewithpathonly.com/moo"); |
334 RunTest(ASCIIToUTF16("/moo"), false, expected_urls, false, | 374 RunTest(ASCIIToUTF16("/moo"), false, expected_urls, false, |
335 ASCIIToUTF16("popularsitewithpathonly.com/moo"), base::string16()); | 375 ASCIIToUTF16("popularsitewithpathonly.com/moo"), base::string16()); |
336 } | 376 } |
337 | 377 |
338 TEST_F(HistoryQuickProviderTest, MultiTermTitleMatch) { | 378 TEST_F(HistoryQuickProviderTest, MultiTermTitleMatch) { |
339 std::vector<std::string> expected_urls; | 379 std::vector<std::string> expected_urls; |
340 expected_urls.push_back( | 380 expected_urls.push_back( |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 | 780 |
741 TEST_F(HQPOrderingTest, TEAMatch) { | 781 TEST_F(HQPOrderingTest, TEAMatch) { |
742 std::vector<std::string> expected_urls; | 782 std::vector<std::string> expected_urls; |
743 expected_urls.push_back("http://www.teamliquid.net/"); | 783 expected_urls.push_back("http://www.teamliquid.net/"); |
744 expected_urls.push_back("http://www.teamliquid.net/tlpd"); | 784 expected_urls.push_back("http://www.teamliquid.net/tlpd"); |
745 expected_urls.push_back("http://www.teamliquid.net/tlpd/korean/players"); | 785 expected_urls.push_back("http://www.teamliquid.net/tlpd/korean/players"); |
746 RunTest(ASCIIToUTF16("tea"), false, expected_urls, true, | 786 RunTest(ASCIIToUTF16("tea"), false, expected_urls, true, |
747 ASCIIToUTF16("www.teamliquid.net"), | 787 ASCIIToUTF16("www.teamliquid.net"), |
748 ASCIIToUTF16("mliquid.net")); | 788 ASCIIToUTF16("mliquid.net")); |
749 } | 789 } |
OLD | NEW |