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_url_provider.h" | 5 #include "chrome/browser/autocomplete/history_url_provider.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "chrome/common/pref_names.h" | 21 #include "chrome/common/pref_names.h" |
22 #include "chrome/test/base/testing_browser_process.h" | 22 #include "chrome/test/base/testing_browser_process.h" |
23 #include "chrome/test/base/testing_profile.h" | 23 #include "chrome/test/base/testing_profile.h" |
24 #include "components/history/core/browser/url_database.h" | 24 #include "components/history/core/browser/url_database.h" |
25 #include "components/metrics/proto/omnibox_event.pb.h" | 25 #include "components/metrics/proto/omnibox_event.pb.h" |
26 #include "components/metrics/proto/omnibox_input_type.pb.h" | 26 #include "components/metrics/proto/omnibox_input_type.pb.h" |
27 #include "components/omnibox/autocomplete_match.h" | 27 #include "components/omnibox/autocomplete_match.h" |
28 #include "components/omnibox/autocomplete_provider.h" | 28 #include "components/omnibox/autocomplete_provider.h" |
29 #include "components/omnibox/autocomplete_provider_listener.h" | 29 #include "components/omnibox/autocomplete_provider_listener.h" |
30 #include "components/omnibox/autocomplete_result.h" | 30 #include "components/omnibox/autocomplete_result.h" |
| 31 #include "components/search_engines/default_search_manager.h" |
31 #include "components/search_engines/search_terms_data.h" | 32 #include "components/search_engines/search_terms_data.h" |
32 #include "components/search_engines/template_url.h" | 33 #include "components/search_engines/template_url.h" |
33 #include "components/search_engines/template_url_service.h" | 34 #include "components/search_engines/template_url_service.h" |
34 #include "components/url_fixer/url_fixer.h" | 35 #include "components/url_fixer/url_fixer.h" |
35 #include "content/public/test/test_browser_thread_bundle.h" | 36 #include "content/public/test/test_browser_thread_bundle.h" |
36 #include "testing/gtest/include/gtest/gtest.h" | 37 #include "testing/gtest/include/gtest/gtest.h" |
37 | 38 |
38 using base::ASCIIToUTF16; | 39 using base::ASCIIToUTF16; |
39 using base::Time; | 40 using base::Time; |
40 using base::TimeDelta; | 41 using base::TimeDelta; |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 return new TemplateURLService( | 177 return new TemplateURLService( |
177 profile->GetPrefs(), make_scoped_ptr(new SearchTermsData), NULL, | 178 profile->GetPrefs(), make_scoped_ptr(new SearchTermsData), NULL, |
178 scoped_ptr<TemplateURLServiceClient>( | 179 scoped_ptr<TemplateURLServiceClient>( |
179 new ChromeTemplateURLServiceClient( | 180 new ChromeTemplateURLServiceClient( |
180 HistoryServiceFactory::GetForProfile( | 181 HistoryServiceFactory::GetForProfile( |
181 profile, Profile::EXPLICIT_ACCESS))), | 182 profile, Profile::EXPLICIT_ACCESS))), |
182 NULL, NULL, base::Closure()); | 183 NULL, NULL, base::Closure()); |
183 } | 184 } |
184 | 185 |
185 // testing::Test | 186 // testing::Test |
186 virtual void SetUp() { | 187 void SetUp() override { |
187 ASSERT_TRUE(SetUpImpl(false)); | 188 ASSERT_TRUE(SetUpImpl(false)); |
188 } | 189 } |
189 virtual void TearDown(); | 190 void TearDown() override; |
190 | 191 |
191 // Does the real setup. | 192 // Does the real setup. |
192 bool SetUpImpl(bool no_db) WARN_UNUSED_RESULT; | 193 bool SetUpImpl(bool no_db) WARN_UNUSED_RESULT; |
193 | 194 |
194 // Fills test data into the history system. | 195 // Fills test data into the history system. |
195 void FillData(); | 196 void FillData(); |
196 | 197 |
197 // Runs an autocomplete query on |text| and checks to see that the returned | 198 // Runs an autocomplete query on |text| and checks to see that the returned |
198 // results' destination URLs match those provided. Also allows checking | 199 // results' destination URLs match those provided. Also allows checking |
199 // that the input type was identified correctly. | 200 // that the input type was identified correctly. |
(...skipping 19 matching lines...) Expand all Loading... |
219 ACMatches matches_; | 220 ACMatches matches_; |
220 scoped_ptr<TestingProfile> profile_; | 221 scoped_ptr<TestingProfile> profile_; |
221 HistoryService* history_service_; | 222 HistoryService* history_service_; |
222 scoped_refptr<HistoryURLProvider> autocomplete_; | 223 scoped_refptr<HistoryURLProvider> autocomplete_; |
223 // Should the matches be sorted and duplicates removed? | 224 // Should the matches be sorted and duplicates removed? |
224 bool sort_matches_; | 225 bool sort_matches_; |
225 }; | 226 }; |
226 | 227 |
227 class HistoryURLProviderTestNoDB : public HistoryURLProviderTest { | 228 class HistoryURLProviderTestNoDB : public HistoryURLProviderTest { |
228 protected: | 229 protected: |
229 virtual void SetUp() { | 230 void SetUp() override { |
230 ASSERT_TRUE(SetUpImpl(true)); | 231 ASSERT_TRUE(SetUpImpl(true)); |
231 } | 232 } |
232 }; | 233 }; |
233 | 234 |
| 235 class HistoryURLProviderTestNoSearchProvider : public HistoryURLProviderTest { |
| 236 protected: |
| 237 void SetUp() override { |
| 238 DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting(true); |
| 239 HistoryURLProviderTest::SetUp(); |
| 240 } |
| 241 |
| 242 void TearDown() override { |
| 243 HistoryURLProviderTest::TearDown(); |
| 244 DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting(false); |
| 245 } |
| 246 }; |
| 247 |
234 void HistoryURLProviderTest::OnProviderUpdate(bool updated_matches) { | 248 void HistoryURLProviderTest::OnProviderUpdate(bool updated_matches) { |
235 if (autocomplete_->done()) | 249 if (autocomplete_->done()) |
236 base::MessageLoop::current()->Quit(); | 250 base::MessageLoop::current()->Quit(); |
237 } | 251 } |
238 | 252 |
239 bool HistoryURLProviderTest::SetUpImpl(bool no_db) { | 253 bool HistoryURLProviderTest::SetUpImpl(bool no_db) { |
240 profile_.reset(new TestingProfile()); | 254 profile_.reset(new TestingProfile()); |
241 if (!(profile_->CreateHistoryService(true, no_db))) | 255 if (!(profile_->CreateHistoryService(true, no_db))) |
242 return false; | 256 return false; |
243 if (!no_db) { | 257 if (!no_db) { |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 // "what you typed" result, plus this one. | 487 // "what you typed" result, plus this one. |
474 const base::string16 typing(ASCIIToUTF16("http://redirects/")); | 488 const base::string16 typing(ASCIIToUTF16("http://redirects/")); |
475 const UrlAndLegalDefault expected_results[] = { | 489 const UrlAndLegalDefault expected_results[] = { |
476 { base::UTF16ToUTF8(typing), true }, | 490 { base::UTF16ToUTF8(typing), true }, |
477 { test_cases[0].url, false } | 491 { test_cases[0].url, false } |
478 }; | 492 }; |
479 RunTest(typing, std::string(), true, expected_results, | 493 RunTest(typing, std::string(), true, expected_results, |
480 arraysize(expected_results)); | 494 arraysize(expected_results)); |
481 } | 495 } |
482 | 496 |
| 497 TEST_F(HistoryURLProviderTestNoSearchProvider, WhatYouTypedNoSearchProvider) { |
| 498 // When no search provider is available, make sure we provide WYT matches |
| 499 // for text that could be a URL. |
| 500 |
| 501 const UrlAndLegalDefault results_1[] = { |
| 502 { "http://wytmatch/", true } |
| 503 }; |
| 504 RunTest(ASCIIToUTF16("wytmatch"), std::string(), false, results_1, |
| 505 arraysize(results_1)); |
| 506 |
| 507 RunTest(ASCIIToUTF16("wytmatch foo bar"), std::string(), false, NULL, 0); |
| 508 RunTest(ASCIIToUTF16("wytmatch+foo+bar"), std::string(), false, NULL, 0); |
| 509 |
| 510 const UrlAndLegalDefault results_2[] = { |
| 511 { "http://wytmatch+foo+bar.com/", true } |
| 512 }; |
| 513 RunTest(ASCIIToUTF16("wytmatch+foo+bar.com"), std::string(), false, |
| 514 results_2, arraysize(results_2)); |
| 515 } |
| 516 |
483 TEST_F(HistoryURLProviderTest, WhatYouTyped) { | 517 TEST_F(HistoryURLProviderTest, WhatYouTyped) { |
484 // Make sure we suggest a What You Typed match at the right times. | 518 // Make sure we suggest a What You Typed match at the right times. |
485 RunTest(ASCIIToUTF16("wytmatch"), std::string(), false, NULL, 0); | 519 RunTest(ASCIIToUTF16("wytmatch"), std::string(), false, NULL, 0); |
486 RunTest(ASCIIToUTF16("wytmatch foo bar"), std::string(), false, NULL, 0); | 520 RunTest(ASCIIToUTF16("wytmatch foo bar"), std::string(), false, NULL, 0); |
487 RunTest(ASCIIToUTF16("wytmatch+foo+bar"), std::string(), false, NULL, 0); | 521 RunTest(ASCIIToUTF16("wytmatch+foo+bar"), std::string(), false, NULL, 0); |
488 RunTest(ASCIIToUTF16("wytmatch+foo+bar.com"), std::string(), false, NULL, 0); | 522 RunTest(ASCIIToUTF16("wytmatch+foo+bar.com"), std::string(), false, NULL, 0); |
489 | 523 |
490 const UrlAndLegalDefault results_1[] = { | 524 const UrlAndLegalDefault results_1[] = { |
491 { "http://www.wytmatch.com/", true } | 525 { "http://www.wytmatch.com/", true } |
492 }; | 526 }; |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 // Test the experiment (scoring enabled). | 1023 // Test the experiment (scoring enabled). |
990 autocomplete_->scoring_params_.experimental_scoring_enabled = true; | 1024 autocomplete_->scoring_params_.experimental_scoring_enabled = true; |
991 ASSERT_NO_FATAL_FAILURE(RunTest(ASCIIToUTF16(test_cases[i].input), | 1025 ASSERT_NO_FATAL_FAILURE(RunTest(ASCIIToUTF16(test_cases[i].input), |
992 std::string(), false, output, max_matches)); | 1026 std::string(), false, output, max_matches)); |
993 for (int j = 0; j < max_matches; ++j) { | 1027 for (int j = 0; j < max_matches; ++j) { |
994 EXPECT_EQ(test_cases[i].matches[j].experiment_relevance, | 1028 EXPECT_EQ(test_cases[i].matches[j].experiment_relevance, |
995 matches_[j].relevance); | 1029 matches_[j].relevance); |
996 } | 1030 } |
997 } | 1031 } |
998 } | 1032 } |
OLD | NEW |