| 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/browser/search_provider.h" | 5 #include "components/omnibox/browser/search_provider.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 // Shutdown the provider before the profile. | 323 // Shutdown the provider before the profile. |
| 324 provider_ = NULL; | 324 provider_ = NULL; |
| 325 } | 325 } |
| 326 | 326 |
| 327 void SearchProviderTest::RunTest(TestData* cases, | 327 void SearchProviderTest::RunTest(TestData* cases, |
| 328 int num_cases, | 328 int num_cases, |
| 329 bool prefer_keyword) { | 329 bool prefer_keyword) { |
| 330 ACMatches matches; | 330 ACMatches matches; |
| 331 for (int i = 0; i < num_cases; ++i) { | 331 for (int i = 0; i < num_cases; ++i) { |
| 332 AutocompleteInput input(cases[i].input, base::string16::npos, std::string(), | 332 AutocompleteInput input(cases[i].input, base::string16::npos, std::string(), |
| 333 GURL(), metrics::OmniboxEventProto::INVALID_SPEC, | 333 GURL(), base::string16(), |
| 334 false, prefer_keyword, true, true, false, | 334 metrics::OmniboxEventProto::INVALID_SPEC, false, |
| 335 prefer_keyword, true, true, false, |
| 335 ChromeAutocompleteSchemeClassifier(&profile_)); | 336 ChromeAutocompleteSchemeClassifier(&profile_)); |
| 336 provider_->Start(input, false); | 337 provider_->Start(input, false); |
| 337 matches = provider_->matches(); | 338 matches = provider_->matches(); |
| 338 SCOPED_TRACE( | 339 SCOPED_TRACE( |
| 339 ASCIIToUTF16("Input was: ") + | 340 ASCIIToUTF16("Input was: ") + |
| 340 cases[i].input + | 341 cases[i].input + |
| 341 ASCIIToUTF16("; prefer_keyword was: ") + | 342 ASCIIToUTF16("; prefer_keyword was: ") + |
| 342 (prefer_keyword ? ASCIIToUTF16("true") : ASCIIToUTF16("false"))); | 343 (prefer_keyword ? ASCIIToUTF16("true") : ASCIIToUTF16("false"))); |
| 343 EXPECT_EQ(cases[i].num_results, matches.size()); | 344 EXPECT_EQ(cases[i].num_results, matches.size()); |
| 344 if (matches.size() == cases[i].num_results) { | 345 if (matches.size() == cases[i].num_results) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 367 | 368 |
| 368 base::RunLoop run_loop; | 369 base::RunLoop run_loop; |
| 369 run_loop_ = &run_loop; | 370 run_loop_ = &run_loop; |
| 370 run_loop.Run(); | 371 run_loop.Run(); |
| 371 } | 372 } |
| 372 | 373 |
| 373 void SearchProviderTest::QueryForInput(const base::string16& text, | 374 void SearchProviderTest::QueryForInput(const base::string16& text, |
| 374 bool prevent_inline_autocomplete, | 375 bool prevent_inline_autocomplete, |
| 375 bool prefer_keyword) { | 376 bool prefer_keyword) { |
| 376 // Start a query. | 377 // Start a query. |
| 377 AutocompleteInput input(text, base::string16::npos, std::string(), GURL(), | 378 AutocompleteInput input( |
| 378 metrics::OmniboxEventProto::INVALID_SPEC, | 379 text, base::string16::npos, std::string(), GURL(), base::string16(), |
| 379 prevent_inline_autocomplete, prefer_keyword, true, | 380 metrics::OmniboxEventProto::INVALID_SPEC, prevent_inline_autocomplete, |
| 380 true, false, | 381 prefer_keyword, true, true, false, |
| 381 ChromeAutocompleteSchemeClassifier(&profile_)); | 382 ChromeAutocompleteSchemeClassifier(&profile_)); |
| 382 provider_->Start(input, false); | 383 provider_->Start(input, false); |
| 383 | 384 |
| 384 // RunUntilIdle so that the task scheduled by SearchProvider to create the | 385 // RunUntilIdle so that the task scheduled by SearchProvider to create the |
| 385 // URLFetchers runs. | 386 // URLFetchers runs. |
| 386 base::RunLoop().RunUntilIdle(); | 387 base::RunLoop().RunUntilIdle(); |
| 387 } | 388 } |
| 388 | 389 |
| 389 void SearchProviderTest::QueryForInputAndSetWYTMatch( | 390 void SearchProviderTest::QueryForInputAndSetWYTMatch( |
| 390 const base::string16& text, | 391 const base::string16& text, |
| 391 AutocompleteMatch* wyt_match) { | 392 AutocompleteMatch* wyt_match) { |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1001 TEST_F(SearchProviderTest, KeywordOrderingAndDescriptions) { | 1002 TEST_F(SearchProviderTest, KeywordOrderingAndDescriptions) { |
| 1002 // Add an entry that corresponds to a keyword search with 'term2'. | 1003 // Add an entry that corresponds to a keyword search with 'term2'. |
| 1003 AddSearchToHistory(keyword_t_url_, ASCIIToUTF16("term2"), 1); | 1004 AddSearchToHistory(keyword_t_url_, ASCIIToUTF16("term2"), 1); |
| 1004 profile_.BlockUntilHistoryProcessesPendingRequests(); | 1005 profile_.BlockUntilHistoryProcessesPendingRequests(); |
| 1005 | 1006 |
| 1006 AutocompleteController controller( | 1007 AutocompleteController controller( |
| 1007 base::WrapUnique(new ChromeAutocompleteProviderClient(&profile_)), | 1008 base::WrapUnique(new ChromeAutocompleteProviderClient(&profile_)), |
| 1008 nullptr, AutocompleteProvider::TYPE_SEARCH); | 1009 nullptr, AutocompleteProvider::TYPE_SEARCH); |
| 1009 controller.Start(AutocompleteInput( | 1010 controller.Start(AutocompleteInput( |
| 1010 ASCIIToUTF16("k t"), base::string16::npos, std::string(), GURL(), | 1011 ASCIIToUTF16("k t"), base::string16::npos, std::string(), GURL(), |
| 1011 metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, false, | 1012 base::string16(), metrics::OmniboxEventProto::INVALID_SPEC, false, false, |
| 1012 ChromeAutocompleteSchemeClassifier(&profile_))); | 1013 true, true, false, ChromeAutocompleteSchemeClassifier(&profile_))); |
| 1013 const AutocompleteResult& result = controller.result(); | 1014 const AutocompleteResult& result = controller.result(); |
| 1014 | 1015 |
| 1015 // There should be three matches, one for the keyword history, one for | 1016 // There should be three matches, one for the keyword history, one for |
| 1016 // keyword provider's what-you-typed, and one for the default provider's | 1017 // keyword provider's what-you-typed, and one for the default provider's |
| 1017 // what you typed, in that order. | 1018 // what you typed, in that order. |
| 1018 ASSERT_EQ(3u, result.size()); | 1019 ASSERT_EQ(3u, result.size()); |
| 1019 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, result.match_at(0).type); | 1020 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, result.match_at(0).type); |
| 1020 EXPECT_EQ(AutocompleteMatchType::SEARCH_OTHER_ENGINE, | 1021 EXPECT_EQ(AutocompleteMatchType::SEARCH_OTHER_ENGINE, |
| 1021 result.match_at(1).type); | 1022 result.match_at(1).type); |
| 1022 EXPECT_EQ(AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, | 1023 EXPECT_EQ(AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, |
| (...skipping 2571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3594 EXPECT_TRUE(matches[3].answer_type.empty()); | 3595 EXPECT_TRUE(matches[3].answer_type.empty()); |
| 3595 EXPECT_FALSE(matches[3].answer); | 3596 EXPECT_FALSE(matches[3].answer); |
| 3596 EXPECT_TRUE(matches[4].answer_contents.empty()); | 3597 EXPECT_TRUE(matches[4].answer_contents.empty()); |
| 3597 EXPECT_TRUE(matches[4].answer_type.empty()); | 3598 EXPECT_TRUE(matches[4].answer_type.empty()); |
| 3598 EXPECT_FALSE(matches[4].answer); | 3599 EXPECT_FALSE(matches[4].answer); |
| 3599 } | 3600 } |
| 3600 | 3601 |
| 3601 TEST_F(SearchProviderTest, DoesNotProvideOnFocus) { | 3602 TEST_F(SearchProviderTest, DoesNotProvideOnFocus) { |
| 3602 AutocompleteInput input( | 3603 AutocompleteInput input( |
| 3603 base::ASCIIToUTF16("f"), base::string16::npos, std::string(), GURL(), | 3604 base::ASCIIToUTF16("f"), base::string16::npos, std::string(), GURL(), |
| 3604 metrics::OmniboxEventProto::INVALID_SPEC, false, true, true, true, true, | 3605 base::string16(), metrics::OmniboxEventProto::INVALID_SPEC, false, true, |
| 3605 ChromeAutocompleteSchemeClassifier(&profile_)); | 3606 true, true, true, ChromeAutocompleteSchemeClassifier(&profile_)); |
| 3606 provider_->Start(input, false); | 3607 provider_->Start(input, false); |
| 3607 EXPECT_TRUE(provider_->matches().empty()); | 3608 EXPECT_TRUE(provider_->matches().empty()); |
| 3608 } | 3609 } |
| 3609 | 3610 |
| 3610 TEST_F(SearchProviderTest, SendsWarmUpRequestOnFocus) { | 3611 TEST_F(SearchProviderTest, SendsWarmUpRequestOnFocus) { |
| 3611 AutocompleteInput input( | 3612 AutocompleteInput input( |
| 3612 base::ASCIIToUTF16("f"), base::string16::npos, std::string(), GURL(), | 3613 base::ASCIIToUTF16("f"), base::string16::npos, std::string(), GURL(), |
| 3613 metrics::OmniboxEventProto::INVALID_SPEC, false, true, true, true, true, | 3614 base::string16(), metrics::OmniboxEventProto::INVALID_SPEC, false, true, |
| 3614 ChromeAutocompleteSchemeClassifier(&profile_)); | 3615 true, true, true, ChromeAutocompleteSchemeClassifier(&profile_)); |
| 3615 | 3616 |
| 3616 // First, verify that without the warm-up feature enabled, the provider | 3617 // First, verify that without the warm-up feature enabled, the provider |
| 3617 // immediately terminates with no matches. | 3618 // immediately terminates with no matches. |
| 3618 provider_->Start(input, false); | 3619 provider_->Start(input, false); |
| 3619 // RunUntilIdle so that SearchProvider has a chance to create the URLFetchers | 3620 // RunUntilIdle so that SearchProvider has a chance to create the URLFetchers |
| 3620 // (if it wants to, which it shouldn't in this case). | 3621 // (if it wants to, which it shouldn't in this case). |
| 3621 base::RunLoop().RunUntilIdle(); | 3622 base::RunLoop().RunUntilIdle(); |
| 3622 EXPECT_TRUE(provider_->done()); | 3623 EXPECT_TRUE(provider_->done()); |
| 3623 EXPECT_TRUE(provider_->matches().empty()); | 3624 EXPECT_TRUE(provider_->matches().empty()); |
| 3624 | 3625 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3636 EXPECT_TRUE(fetcher); | 3637 EXPECT_TRUE(fetcher); |
| 3637 // Even if the fetcher returns results, we should still have no suggestions | 3638 // Even if the fetcher returns results, we should still have no suggestions |
| 3638 // (though the provider should now be done). | 3639 // (though the provider should now be done). |
| 3639 fetcher->set_response_code(200); | 3640 fetcher->set_response_code(200); |
| 3640 fetcher->SetResponseString(R"(["",["a", "b"],[],[],{}])"); | 3641 fetcher->SetResponseString(R"(["",["a", "b"],[],[],{}])"); |
| 3641 fetcher->delegate()->OnURLFetchComplete(fetcher); | 3642 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 3642 RunTillProviderDone(); | 3643 RunTillProviderDone(); |
| 3643 EXPECT_TRUE(provider_->done()); | 3644 EXPECT_TRUE(provider_->done()); |
| 3644 EXPECT_TRUE(provider_->matches().empty()); | 3645 EXPECT_TRUE(provider_->matches().empty()); |
| 3645 } | 3646 } |
| OLD | NEW |