Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: components/omnibox/keyword_provider_unittest.cc

Issue 1192373002: Prepare AutocompleteController for componentization (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@componentize_zero_suggest_provider
Patch Set: Response to review Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/metrics/proto/omnibox_event.pb.h" 8 #include "components/metrics/proto/omnibox_event.pb.h"
9 #include "components/omnibox/autocomplete_match.h" 9 #include "components/omnibox/autocomplete_match.h"
10 #include "components/omnibox/autocomplete_scheme_classifier.h" 10 #include "components/omnibox/autocomplete_scheme_classifier.h"
11 #include "components/omnibox/keyword_provider.h" 11 #include "components/omnibox/keyword_provider.h"
12 #include "components/omnibox/mock_autocomplete_provider_client.h"
12 #include "components/search_engines/search_engines_switches.h" 13 #include "components/search_engines/search_engines_switches.h"
13 #include "components/search_engines/template_url.h" 14 #include "components/search_engines/template_url.h"
14 #include "components/search_engines/template_url_service.h" 15 #include "components/search_engines/template_url_service.h"
16 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/gurl.h" 18 #include "url/gurl.h"
17 19
18 using base::ASCIIToUTF16; 20 using base::ASCIIToUTF16;
19 21
20 namespace { 22 namespace {
21 23
22 class TestingSchemeClassifier : public AutocompleteSchemeClassifier { 24 class TestingSchemeClassifier : public AutocompleteSchemeClassifier {
23 public: 25 public:
24 metrics::OmniboxInputType::Type GetInputTypeForScheme( 26 metrics::OmniboxInputType::Type GetInputTypeForScheme(
(...skipping 29 matching lines...) Expand all
54 56
55 template<class ResultType> 57 template<class ResultType>
56 void RunTest(TestData<ResultType>* keyword_cases, 58 void RunTest(TestData<ResultType>* keyword_cases,
57 int num_cases, 59 int num_cases,
58 ResultType AutocompleteMatch::* member); 60 ResultType AutocompleteMatch::* member);
59 61
60 protected: 62 protected:
61 static const TemplateURLService::Initializer kTestData[]; 63 static const TemplateURLService::Initializer kTestData[];
62 64
63 scoped_refptr<KeywordProvider> kw_provider_; 65 scoped_refptr<KeywordProvider> kw_provider_;
64 scoped_ptr<TemplateURLService> model_; 66 scoped_ptr<MockAutocompleteProviderClient> client_;
65 }; 67 };
66 68
67 // static 69 // static
68 const TemplateURLService::Initializer KeywordProviderTest::kTestData[] = { 70 const TemplateURLService::Initializer KeywordProviderTest::kTestData[] = {
69 { "aa", "aa.com?foo={searchTerms}", "aa" }, 71 { "aa", "aa.com?foo={searchTerms}", "aa" },
70 { "aaaa", "http://aaaa/?aaaa=1&b={searchTerms}&c", "aaaa" }, 72 { "aaaa", "http://aaaa/?aaaa=1&b={searchTerms}&c", "aaaa" },
71 { "aaaaa", "{searchTerms}", "aaaaa" }, 73 { "aaaaa", "{searchTerms}", "aaaaa" },
72 { "ab", "bogus URL {searchTerms}", "ab" }, 74 { "ab", "bogus URL {searchTerms}", "ab" },
73 { "weasel", "weasel{searchTerms}weasel", "weasel" }, 75 { "weasel", "weasel{searchTerms}weasel", "weasel" },
74 { "www", " +%2B?={searchTerms}foo ", "www" }, 76 { "www", " +%2B?={searchTerms}foo ", "www" },
75 { "nonsub", "http://nonsubstituting-keyword.com/", "nonsub" }, 77 { "nonsub", "http://nonsubstituting-keyword.com/", "nonsub" },
76 { "z", "{searchTerms}=z", "z" }, 78 { "z", "{searchTerms}=z", "z" },
77 }; 79 };
78 80
79 void KeywordProviderTest::SetUp() { 81 void KeywordProviderTest::SetUp() {
80 model_.reset(new TemplateURLService(kTestData, arraysize(kTestData))); 82 scoped_ptr<TemplateURLService> template_url_service(
81 kw_provider_ = new KeywordProvider(NULL, model_.get()); 83 new TemplateURLService(kTestData, arraysize(kTestData)));
84 client_.reset(new MockAutocompleteProviderClient());
85 client_->set_template_url_service(template_url_service.Pass());
86 kw_provider_ = new KeywordProvider(client_.get(), nullptr);
82 } 87 }
83 88
84 void KeywordProviderTest::TearDown() { 89 void KeywordProviderTest::TearDown() {
85 model_.reset(); 90 client_.reset();
86 kw_provider_ = NULL; 91 kw_provider_ = NULL;
87 } 92 }
88 93
89 template<class ResultType> 94 template<class ResultType>
90 void KeywordProviderTest::RunTest(TestData<ResultType>* keyword_cases, 95 void KeywordProviderTest::RunTest(TestData<ResultType>* keyword_cases,
91 int num_cases, 96 int num_cases,
92 ResultType AutocompleteMatch::* member) { 97 ResultType AutocompleteMatch::* member) {
93 ACMatches matches; 98 ACMatches matches;
94 for (int i = 0; i < num_cases; ++i) { 99 for (int i = 0; i < num_cases; ++i) {
95 SCOPED_TRACE(keyword_cases[i].input); 100 SCOPED_TRACE(keyword_cases[i].input);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 &AutocompleteMatch::contents); 272 &AutocompleteMatch::contents);
268 } 273 }
269 274
270 TEST_F(KeywordProviderTest, AddKeyword) { 275 TEST_F(KeywordProviderTest, AddKeyword) {
271 TemplateURLData data; 276 TemplateURLData data;
272 data.SetShortName(ASCIIToUTF16("Test")); 277 data.SetShortName(ASCIIToUTF16("Test"));
273 base::string16 keyword(ASCIIToUTF16("foo")); 278 base::string16 keyword(ASCIIToUTF16("foo"));
274 data.SetKeyword(keyword); 279 data.SetKeyword(keyword);
275 data.SetURL("http://www.google.com/foo?q={searchTerms}"); 280 data.SetURL("http://www.google.com/foo?q={searchTerms}");
276 TemplateURL* template_url = new TemplateURL(data); 281 TemplateURL* template_url = new TemplateURL(data);
277 model_->Add(template_url); 282 client_->GetTemplateURLService()->Add(template_url);
278 ASSERT_TRUE(template_url == model_->GetTemplateURLForKeyword(keyword)); 283 ASSERT_TRUE(
284 template_url ==
285 client_->GetTemplateURLService()->GetTemplateURLForKeyword(keyword));
279 } 286 }
280 287
281 TEST_F(KeywordProviderTest, RemoveKeyword) { 288 TEST_F(KeywordProviderTest, RemoveKeyword) {
289 TemplateURLService* template_url_service = client_->GetTemplateURLService();
282 base::string16 url(ASCIIToUTF16("http://aaaa/?aaaa=1&b={searchTerms}&c")); 290 base::string16 url(ASCIIToUTF16("http://aaaa/?aaaa=1&b={searchTerms}&c"));
283 model_->Remove(model_->GetTemplateURLForKeyword(ASCIIToUTF16("aaaa"))); 291 template_url_service->Remove(
284 ASSERT_TRUE(model_->GetTemplateURLForKeyword(ASCIIToUTF16("aaaa")) == NULL); 292 template_url_service->GetTemplateURLForKeyword(ASCIIToUTF16("aaaa")));
293 ASSERT_TRUE(template_url_service->GetTemplateURLForKeyword(
294 ASCIIToUTF16("aaaa")) == NULL);
285 } 295 }
286 296
287 TEST_F(KeywordProviderTest, GetKeywordForInput) { 297 TEST_F(KeywordProviderTest, GetKeywordForInput) {
288 EXPECT_EQ(ASCIIToUTF16("aa"), 298 EXPECT_EQ(ASCIIToUTF16("aa"),
289 kw_provider_->GetKeywordForText(ASCIIToUTF16("aa"))); 299 kw_provider_->GetKeywordForText(ASCIIToUTF16("aa")));
290 EXPECT_EQ(base::string16(), 300 EXPECT_EQ(base::string16(),
291 kw_provider_->GetKeywordForText(ASCIIToUTF16("aafoo"))); 301 kw_provider_->GetKeywordForText(ASCIIToUTF16("aafoo")));
292 EXPECT_EQ(base::string16(), 302 EXPECT_EQ(base::string16(),
293 kw_provider_->GetKeywordForText(ASCIIToUTF16("aa foo"))); 303 kw_provider_->GetKeywordForText(ASCIIToUTF16("aa foo")));
294 } 304 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 { "aa foo", base::string16::npos, false, "", "aa foo", 344 { "aa foo", base::string16::npos, false, "", "aa foo",
335 base::string16::npos }, 345 base::string16::npos },
336 }; 346 };
337 for (size_t i = 0; i < arraysize(cases); i++) { 347 for (size_t i = 0; i < arraysize(cases); i++) {
338 AutocompleteInput input(ASCIIToUTF16(cases[i].text), 348 AutocompleteInput input(ASCIIToUTF16(cases[i].text),
339 cases[i].cursor_position, std::string(), GURL(), 349 cases[i].cursor_position, std::string(), GURL(),
340 metrics::OmniboxEventProto::INVALID_SPEC, false, 350 metrics::OmniboxEventProto::INVALID_SPEC, false,
341 false, cases[i].allow_exact_keyword_match, true, 351 false, cases[i].allow_exact_keyword_match, true,
342 false, TestingSchemeClassifier()); 352 false, TestingSchemeClassifier());
343 const TemplateURL* url = 353 const TemplateURL* url =
344 KeywordProvider::GetSubstitutingTemplateURLForInput(model_.get(), 354 KeywordProvider::GetSubstitutingTemplateURLForInput(
345 &input); 355 client_->GetTemplateURLService(), &input);
346 if (cases[i].expected_url.empty()) 356 if (cases[i].expected_url.empty())
347 EXPECT_FALSE(url); 357 EXPECT_FALSE(url);
348 else 358 else
349 EXPECT_EQ(cases[i].expected_url, url->url()); 359 EXPECT_EQ(cases[i].expected_url, url->url());
350 EXPECT_EQ(ASCIIToUTF16(cases[i].updated_text), input.text()); 360 EXPECT_EQ(ASCIIToUTF16(cases[i].updated_text), input.text());
351 EXPECT_EQ(cases[i].updated_cursor_position, input.cursor_position()); 361 EXPECT_EQ(cases[i].updated_cursor_position, input.cursor_position());
352 } 362 }
353 } 363 }
354 364
355 // If extra query params are specified on the command line, they should be 365 // If extra query params are specified on the command line, they should be
(...skipping 14 matching lines...) Expand all
370 } 380 }
371 381
372 TEST_F(KeywordProviderTest, DoesNotProvideMatchesOnFocus) { 382 TEST_F(KeywordProviderTest, DoesNotProvideMatchesOnFocus) {
373 AutocompleteInput input(ASCIIToUTF16("aaa"), base::string16::npos, 383 AutocompleteInput input(ASCIIToUTF16("aaa"), base::string16::npos,
374 std::string(), GURL(), 384 std::string(), GURL(),
375 metrics::OmniboxEventProto::INVALID_SPEC, true, false, 385 metrics::OmniboxEventProto::INVALID_SPEC, true, false,
376 true, true, true, TestingSchemeClassifier()); 386 true, true, true, TestingSchemeClassifier());
377 kw_provider_->Start(input, false); 387 kw_provider_->Start(input, false);
378 ASSERT_TRUE(kw_provider_->matches().empty()); 388 ASSERT_TRUE(kw_provider_->matches().empty());
379 } 389 }
OLDNEW
« no previous file with comments | « components/omnibox/keyword_provider.cc ('k') | components/omnibox/mock_autocomplete_provider_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698