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

Side by Side Diff: chrome/browser/search_engines/template_url_service_unittest.cc

Issue 17127002: Correctly integrate StoragePartition into TestingProfile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix InstantNTP test. Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
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/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/run_loop.h"
10 #include "base/strings/string_split.h" 11 #include "base/strings/string_split.h"
11 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "base/test/mock_time_provider.h" 14 #include "base/test/mock_time_provider.h"
14 #include "base/threading/thread.h" 15 #include "base/threading/thread.h"
15 #include "base/time/time.h" 16 #include "base/time/time.h"
16 #include "chrome/browser/extensions/extension_service_unittest.h" 17 #include "chrome/browser/extensions/extension_service_unittest.h"
17 #include "chrome/browser/history/history_notifications.h" 18 #include "chrome/browser/history/history_notifications.h"
18 #include "chrome/browser/history/history_service.h" 19 #include "chrome/browser/history/history_service.h"
19 #include "chrome/browser/history/history_service_factory.h" 20 #include "chrome/browser/history/history_service_factory.h"
(...skipping 14 matching lines...) Expand all
34 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
35 36
36 using base::Time; 37 using base::Time;
37 using base::TimeDelta; 38 using base::TimeDelta;
38 using content::BrowserThread; 39 using content::BrowserThread;
39 using ::testing::Return; 40 using ::testing::Return;
40 using ::testing::StrictMock; 41 using ::testing::StrictMock;
41 42
42 namespace { 43 namespace {
43 44
44 // TestGenerateSearchURL ------------------------------------------------------
45
46 // Test the GenerateSearchURL on a thread or the main thread.
47 class TestGenerateSearchURL
48 : public base::RefCountedThreadSafe<TestGenerateSearchURL> {
49 public:
50 explicit TestGenerateSearchURL(SearchTermsData* search_terms_data);
51
52 // Run the test cases for GenerateSearchURL.
53 void RunTest();
54
55 // Did the test pass?
56 bool passed() const { return passed_; }
57
58 private:
59 friend class base::RefCountedThreadSafe<TestGenerateSearchURL>;
60 ~TestGenerateSearchURL();
61
62 SearchTermsData* search_terms_data_;
63 bool passed_;
64
65 DISALLOW_COPY_AND_ASSIGN(TestGenerateSearchURL);
66 };
67
68 TestGenerateSearchURL::TestGenerateSearchURL(SearchTermsData* search_terms_data)
69 : search_terms_data_(search_terms_data),
70 passed_(false) {
71 }
72
73 void TestGenerateSearchURL::RunTest() {
74 struct GenerateSearchURLCase {
75 const char* test_name;
76 const char* url;
77 const char* expected;
78 } generate_url_cases[] = {
79 { "invalid URL", "foo{searchTerms}", "" },
80 { "URL with no replacements", "http://foo/", "http://foo/" },
81 { "basic functionality", "http://foo/{searchTerms}",
82 "http://foo/blah.blah.blah.blah.blah" }
83 };
84
85 // Don't use ASSERT/EXPECT since this is run on a thread in one test
86 // and those macros aren't meant for threads at this time according to
87 // gtest documentation.
88 bool everything_passed = true;
89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) {
90 TemplateURLData data;
91 data.SetURL(generate_url_cases[i].url);
92 TemplateURL t_url(NULL, data);
93 std::string result = (search_terms_data_ ?
94 TemplateURLService::GenerateSearchURLUsingTermsData(&t_url,
95 *search_terms_data_) :
96 TemplateURLService::GenerateSearchURL(&t_url)).spec();
97 if (result != generate_url_cases[i].expected) {
98 LOG(ERROR) << generate_url_cases[i].test_name << " failed. Expected " <<
99 generate_url_cases[i].expected << " Actual " << result;
100 everything_passed = false;
101 }
102 }
103 passed_ = everything_passed;
104 }
105
106 TestGenerateSearchURL::~TestGenerateSearchURL() {
107 }
108
109
110 // TestSearchTermsData -------------------------------------------------------- 45 // TestSearchTermsData --------------------------------------------------------
111 46
112 // Simple implementation of SearchTermsData. 47 // Simple implementation of SearchTermsData.
113 class TestSearchTermsData : public SearchTermsData { 48 class TestSearchTermsData : public SearchTermsData {
114 public: 49 public:
115 explicit TestSearchTermsData(const char* google_base_url); 50 explicit TestSearchTermsData(const char* google_base_url);
116 51
117 virtual std::string GoogleBaseURLValue() const OVERRIDE; 52 virtual std::string GoogleBaseURLValue() const OVERRIDE;
118 53
119 private: 54 private:
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 231
297 // Helper methods to make calling TemplateURLServiceTestUtil methods less 232 // Helper methods to make calling TemplateURLServiceTestUtil methods less
298 // visually noisy in the test code. 233 // visually noisy in the test code.
299 void VerifyObserverCount(int expected_changed_count); 234 void VerifyObserverCount(int expected_changed_count);
300 void VerifyObserverFired(); 235 void VerifyObserverFired();
301 TemplateURLService* model() { return test_util_.model(); } 236 TemplateURLService* model() { return test_util_.model(); }
302 237
303 protected: 238 protected:
304 TemplateURLServiceTestUtil test_util_; 239 TemplateURLServiceTestUtil test_util_;
305 240
241 void TestGenerateSearchURL(SearchTermsData* search_terms_data) {
242 struct GenerateSearchURLCase {
243 const char* test_name;
244 const char* url;
245 const char* expected;
246 } generate_url_cases[] = {
247 { "invalid URL", "foo{searchTerms}", "" },
248 { "URL with no replacements", "http://foo/", "http://foo/" },
249 { "basic functionality", "http://foo/{searchTerms}",
250 "http://foo/blah.blah.blah.blah.blah" }
251 };
252
253 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) {
254 TemplateURLData data;
255 data.SetURL(generate_url_cases[i].url);
256 TemplateURL t_url(NULL, data);
257 std::string result;
258 if (search_terms_data) {
259 result = TemplateURLService::GenerateSearchURLUsingTermsData(
260 &t_url, *search_terms_data).spec();
261 } else {
262 result = TemplateURLService::GenerateSearchURL(&t_url).spec();
263 }
264 EXPECT_EQ(result, generate_url_cases[i].expected)
265 << generate_url_cases[i].test_name << " failed. Expected "
266 << generate_url_cases[i].expected << " Actual " << result;
267 }
268 }
269
270
306 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTest); 271 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTest);
307 }; 272 };
308 273
309 TemplateURLServiceTest::TemplateURLServiceTest() { 274 TemplateURLServiceTest::TemplateURLServiceTest() {
310 } 275 }
311 276
312 void TemplateURLServiceTest::SetUp() { 277 void TemplateURLServiceTest::SetUp() {
313 test_util_.SetUp(); 278 test_util_.SetUp();
314 } 279 }
315 280
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 EXPECT_NE(prepopulated_url, original_url); 363 EXPECT_NE(prepopulated_url, original_url);
399 364
400 // Then add it to the model and save it all. 365 // Then add it to the model and save it all.
401 test_util_.ChangeModelToLoadState(); 366 test_util_.ChangeModelToLoadState();
402 model()->Add(t_url); 367 model()->Add(t_url);
403 const TemplateURL* keyword_url = 368 const TemplateURL* keyword_url =
404 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 369 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
405 ASSERT_TRUE(keyword_url != NULL); 370 ASSERT_TRUE(keyword_url != NULL);
406 EXPECT_EQ(t_url, keyword_url); 371 EXPECT_EQ(t_url, keyword_url);
407 EXPECT_EQ(original_url, keyword_url->url_ref().DisplayURL()); 372 EXPECT_EQ(original_url, keyword_url->url_ref().DisplayURL());
408 test_util_.BlockTillServiceProcessesRequests(); 373 base::RunLoop().RunUntilIdle();
409 374
410 // Now reload the model and verify that the merge updates the url, and 375 // Now reload the model and verify that the merge updates the url, and
411 // preserves the sync GUID. 376 // preserves the sync GUID.
412 test_util_.ResetModel(true); 377 test_util_.ResetModel(true);
413 keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 378 keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
414 ASSERT_TRUE(keyword_url != NULL); 379 ASSERT_TRUE(keyword_url != NULL);
415 EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL()); 380 EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL());
416 EXPECT_EQ(original_guid, keyword_url->sync_guid()); 381 EXPECT_EQ(original_guid, keyword_url->sync_guid());
417 382
418 // Wait for any saves to finish. 383 // Wait for any saves to finish.
419 test_util_.BlockTillServiceProcessesRequests(); 384 base::RunLoop().RunUntilIdle();
420 385
421 // Reload the model to verify that change was saved correctly. 386 // Reload the model to verify that change was saved correctly.
422 test_util_.ResetModel(true); 387 test_util_.ResetModel(true);
423 keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 388 keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
424 ASSERT_TRUE(keyword_url != NULL); 389 ASSERT_TRUE(keyword_url != NULL);
425 EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL()); 390 EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL());
426 EXPECT_EQ(original_guid, keyword_url->sync_guid()); 391 EXPECT_EQ(original_guid, keyword_url->sync_guid());
427 } 392 }
428 393
429 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) { 394 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
(...skipping 25 matching lines...) Expand all
455 data.favicon_url = GURL("http://favicon.url"); 420 data.favicon_url = GURL("http://favicon.url");
456 data.safe_for_autoreplace = true; 421 data.safe_for_autoreplace = true;
457 data.date_created = Time::FromTimeT(100); 422 data.date_created = Time::FromTimeT(100);
458 data.last_modified = Time::FromTimeT(100); 423 data.last_modified = Time::FromTimeT(100);
459 data.sync_guid = "00000000-0000-0000-0000-000000000001"; 424 data.sync_guid = "00000000-0000-0000-0000-000000000001";
460 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 425 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
461 model()->Add(t_url); 426 model()->Add(t_url);
462 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 427 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
463 NULL)); 428 NULL));
464 VerifyObserverCount(1); 429 VerifyObserverCount(1);
465 test_util_.BlockTillServiceProcessesRequests(); 430 base::RunLoop().RunUntilIdle();
466 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 431 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
467 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword())); 432 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword()));
468 // We need to make a second copy as the model takes ownership of |t_url| and 433 // We need to make a second copy as the model takes ownership of |t_url| and
469 // will delete it. We have to do this after calling Add() since that gives 434 // will delete it. We have to do this after calling Add() since that gives
470 // |t_url| its ID. 435 // |t_url| its ID.
471 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 436 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
472 t_url->data())); 437 t_url->data()));
473 438
474 // Reload the model to verify it was actually saved to the database. 439 // Reload the model to verify it was actually saved to the database.
475 test_util_.ResetModel(true); 440 test_util_.ResetModel(true);
(...skipping 16 matching lines...) Expand all
492 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"), 457 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"),
493 "c"); 458 "c");
494 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name()); 459 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name());
495 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword()); 460 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword());
496 ASSERT_EQ("c", loaded_url->url()); 461 ASSERT_EQ("c", loaded_url->url());
497 ASSERT_FALSE(loaded_url->safe_for_autoreplace()); 462 ASSERT_FALSE(loaded_url->safe_for_autoreplace());
498 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 463 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
499 NULL)); 464 NULL));
500 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL)); 465 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL));
501 cloned_url.reset(new TemplateURL(loaded_url->profile(), loaded_url->data())); 466 cloned_url.reset(new TemplateURL(loaded_url->profile(), loaded_url->data()));
502 test_util_.BlockTillServiceProcessesRequests(); 467 base::RunLoop().RunUntilIdle();
503 test_util_.ResetModel(true); 468 test_util_.ResetModel(true);
504 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 469 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
505 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b")); 470 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b"));
506 ASSERT_TRUE(loaded_url != NULL); 471 ASSERT_TRUE(loaded_url != NULL);
507 AssertEquals(*cloned_url, *loaded_url); 472 AssertEquals(*cloned_url, *loaded_url);
508 // We changed a TemplateURL in the service, so ensure that the time was 473 // We changed a TemplateURL in the service, so ensure that the time was
509 // updated. 474 // updated.
510 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified()); 475 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified());
511 476
512 // Remove an element and verify it succeeded. 477 // Remove an element and verify it succeeded.
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 TemplateURLService::GenerateKeyword(GURL("http://www.foo"))); 634 TemplateURLService::GenerateKeyword(GURL("http://www.foo")));
670 // Make sure we don't get a trailing '/'. 635 // Make sure we don't get a trailing '/'.
671 ASSERT_EQ(ASCIIToUTF16("blah"), 636 ASSERT_EQ(ASCIIToUTF16("blah"),
672 TemplateURLService::GenerateKeyword(GURL("http://blah/"))); 637 TemplateURLService::GenerateKeyword(GURL("http://blah/")));
673 // Don't generate the empty string. 638 // Don't generate the empty string.
674 ASSERT_EQ(ASCIIToUTF16("www"), 639 ASSERT_EQ(ASCIIToUTF16("www"),
675 TemplateURLService::GenerateKeyword(GURL("http://www."))); 640 TemplateURLService::GenerateKeyword(GURL("http://www.")));
676 } 641 }
677 642
678 TEST_F(TemplateURLServiceTest, GenerateSearchURL) { 643 TEST_F(TemplateURLServiceTest, GenerateSearchURL) {
679 scoped_refptr<TestGenerateSearchURL> test_generate_search_url( 644 TestGenerateSearchURL(NULL);
680 new TestGenerateSearchURL(NULL));
681 test_generate_search_url->RunTest();
682 EXPECT_TRUE(test_generate_search_url->passed());
683 } 645 }
684 646
685 TEST_F(TemplateURLServiceTest, GenerateSearchURLUsingTermsData) { 647 TEST_F(TemplateURLServiceTest, GenerateSearchURLUsingTermsData) {
686 // Run the test for GenerateSearchURLUsingTermsData on the "IO" thread and 648 // Run the test for GenerateSearchURLUsingTermsData on the "IO" thread and
687 // wait for it to finish. 649 // wait for it to finish.
688 TestSearchTermsData search_terms_data("http://google.com/"); 650 TestSearchTermsData search_terms_data("http://google.com/");
689 scoped_refptr<TestGenerateSearchURL> test_generate_search_url( 651 TestGenerateSearchURL(&search_terms_data);
690 new TestGenerateSearchURL(&search_terms_data));
691
692 test_util_.StartIOThread();
693 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)->PostTask(
694 FROM_HERE, base::Bind(&TestGenerateSearchURL::RunTest,
695 test_generate_search_url.get()));
696 TemplateURLServiceTestUtil::BlockTillIOThreadProcessesRequests();
697 EXPECT_TRUE(test_generate_search_url->passed());
698 } 652 }
699 653
700 TEST_F(TemplateURLServiceTest, ClearBrowsingData_Keywords) { 654 TEST_F(TemplateURLServiceTest, ClearBrowsingData_Keywords) {
701 Time now = Time::Now(); 655 Time now = Time::Now();
702 TimeDelta one_day = TimeDelta::FromDays(1); 656 TimeDelta one_day = TimeDelta::FromDays(1);
703 Time month_ago = now - TimeDelta::FromDays(30); 657 Time month_ago = now - TimeDelta::FromDays(30);
704 658
705 // Nothing has been added. 659 // Nothing has been added.
706 EXPECT_EQ(0U, model()->GetTemplateURLs().size()); 660 EXPECT_EQ(0U, model()->GetTemplateURLs().size());
707 661
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 data.short_name = ASCIIToUTF16("google"); 773 data.short_name = ASCIIToUTF16("google");
820 data.SetKeyword(ASCIIToUTF16("keyword")); 774 data.SetKeyword(ASCIIToUTF16("keyword"));
821 data.SetURL("http://www.google.com/foo/bar"); 775 data.SetURL("http://www.google.com/foo/bar");
822 data.favicon_url = GURL("http://favicon.url"); 776 data.favicon_url = GURL("http://favicon.url");
823 data.date_created = Time::FromTimeT(100); 777 data.date_created = Time::FromTimeT(100);
824 data.last_modified = Time::FromTimeT(100); 778 data.last_modified = Time::FromTimeT(100);
825 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 779 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
826 model()->Add(t_url); 780 model()->Add(t_url);
827 781
828 VerifyObserverCount(1); 782 VerifyObserverCount(1);
829 test_util_.BlockTillServiceProcessesRequests(); 783 base::RunLoop().RunUntilIdle();
830 784
831 StrictMock<base::MockTimeProvider> mock_time; 785 StrictMock<base::MockTimeProvider> mock_time;
832 model()->set_time_provider(&base::MockTimeProvider::StaticNow); 786 model()->set_time_provider(&base::MockTimeProvider::StaticNow);
833 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337))); 787 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337)));
834 788
835 // Reset the short name, keyword, url and make sure it takes. 789 // Reset the short name, keyword, url and make sure it takes.
836 const string16 new_short_name(ASCIIToUTF16("a")); 790 const string16 new_short_name(ASCIIToUTF16("a"));
837 const string16 new_keyword(ASCIIToUTF16("b")); 791 const string16 new_keyword(ASCIIToUTF16("b"));
838 const std::string new_url("c"); 792 const std::string new_url("c");
839 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url); 793 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url);
(...skipping 27 matching lines...) Expand all
867 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time()); 821 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time());
868 test_util_.ResetObserverCount(); 822 test_util_.ResetObserverCount();
869 823
870 model()->SetDefaultSearchProvider(t_url); 824 model()->SetDefaultSearchProvider(t_url);
871 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 825 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
872 ASSERT_TRUE(t_url->safe_for_autoreplace()); 826 ASSERT_TRUE(t_url->safe_for_autoreplace());
873 ASSERT_TRUE(t_url->show_in_default_list()); 827 ASSERT_TRUE(t_url->show_in_default_list());
874 828
875 // Setting the default search provider should have caused notification. 829 // Setting the default search provider should have caused notification.
876 VerifyObserverCount(1); 830 VerifyObserverCount(1);
877 test_util_.BlockTillServiceProcessesRequests(); 831 base::RunLoop().RunUntilIdle();
878 832
879 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 833 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
880 t_url->data())); 834 t_url->data()));
881 835
882 // Make sure when we reload we get a default search provider. 836 // Make sure when we reload we get a default search provider.
883 test_util_.ResetModel(true); 837 test_util_.ResetModel(true);
884 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 838 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
885 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 839 ASSERT_TRUE(model()->GetDefaultSearchProvider());
886 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider()); 840 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider());
887 } 841 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 data.SetURL("http://url/{searchTerms}"); 900 data.SetURL("http://url/{searchTerms}");
947 data.suggestions_url = "http://url2"; 901 data.suggestions_url = "http://url2";
948 data.instant_url = "http://instant"; 902 data.instant_url = "http://instant";
949 data.date_created = Time::FromTimeT(100); 903 data.date_created = Time::FromTimeT(100);
950 data.last_modified = Time::FromTimeT(100); 904 data.last_modified = Time::FromTimeT(100);
951 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 905 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
952 model()->Add(t_url); 906 model()->Add(t_url);
953 const TemplateURLID id = t_url->id(); 907 const TemplateURLID id = t_url->id();
954 908
955 model()->SetDefaultSearchProvider(t_url); 909 model()->SetDefaultSearchProvider(t_url);
956 test_util_.BlockTillServiceProcessesRequests(); 910 base::RunLoop().RunUntilIdle();
957 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 911 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
958 t_url->data())); 912 t_url->data()));
959 913
960 // Reset the model and don't load it. The template url we set as the default 914 // Reset the model and don't load it. The template url we set as the default
961 // should be pulled from prefs now. 915 // should be pulled from prefs now.
962 test_util_.ResetModel(false); 916 test_util_.ResetModel(false);
963 917
964 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs 918 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs
965 // value are persisted to prefs. 919 // value are persisted to prefs.
966 const TemplateURL* default_turl = model()->GetDefaultSearchProvider(); 920 const TemplateURL* default_turl = model()->GetDefaultSearchProvider();
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 // Make sure that the load routine deletes prepopulated engines that no longer 1190 // Make sure that the load routine deletes prepopulated engines that no longer
1237 // exist in the prepopulate data. 1191 // exist in the prepopulate data.
1238 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) { 1192 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) {
1239 // Create a preloaded template url. Add it to a loaded model and wait for the 1193 // Create a preloaded template url. Add it to a loaded model and wait for the
1240 // saves to finish. 1194 // saves to finish.
1241 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999); 1195 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
1242 test_util_.ChangeModelToLoadState(); 1196 test_util_.ChangeModelToLoadState();
1243 model()->Add(t_url); 1197 model()->Add(t_url);
1244 ASSERT_TRUE( 1198 ASSERT_TRUE(
1245 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); 1199 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
1246 test_util_.BlockTillServiceProcessesRequests(); 1200 base::RunLoop().RunUntilIdle();
1247 1201
1248 // Ensure that merging clears this engine. 1202 // Ensure that merging clears this engine.
1249 test_util_.ResetModel(true); 1203 test_util_.ResetModel(true);
1250 ASSERT_TRUE( 1204 ASSERT_TRUE(
1251 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); 1205 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL);
1252 1206
1253 // Wait for any saves to finish. 1207 // Wait for any saves to finish.
1254 test_util_.BlockTillServiceProcessesRequests(); 1208 base::RunLoop().RunUntilIdle();
1255 1209
1256 // Reload the model to verify that the database was updated as a result of the 1210 // Reload the model to verify that the database was updated as a result of the
1257 // merge. 1211 // merge.
1258 test_util_.ResetModel(true); 1212 test_util_.ResetModel(true);
1259 ASSERT_TRUE( 1213 ASSERT_TRUE(
1260 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); 1214 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL);
1261 } 1215 }
1262 1216
1263 // Make sure that load routine doesn't delete prepopulated engines that no 1217 // Make sure that load routine doesn't delete prepopulated engines that no
1264 // longer exist in the prepopulate data if it has been modified by the user. 1218 // longer exist in the prepopulate data if it has been modified by the user.
1265 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { 1219 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) {
1266 // Create a preloaded template url and add it to a loaded model. 1220 // Create a preloaded template url and add it to a loaded model.
1267 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999); 1221 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999);
1268 test_util_.ChangeModelToLoadState(); 1222 test_util_.ChangeModelToLoadState();
1269 model()->Add(t_url); 1223 model()->Add(t_url);
1270 1224
1271 // Do the copy after t_url is added so that the id is set. 1225 // Do the copy after t_url is added so that the id is set.
1272 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 1226 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
1273 t_url->data())); 1227 t_url->data()));
1274 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1228 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1275 1229
1276 // Wait for any saves to finish. 1230 // Wait for any saves to finish.
1277 test_util_.BlockTillServiceProcessesRequests(); 1231 base::RunLoop().RunUntilIdle();
1278 1232
1279 // Ensure that merging won't clear it if the user has edited it. 1233 // Ensure that merging won't clear it if the user has edited it.
1280 test_util_.ResetModel(true); 1234 test_util_.ResetModel(true);
1281 const TemplateURL* url_for_unittest = 1235 const TemplateURL* url_for_unittest =
1282 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 1236 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
1283 ASSERT_TRUE(url_for_unittest != NULL); 1237 ASSERT_TRUE(url_for_unittest != NULL);
1284 AssertEquals(*cloned_url, *url_for_unittest); 1238 AssertEquals(*cloned_url, *url_for_unittest);
1285 1239
1286 // Wait for any saves to finish. 1240 // Wait for any saves to finish.
1287 test_util_.BlockTillServiceProcessesRequests(); 1241 base::RunLoop().RunUntilIdle();
1288 1242
1289 // Reload the model to verify that save/reload retains the item. 1243 // Reload the model to verify that save/reload retains the item.
1290 test_util_.ResetModel(true); 1244 test_util_.ResetModel(true);
1291 ASSERT_TRUE( 1245 ASSERT_TRUE(
1292 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); 1246 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
1293 } 1247 }
1294 1248
1295 // Make sure that load routine doesn't delete 1249 // Make sure that load routine doesn't delete
1296 // prepopulated engines that no longer exist in the prepopulate data if 1250 // prepopulated engines that no longer exist in the prepopulate data if
1297 // it has been modified by the user. 1251 // it has been modified by the user.
1298 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) { 1252 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) {
1299 test_util_.VerifyLoad(); 1253 test_util_.VerifyLoad();
1300 // Verify that the default search provider is set to something. 1254 // Verify that the default search provider is set to something.
1301 TemplateURL* default_search = model()->GetDefaultSearchProvider(); 1255 TemplateURL* default_search = model()->GetDefaultSearchProvider();
1302 ASSERT_TRUE(default_search != NULL); 1256 ASSERT_TRUE(default_search != NULL);
1303 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(default_search->profile(), 1257 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(default_search->profile(),
1304 default_search->data())); 1258 default_search->data()));
1305 1259
1306 // Wait for any saves to finish. 1260 // Wait for any saves to finish.
1307 test_util_.BlockTillServiceProcessesRequests(); 1261 base::RunLoop().RunUntilIdle();
1308 1262
1309 // Reload the model and check that the default search provider 1263 // Reload the model and check that the default search provider
1310 // was properly saved. 1264 // was properly saved.
1311 test_util_.ResetModel(true); 1265 test_util_.ResetModel(true);
1312 default_search = model()->GetDefaultSearchProvider(); 1266 default_search = model()->GetDefaultSearchProvider();
1313 ASSERT_TRUE(default_search != NULL); 1267 ASSERT_TRUE(default_search != NULL);
1314 AssertEquals(*cloned_url, *default_search); 1268 AssertEquals(*cloned_url, *default_search);
1315 } 1269 }
1316 1270
1317 TEST_F(TemplateURLServiceTest, FindNewDefaultSearchProvider) { 1271 TEST_F(TemplateURLServiceTest, FindNewDefaultSearchProvider) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 test_util_.ChangeModelToLoadState(); 1315 test_util_.ChangeModelToLoadState();
1362 model()->Add(t_url); 1316 model()->Add(t_url);
1363 model()->SetDefaultSearchProvider(t_url); 1317 model()->SetDefaultSearchProvider(t_url);
1364 // Do the copy after t_url is added and set as default so that its 1318 // Do the copy after t_url is added and set as default so that its
1365 // internal state is correct. 1319 // internal state is correct.
1366 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 1320 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
1367 t_url->data())); 1321 t_url->data()));
1368 1322
1369 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1323 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1370 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 1324 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
1371 test_util_.BlockTillServiceProcessesRequests(); 1325 base::RunLoop().RunUntilIdle();
1372 1326
1373 // Ensure that merging won't clear the prepopulated template url 1327 // Ensure that merging won't clear the prepopulated template url
1374 // which is no longer present if it's the default engine. 1328 // which is no longer present if it's the default engine.
1375 test_util_.ResetModel(true); 1329 test_util_.ResetModel(true);
1376 { 1330 {
1377 const TemplateURL* keyword_url = 1331 const TemplateURL* keyword_url =
1378 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 1332 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
1379 ASSERT_TRUE(keyword_url != NULL); 1333 ASSERT_TRUE(keyword_url != NULL);
1380 AssertEquals(*cloned_url, *keyword_url); 1334 AssertEquals(*cloned_url, *keyword_url);
1381 ASSERT_EQ(keyword_url, model()->GetDefaultSearchProvider()); 1335 ASSERT_EQ(keyword_url, model()->GetDefaultSearchProvider());
1382 } 1336 }
1383 1337
1384 // Wait for any saves to finish. 1338 // Wait for any saves to finish.
1385 test_util_.BlockTillServiceProcessesRequests(); 1339 base::RunLoop().RunUntilIdle();
1386 1340
1387 // Reload the model to verify that the update was saved. 1341 // Reload the model to verify that the update was saved.
1388 test_util_.ResetModel(true); 1342 test_util_.ResetModel(true);
1389 { 1343 {
1390 const TemplateURL* keyword_url = 1344 const TemplateURL* keyword_url =
1391 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 1345 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
1392 ASSERT_TRUE(keyword_url != NULL); 1346 ASSERT_TRUE(keyword_url != NULL);
1393 AssertEquals(*cloned_url, *keyword_url); 1347 AssertEquals(*cloned_url, *keyword_url);
1394 ASSERT_EQ(keyword_url, model()->GetDefaultSearchProvider()); 1348 ASSERT_EQ(keyword_url, model()->GetDefaultSearchProvider());
1395 } 1349 }
(...skipping 15 matching lines...) Expand all
1411 // missing and not managed. 1365 // missing and not managed.
1412 TEST_F(TemplateURLServiceTest, LoadEnsuresDefaultSearchProviderExists) { 1366 TEST_F(TemplateURLServiceTest, LoadEnsuresDefaultSearchProviderExists) {
1413 // Force the model to load and make sure we have a default search provider. 1367 // Force the model to load and make sure we have a default search provider.
1414 test_util_.VerifyLoad(); 1368 test_util_.VerifyLoad();
1415 TemplateURL* old_default = model()->GetDefaultSearchProvider(); 1369 TemplateURL* old_default = model()->GetDefaultSearchProvider();
1416 EXPECT_TRUE(old_default); 1370 EXPECT_TRUE(old_default);
1417 1371
1418 // Now remove it. 1372 // Now remove it.
1419 model()->SetDefaultSearchProvider(NULL); 1373 model()->SetDefaultSearchProvider(NULL);
1420 model()->Remove(old_default); 1374 model()->Remove(old_default);
1421 test_util_.BlockTillServiceProcessesRequests(); 1375 base::RunLoop().RunUntilIdle();
1422 1376
1423 EXPECT_FALSE(model()->GetDefaultSearchProvider()); 1377 EXPECT_FALSE(model()->GetDefaultSearchProvider());
1424 1378
1425 // Reset the model and load it. There should be a default search provider. 1379 // Reset the model and load it. There should be a default search provider.
1426 test_util_.ResetModel(true); 1380 test_util_.ResetModel(true);
1427 1381
1428 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 1382 ASSERT_TRUE(model()->GetDefaultSearchProvider());
1429 EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement()); 1383 EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement());
1430 1384
1431 // Make default search provider unusable (no search terms). 1385 // Make default search provider unusable (no search terms).
1432 model()->ResetTemplateURL(model()->GetDefaultSearchProvider(), 1386 model()->ResetTemplateURL(model()->GetDefaultSearchProvider(),
1433 ASCIIToUTF16("test"), ASCIIToUTF16("test"), 1387 ASCIIToUTF16("test"), ASCIIToUTF16("test"),
1434 "http://example.com/"); 1388 "http://example.com/");
1435 test_util_.BlockTillServiceProcessesRequests(); 1389 base::RunLoop().RunUntilIdle();
1436 1390
1437 // Reset the model and load it. There should be a usable default search 1391 // Reset the model and load it. There should be a usable default search
1438 // provider. 1392 // provider.
1439 test_util_.ResetModel(true); 1393 test_util_.ResetModel(true);
1440 1394
1441 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 1395 ASSERT_TRUE(model()->GetDefaultSearchProvider());
1442 EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement()); 1396 EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement());
1443 } 1397 }
1444 1398
1445 // Simulates failing to load the webdb and makes sure the default search 1399 // Simulates failing to load the webdb and makes sure the default search
1446 // provider is valid. 1400 // provider is valid.
1447 TEST_F(TemplateURLServiceTest, FailedInit) { 1401 TEST_F(TemplateURLServiceTest, FailedInit) {
1448 test_util_.VerifyLoad(); 1402 test_util_.VerifyLoad();
1449 1403
1450 test_util_.ClearModel(); 1404 test_util_.ClearModel();
1451 scoped_refptr<WebDataService> web_service = 1405 scoped_refptr<WebDataService> web_service =
1452 WebDataService::FromBrowserContext(test_util_.profile()); 1406 WebDataService::FromBrowserContext(test_util_.profile());
1453 web_service->ShutdownDatabase(); 1407 web_service->ShutdownDatabase();
1454 1408
1455 test_util_.ResetModel(false); 1409 test_util_.ResetModel(false);
1456 model()->Load(); 1410 model()->Load();
1457 test_util_.BlockTillServiceProcessesRequests(); 1411 base::RunLoop().RunUntilIdle();
1458 1412
1459 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 1413 ASSERT_TRUE(model()->GetDefaultSearchProvider());
1460 } 1414 }
1461 1415
1462 // Verifies that if the default search URL preference is managed, we report 1416 // Verifies that if the default search URL preference is managed, we report
1463 // the default search as managed. Also check that we are getting the right 1417 // the default search as managed. Also check that we are getting the right
1464 // values. 1418 // values.
1465 TEST_F(TemplateURLServiceTest, TestManagedDefaultSearch) { 1419 TEST_F(TemplateURLServiceTest, TestManagedDefaultSearch) {
1466 test_util_.VerifyLoad(); 1420 test_util_.VerifyLoad();
1467 const size_t initial_count = model()->GetTemplateURLs().size(); 1421 const size_t initial_count = model()->GetTemplateURLs().size();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 1557
1604 TemplateURLData data; 1558 TemplateURLData data;
1605 data.short_name = ASCIIToUTF16("google"); 1559 data.short_name = ASCIIToUTF16("google");
1606 data.SetKeyword(ASCIIToUTF16("keyword")); 1560 data.SetKeyword(ASCIIToUTF16("keyword"));
1607 data.SetURL("http://www.google.com/foo/bar"); 1561 data.SetURL("http://www.google.com/foo/bar");
1608 data.sync_guid.clear(); 1562 data.sync_guid.clear();
1609 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 1563 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
1610 model()->Add(t_url); 1564 model()->Add(t_url);
1611 1565
1612 VerifyObserverCount(1); 1566 VerifyObserverCount(1);
1613 test_util_.BlockTillServiceProcessesRequests(); 1567 base::RunLoop().RunUntilIdle();
1614 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1568 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1615 1569
1616 // Reload the model to verify it was actually saved to the database and 1570 // Reload the model to verify it was actually saved to the database and
1617 // assigned a new GUID when brought back. 1571 // assigned a new GUID when brought back.
1618 test_util_.ResetModel(true); 1572 test_util_.ResetModel(true);
1619 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1573 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1620 const TemplateURL* loaded_url = 1574 const TemplateURL* loaded_url =
1621 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1575 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1622 ASSERT_FALSE(loaded_url == NULL); 1576 ASSERT_FALSE(loaded_url == NULL);
1623 ASSERT_FALSE(loaded_url->sync_guid().empty()); 1577 ASSERT_FALSE(loaded_url->sync_guid().empty());
(...skipping 16 matching lines...) Expand all
1640 data.input_encodings.push_back("UTF-16"); 1594 data.input_encodings.push_back("UTF-16");
1641 data.input_encodings.push_back("UTF-8"); 1595 data.input_encodings.push_back("UTF-8");
1642 data.input_encodings.push_back("Big5"); 1596 data.input_encodings.push_back("Big5");
1643 data.input_encodings.push_back("UTF-16"); 1597 data.input_encodings.push_back("UTF-16");
1644 data.input_encodings.push_back("Big5"); 1598 data.input_encodings.push_back("Big5");
1645 data.input_encodings.push_back("Windows-1252"); 1599 data.input_encodings.push_back("Windows-1252");
1646 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 1600 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
1647 model()->Add(t_url); 1601 model()->Add(t_url);
1648 1602
1649 VerifyObserverCount(1); 1603 VerifyObserverCount(1);
1650 test_util_.BlockTillServiceProcessesRequests(); 1604 base::RunLoop().RunUntilIdle();
1651 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1605 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1652 const TemplateURL* loaded_url = 1606 const TemplateURL* loaded_url =
1653 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1607 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1654 ASSERT_TRUE(loaded_url != NULL); 1608 ASSERT_TRUE(loaded_url != NULL);
1655 EXPECT_EQ(8U, loaded_url->input_encodings().size()); 1609 EXPECT_EQ(8U, loaded_url->input_encodings().size());
1656 1610
1657 // Reload the model to verify it was actually saved to the database and the 1611 // Reload the model to verify it was actually saved to the database and the
1658 // duplicate encodings were removed. 1612 // duplicate encodings were removed.
1659 test_util_.ResetModel(true); 1613 test_util_.ResetModel(true);
1660 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1614 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1661 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1615 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1662 ASSERT_FALSE(loaded_url == NULL); 1616 ASSERT_FALSE(loaded_url == NULL);
1663 EXPECT_EQ(4U, loaded_url->input_encodings().size()); 1617 EXPECT_EQ(4U, loaded_url->input_encodings().size());
1664 } 1618 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698