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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/metrics/histogram.h" | 6 #include "base/metrics/histogram.h" |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/browser/protector/histograms.h" | 9 #include "chrome/browser/protector/histograms.h" |
10 #include "chrome/browser/protector/mock_protector_service.h" | 10 #include "chrome/browser/protector/mock_protector_service.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 const string16 example_info = ASCIIToUTF16("Example.info"); | 34 const string16 example_info = ASCIIToUTF16("Example.info"); |
35 const string16 example_info_long = ASCIIToUTF16("ExampleSearchEngine.info"); | 35 const string16 example_info_long = ASCIIToUTF16("ExampleSearchEngine.info"); |
36 const std::string http_example_info = "http://example.info/%s"; | 36 const std::string http_example_info = "http://example.info/%s"; |
37 const string16 example_com = ASCIIToUTF16("Example.com"); | 37 const string16 example_com = ASCIIToUTF16("Example.com"); |
38 const string16 example_com_long = ASCIIToUTF16("ExampleSearchEngine.com"); | 38 const string16 example_com_long = ASCIIToUTF16("ExampleSearchEngine.com"); |
39 const std::string http_example_com = "http://example.com/%s"; | 39 const std::string http_example_com = "http://example.com/%s"; |
40 const string16 example_net = ASCIIToUTF16("Example.net"); | 40 const string16 example_net = ASCIIToUTF16("Example.net"); |
41 const std::string http_example_net = "http://example.net/%s"; | 41 const std::string http_example_net = "http://example.net/%s"; |
42 | 42 |
| 43 // Convenience function. |
| 44 TemplateURL* MakeTemplateURL(const string16& short_name, |
| 45 const string16& keyword, |
| 46 const std::string& url) { |
| 47 TemplateURLData data; |
| 48 data.short_name = short_name; |
| 49 if (keyword.empty()) |
| 50 data.SetAutogenerateKeyword(true); |
| 51 else |
| 52 data.SetKeyword(keyword); |
| 53 data.SetURL(url); |
| 54 return new TemplateURL(data); |
| 55 } |
| 56 |
43 }; | 57 }; |
44 | 58 |
45 class DefaultSearchProviderChangeTest : public InProcessBrowserTest { | 59 class DefaultSearchProviderChangeTest : public InProcessBrowserTest { |
46 public: | 60 public: |
47 virtual void SetUpOnMainThread() OVERRIDE { | 61 virtual void SetUpOnMainThread() OVERRIDE { |
48 mock_protector_service_ = | 62 mock_protector_service_ = |
49 MockProtectorService::BuildForProfile(browser()->profile()); | 63 MockProtectorService::BuildForProfile(browser()->profile()); |
50 | 64 |
51 // Ensure that TemplateURLService is loaded. | 65 // Ensure that TemplateURLService is loaded. |
52 turl_service_ = | 66 turl_service_ = |
53 TemplateURLServiceFactory::GetForProfile(browser()->profile()); | 67 TemplateURLServiceFactory::GetForProfile(browser()->profile()); |
54 ui_test_utils::WaitForTemplateURLServiceToLoad(turl_service_); | 68 ui_test_utils::WaitForTemplateURLServiceToLoad(turl_service_); |
55 | 69 |
56 prepopulated_url_.reset( | 70 prepopulated_url_.reset( |
57 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); | 71 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
58 } | 72 } |
59 | 73 |
60 virtual void CleanUpOnMainThread() OVERRIDE { | 74 virtual void CleanUpOnMainThread() OVERRIDE { |
61 EXPECT_CALL(*mock_protector_service_, Shutdown()); | 75 EXPECT_CALL(*mock_protector_service_, Shutdown()); |
62 } | 76 } |
63 | 77 |
64 TemplateURL* MakeTemplateURL(const string16& short_name, | |
65 const string16& keyword, | |
66 const std::string& search_url) { | |
67 TemplateURL* url = new TemplateURL; | |
68 url->set_short_name(short_name); | |
69 if (keyword.empty()) | |
70 url->set_autogenerate_keyword(true); | |
71 else | |
72 url->set_keyword(keyword); | |
73 url->SetURL(search_url); | |
74 return url; | |
75 } | |
76 | |
77 const TemplateURL* FindTemplateURL(const std::string& search_url) { | 78 const TemplateURL* FindTemplateURL(const std::string& search_url) { |
78 TemplateURLService::TemplateURLVector urls = | 79 TemplateURLService::TemplateURLVector urls = |
79 turl_service_->GetTemplateURLs(); | 80 turl_service_->GetTemplateURLs(); |
80 for (TemplateURLService::TemplateURLVector::const_iterator | 81 for (TemplateURLService::TemplateURLVector::const_iterator |
81 it = urls.begin(); it != urls.end(); ++it) { | 82 it = urls.begin(); it != urls.end(); ++it) { |
82 if ((*it)->url() == search_url) | 83 if ((*it)->url() == search_url) |
83 return *it; | 84 return *it; |
84 } | 85 } |
85 return NULL; | 86 return NULL; |
86 } | 87 } |
87 | 88 |
88 // Adds a copy of |turl| that will be owned by TemplateURLService. | |
89 void AddCopy(TemplateURL* turl) { | |
90 TemplateURL* turl_copy = new TemplateURL(*turl); | |
91 turl_service_->Add(turl_copy); | |
92 } | |
93 | |
94 void AddAndSetDefault(TemplateURL* turl) { | 89 void AddAndSetDefault(TemplateURL* turl) { |
95 turl_service_->Add(turl); | 90 turl_service_->Add(turl); |
96 turl_service_->SetDefaultSearchProvider(turl); | 91 turl_service_->SetDefaultSearchProvider(turl); |
97 } | 92 } |
98 | 93 |
99 string16 GetBubbleMessage(const string16& short_name = string16()) { | 94 string16 GetBubbleMessage(const string16& short_name = string16()) { |
100 return short_name.empty() ? | 95 return short_name.empty() ? |
101 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINE_CHANGE_MESSAGE) : | 96 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINE_CHANGE_MESSAGE) : |
102 l10n_util::GetStringFUTF16(IDS_SEARCH_ENGINE_CHANGE_NO_BACKUP_MESSAGE, | 97 l10n_util::GetStringFUTF16(IDS_SEARCH_ENGINE_CHANGE_NO_BACKUP_MESSAGE, |
103 short_name); | 98 short_name); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 // Most common case: current default search provider exists, backup is valid, | 146 // Most common case: current default search provider exists, backup is valid, |
152 // they are different. | 147 // they are different. |
153 TemplateURL* backup_url = | 148 TemplateURL* backup_url = |
154 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); | 149 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); |
155 int backup_histogram_id = protector::GetSearchProviderHistogramID(backup_url); | 150 int backup_histogram_id = protector::GetSearchProviderHistogramID(backup_url); |
156 TemplateURL* current_url = | 151 TemplateURL* current_url = |
157 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); | 152 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); |
158 int current_histogram_id = | 153 int current_histogram_id = |
159 protector::GetSearchProviderHistogramID(current_url); | 154 protector::GetSearchProviderHistogramID(current_url); |
160 | 155 |
161 AddCopy(backup_url); | 156 turl_service_->Add(new TemplateURL(backup_url->data())); |
162 AddAndSetDefault(current_url); | 157 AddAndSetDefault(current_url); |
163 | 158 |
164 scoped_ptr<BaseSettingChange> change( | 159 scoped_ptr<BaseSettingChange> change( |
165 CreateDefaultSearchProviderChange(current_url, backup_url)); | 160 CreateDefaultSearchProviderChange(current_url, backup_url)); |
166 ASSERT_TRUE(change.get()); | 161 ASSERT_TRUE(change.get()); |
167 ASSERT_TRUE(change->Init(browser()->profile())); | 162 ASSERT_TRUE(change->Init(browser()->profile())); |
168 | 163 |
169 // Verify that backup is active. | 164 // Verify that backup is active. |
170 EXPECT_EQ(FindTemplateURL(http_example_info), | 165 EXPECT_EQ(FindTemplateURL(http_example_info), |
171 turl_service_->GetDefaultSearchProvider()); | 166 turl_service_->GetDefaultSearchProvider()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); | 199 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); |
205 TemplateURL* backup_url_long = | 200 TemplateURL* backup_url_long = |
206 MakeTemplateURL(example_info_long, ASCIIToUTF16("a"), http_example_info); | 201 MakeTemplateURL(example_info_long, ASCIIToUTF16("a"), http_example_info); |
207 TemplateURL* current_url = | 202 TemplateURL* current_url = |
208 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); | 203 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); |
209 TemplateURL* current_url_long = | 204 TemplateURL* current_url_long = |
210 MakeTemplateURL(example_com_long, ASCIIToUTF16("b"), http_example_com); | 205 MakeTemplateURL(example_com_long, ASCIIToUTF16("b"), http_example_com); |
211 | 206 |
212 { | 207 { |
213 // Backup name too long. | 208 // Backup name too long. |
214 AddCopy(backup_url_long); | 209 turl_service_->Add(new TemplateURL(backup_url_long->data())); |
215 AddAndSetDefault(current_url); | 210 AddAndSetDefault(current_url); |
216 | 211 |
217 scoped_ptr<BaseSettingChange> change( | 212 scoped_ptr<BaseSettingChange> change( |
218 CreateDefaultSearchProviderChange(current_url, backup_url_long)); | 213 CreateDefaultSearchProviderChange(current_url, backup_url_long)); |
219 ASSERT_TRUE(change.get()); | 214 ASSERT_TRUE(change.get()); |
220 ASSERT_TRUE(change->Init(browser()->profile())); | 215 ASSERT_TRUE(change->Init(browser()->profile())); |
221 | 216 |
222 // Verify text messages. | 217 // Verify text messages. |
223 EXPECT_EQ(GetBubbleMessage(), change->GetBubbleMessage()); | 218 EXPECT_EQ(GetBubbleMessage(), change->GetBubbleMessage()); |
224 EXPECT_EQ(GetChangeSearchButtonText(example_com), | 219 EXPECT_EQ(GetChangeSearchButtonText(example_com), |
225 change->GetApplyButtonText()); | 220 change->GetApplyButtonText()); |
226 EXPECT_EQ(GetKeepSearchButtonText(), change->GetDiscardButtonText()); | 221 EXPECT_EQ(GetKeepSearchButtonText(), change->GetDiscardButtonText()); |
227 } | 222 } |
228 | 223 |
229 { | 224 { |
230 // Current name too long. | 225 // Current name too long. |
231 AddCopy(backup_url); | 226 turl_service_->Add(new TemplateURL(backup_url->data())); |
232 AddAndSetDefault(current_url_long); | 227 AddAndSetDefault(current_url_long); |
233 | 228 |
234 scoped_ptr<BaseSettingChange> change( | 229 scoped_ptr<BaseSettingChange> change( |
235 CreateDefaultSearchProviderChange(current_url_long, backup_url)); | 230 CreateDefaultSearchProviderChange(current_url_long, backup_url)); |
236 ASSERT_TRUE(change.get()); | 231 ASSERT_TRUE(change.get()); |
237 ASSERT_TRUE(change->Init(browser()->profile())); | 232 ASSERT_TRUE(change->Init(browser()->profile())); |
238 | 233 |
239 // Verify text messages. | 234 // Verify text messages. |
240 EXPECT_EQ(GetBubbleMessage(), change->GetBubbleMessage()); | 235 EXPECT_EQ(GetBubbleMessage(), change->GetBubbleMessage()); |
241 EXPECT_EQ(GetChangeSearchButtonText(), change->GetApplyButtonText()); | 236 EXPECT_EQ(GetChangeSearchButtonText(), change->GetApplyButtonText()); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 turl_service_->GetDefaultSearchProvider()); | 348 turl_service_->GetDefaultSearchProvider()); |
354 } | 349 } |
355 | 350 |
356 IN_PROC_BROWSER_TEST_F(DefaultSearchProviderChangeTest, | 351 IN_PROC_BROWSER_TEST_F(DefaultSearchProviderChangeTest, |
357 BackupValidCurrentRemoved) { | 352 BackupValidCurrentRemoved) { |
358 // Backup is valid, no current search provider. | 353 // Backup is valid, no current search provider. |
359 TemplateURL* backup_url = | 354 TemplateURL* backup_url = |
360 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); | 355 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); |
361 int backup_histogram_id = protector::GetSearchProviderHistogramID(backup_url); | 356 int backup_histogram_id = protector::GetSearchProviderHistogramID(backup_url); |
362 | 357 |
363 AddCopy(backup_url); | 358 turl_service_->Add(new TemplateURL(backup_url->data())); |
364 turl_service_->SetDefaultSearchProvider(NULL); | 359 turl_service_->SetDefaultSearchProvider(NULL); |
365 | 360 |
366 scoped_ptr<BaseSettingChange> change( | 361 scoped_ptr<BaseSettingChange> change( |
367 CreateDefaultSearchProviderChange(NULL, backup_url)); | 362 CreateDefaultSearchProviderChange(NULL, backup_url)); |
368 ASSERT_TRUE(change.get()); | 363 ASSERT_TRUE(change.get()); |
369 ASSERT_TRUE(change->Init(browser()->profile())); | 364 ASSERT_TRUE(change->Init(browser()->profile())); |
370 | 365 |
371 // Verify that backup is active. | 366 // Verify that backup is active. |
372 EXPECT_EQ(FindTemplateURL(http_example_info), | 367 EXPECT_EQ(FindTemplateURL(http_example_info), |
373 turl_service_->GetDefaultSearchProvider()); | 368 turl_service_->GetDefaultSearchProvider()); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 DefaultSearchProviderChangedByUser) { | 474 DefaultSearchProviderChangedByUser) { |
480 // Default search provider is changed by user while the error is active. | 475 // Default search provider is changed by user while the error is active. |
481 // Setup is the same as in BackupValid test case. | 476 // Setup is the same as in BackupValid test case. |
482 TemplateURL* backup_url = | 477 TemplateURL* backup_url = |
483 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); | 478 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); |
484 TemplateURL* current_url = | 479 TemplateURL* current_url = |
485 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); | 480 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); |
486 TemplateURL* new_url = | 481 TemplateURL* new_url = |
487 MakeTemplateURL(example_net, ASCIIToUTF16("c"), http_example_net); | 482 MakeTemplateURL(example_net, ASCIIToUTF16("c"), http_example_net); |
488 | 483 |
489 AddCopy(backup_url); | 484 turl_service_->Add(new TemplateURL(backup_url->data())); |
490 AddAndSetDefault(current_url); | 485 AddAndSetDefault(current_url); |
491 | 486 |
492 scoped_ptr<BaseSettingChange> change( | 487 scoped_ptr<BaseSettingChange> change( |
493 CreateDefaultSearchProviderChange(current_url, backup_url)); | 488 CreateDefaultSearchProviderChange(current_url, backup_url)); |
494 ASSERT_TRUE(change.get()); | 489 ASSERT_TRUE(change.get()); |
495 ASSERT_TRUE(change->Init(browser()->profile())); | 490 ASSERT_TRUE(change->Init(browser()->profile())); |
496 | 491 |
497 // Verify that backup is active. | 492 // Verify that backup is active. |
498 EXPECT_EQ(FindTemplateURL(http_example_info), | 493 EXPECT_EQ(FindTemplateURL(http_example_info), |
499 turl_service_->GetDefaultSearchProvider()); | 494 turl_service_->GetDefaultSearchProvider()); |
500 | 495 |
501 // Verify that changing search provider externally dismissed the change. | 496 // Verify that changing search provider externally dismissed the change. |
502 EXPECT_CALL(*mock_protector_service_, DismissChange(change.get())); | 497 EXPECT_CALL(*mock_protector_service_, DismissChange(change.get())); |
503 AddAndSetDefault(new_url); | 498 AddAndSetDefault(new_url); |
504 } | 499 } |
505 | 500 |
506 IN_PROC_BROWSER_TEST_F(DefaultSearchProviderChangeTest, | 501 IN_PROC_BROWSER_TEST_F(DefaultSearchProviderChangeTest, |
507 CurrentSearchProviderRemovedByUser) { | 502 CurrentSearchProviderRemovedByUser) { |
508 // Current search provider is removed by user while the error is active. | 503 // Current search provider is removed by user while the error is active. |
509 // Setup is the same as in BackupValid test case. | 504 // Setup is the same as in BackupValid test case. |
510 TemplateURL* backup_url = | 505 TemplateURL* backup_url = |
511 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); | 506 MakeTemplateURL(example_info, ASCIIToUTF16("a"), http_example_info); |
512 TemplateURL* current_url = | 507 TemplateURL* current_url = |
513 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); | 508 MakeTemplateURL(example_com, ASCIIToUTF16("b"), http_example_com); |
514 | 509 |
515 AddCopy(backup_url); | 510 turl_service_->Add(new TemplateURL(backup_url->data())); |
516 AddAndSetDefault(current_url); | 511 AddAndSetDefault(current_url); |
517 | 512 |
518 scoped_ptr<BaseSettingChange> change( | 513 scoped_ptr<BaseSettingChange> change( |
519 CreateDefaultSearchProviderChange(current_url, backup_url)); | 514 CreateDefaultSearchProviderChange(current_url, backup_url)); |
520 ASSERT_TRUE(change.get()); | 515 ASSERT_TRUE(change.get()); |
521 ASSERT_TRUE(change->Init(browser()->profile())); | 516 ASSERT_TRUE(change->Init(browser()->profile())); |
522 | 517 |
523 // Verify that backup is active. | 518 // Verify that backup is active. |
524 EXPECT_EQ(FindTemplateURL(http_example_info), | 519 EXPECT_EQ(FindTemplateURL(http_example_info), |
525 turl_service_->GetDefaultSearchProvider()); | 520 turl_service_->GetDefaultSearchProvider()); |
(...skipping 12 matching lines...) Expand all Loading... |
538 EXPECT_EQ(FindTemplateURL(http_example_info), | 533 EXPECT_EQ(FindTemplateURL(http_example_info), |
539 turl_service_->GetDefaultSearchProvider()); | 534 turl_service_->GetDefaultSearchProvider()); |
540 | 535 |
541 // Discard does nothing - backup was already active. | 536 // Discard does nothing - backup was already active. |
542 change->Discard(browser()); | 537 change->Discard(browser()); |
543 EXPECT_EQ(FindTemplateURL(http_example_info), | 538 EXPECT_EQ(FindTemplateURL(http_example_info), |
544 turl_service_->GetDefaultSearchProvider()); | 539 turl_service_->GetDefaultSearchProvider()); |
545 } | 540 } |
546 | 541 |
547 } // namespace protector | 542 } // namespace protector |
OLD | NEW |