| Index: chrome/browser/search_engines/template_url_service_unittest.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service_unittest.cc b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| index 3f2ef59a3d41d53826971ef67aa3b98a340921ff..5237b7e75b47f32e6ec26e79fe69ecd3d6d88c24 100644
|
| --- a/chrome/browser/search_engines/template_url_service_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| @@ -187,6 +187,20 @@
|
| TemplateURL* CreatePreloadedTemplateURL(bool safe_for_autoreplace,
|
| int prepopulate_id);
|
|
|
| + // Creates a TemplateURL with the same prepopulated id as a real prepopulated
|
| + // item. The input number determines which prepopulated item. The caller is
|
| + // responsible for owning the returned TemplateURL*.
|
| + TemplateURL* CreateReplaceablePreloadedTemplateURL(
|
| + bool safe_for_autoreplace,
|
| + size_t index_offset_from_default,
|
| + base::string16* prepopulated_display_url);
|
| +
|
| + // Verifies the behavior of when a preloaded url later gets changed.
|
| + // Since the input is the offset from the default, when one passes in
|
| + // 0, it tests the default. Passing in a number > 0 will verify what
|
| + // happens when a preloaded url that is not the default gets updated.
|
| + void TestLoadUpdatingPreloadedURL(size_t index_offset_from_default);
|
| +
|
| // Helper methods to make calling TemplateURLServiceTestUtil methods less
|
| // visually noisy in the test code.
|
| void VerifyObserverCount(int expected_changed_count);
|
| @@ -227,21 +241,6 @@
|
|
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTest);
|
| -};
|
| -
|
| -class TemplateURLServiceWithoutFallbackTest : public TemplateURLServiceTest {
|
| - public:
|
| - TemplateURLServiceWithoutFallbackTest() : TemplateURLServiceTest() {}
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - TemplateURLService::set_fallback_search_engines_disabled(true);
|
| - TemplateURLServiceTest::SetUp();
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE {
|
| - TemplateURLServiceTest::TearDown();
|
| - TemplateURLService::set_fallback_search_engines_disabled(false);
|
| - }
|
| };
|
|
|
| TemplateURLServiceTest::TemplateURLServiceTest() {
|
| @@ -305,6 +304,64 @@
|
| data.last_modified = Time::FromTimeT(100);
|
| data.prepopulate_id = prepopulate_id;
|
| return new TemplateURL(test_util_.profile(), data);
|
| +}
|
| +
|
| +TemplateURL* TemplateURLServiceTest::CreateReplaceablePreloadedTemplateURL(
|
| + bool safe_for_autoreplace,
|
| + size_t index_offset_from_default,
|
| + base::string16* prepopulated_display_url) {
|
| + size_t default_search_provider_index = 0;
|
| + ScopedVector<TemplateURLData> prepopulated_urls =
|
| + TemplateURLPrepopulateData::GetPrepopulatedEngines(
|
| + test_util_.profile()->GetPrefs(), &default_search_provider_index);
|
| + EXPECT_LT(index_offset_from_default, prepopulated_urls.size());
|
| + size_t prepopulated_index = (default_search_provider_index +
|
| + index_offset_from_default) % prepopulated_urls.size();
|
| + TemplateURL* t_url = CreatePreloadedTemplateURL(safe_for_autoreplace,
|
| + prepopulated_urls[prepopulated_index]->prepopulate_id);
|
| + *prepopulated_display_url =
|
| + TemplateURL(NULL, *prepopulated_urls[prepopulated_index]).url_ref().
|
| + DisplayURL();
|
| + return t_url;
|
| +}
|
| +
|
| +void TemplateURLServiceTest::TestLoadUpdatingPreloadedURL(
|
| + size_t index_offset_from_default) {
|
| + base::string16 prepopulated_url;
|
| + TemplateURL* t_url = CreateReplaceablePreloadedTemplateURL(false,
|
| + index_offset_from_default, &prepopulated_url);
|
| +
|
| + base::string16 original_url = t_url->url_ref().DisplayURL();
|
| + std::string original_guid = t_url->sync_guid();
|
| + EXPECT_NE(prepopulated_url, original_url);
|
| +
|
| + // Then add it to the model and save it all.
|
| + test_util_.ChangeModelToLoadState();
|
| + model()->Add(t_url);
|
| + const TemplateURL* keyword_url =
|
| + model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
|
| + ASSERT_TRUE(keyword_url != NULL);
|
| + EXPECT_EQ(t_url, keyword_url);
|
| + EXPECT_EQ(original_url, keyword_url->url_ref().DisplayURL());
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Now reload the model and verify that the merge updates the url, and
|
| + // preserves the sync GUID.
|
| + test_util_.ResetModel(true);
|
| + keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
|
| + ASSERT_TRUE(keyword_url != NULL);
|
| + EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL());
|
| + EXPECT_EQ(original_guid, keyword_url->sync_guid());
|
| +
|
| + // Wait for any saves to finish.
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Reload the model to verify that change was saved correctly.
|
| + test_util_.ResetModel(true);
|
| + keyword_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
|
| + ASSERT_TRUE(keyword_url != NULL);
|
| + EXPECT_EQ(prepopulated_url, keyword_url->url_ref().DisplayURL());
|
| + EXPECT_EQ(original_guid, keyword_url->sync_guid());
|
| }
|
|
|
| void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
|
| @@ -992,11 +1049,11 @@
|
| }
|
| }
|
|
|
| -TEST_F(TemplateURLServiceWithoutFallbackTest, ChangeGoogleBaseValue) {
|
| - // NOTE: Do not load the prepopulate data, which also has a {google:baseURL}
|
| - // keyword in it and would confuse this test.
|
| +TEST_F(TemplateURLServiceTest, ChangeGoogleBaseValue) {
|
| + // NOTE: Do not do a VerifyLoad() here as it will load the prepopulate data,
|
| + // which also has a {google:baseURL} keyword in it, which will confuse this
|
| + // test.
|
| test_util_.ChangeModelToLoadState();
|
| -
|
| test_util_.SetGoogleBaseURL(GURL("http://google.com/"));
|
| const TemplateURL* t_url = AddKeywordWithDate(
|
| "name", "google.com", "{google:baseURL}?q={searchTerms}", "http://sugg1",
|
| @@ -1171,6 +1228,42 @@
|
| default_search = model()->GetDefaultSearchProvider();
|
| ASSERT_TRUE(default_search != NULL);
|
| AssertEquals(*cloned_url, *default_search);
|
| +}
|
| +
|
| +TEST_F(TemplateURLServiceTest, FindNewDefaultSearchProvider) {
|
| + // Ensure that if our service is initially empty, we don't initial have a
|
| + // valid new DSP.
|
| + EXPECT_FALSE(model()->FindNewDefaultSearchProvider());
|
| +
|
| + // Add a few entries with searchTerms, but ensure only the last one is in the
|
| + // default list.
|
| + AddKeywordWithDate("name1", "key1", "http://foo1/{searchTerms}",
|
| + "http://sugg1", std::string(), "http://icon1", true,
|
| + "UTF-8;UTF-16", Time(), Time());
|
| + AddKeywordWithDate("name2", "key2", "http://foo2/{searchTerms}",
|
| + "http://sugg2", std::string(), "http://icon1", true,
|
| + "UTF-8;UTF-16", Time(), Time());
|
| + AddKeywordWithDate("name3", "key3", "http://foo1/{searchTerms}",
|
| + "http://sugg3", std::string(), "http://icon3", true,
|
| + "UTF-8;UTF-16", Time(), Time());
|
| + TemplateURLData data;
|
| + data.short_name = ASCIIToUTF16("valid");
|
| + data.SetKeyword(ASCIIToUTF16("validkeyword"));
|
| + data.SetURL("http://valid/{searchTerms}");
|
| + data.favicon_url = GURL("http://validicon");
|
| + data.show_in_default_list = true;
|
| + TemplateURL* valid_turl(new TemplateURL(test_util_.profile(), data));
|
| + model()->Add(valid_turl);
|
| + EXPECT_EQ(4U, model()->GetTemplateURLs().size());
|
| +
|
| + // Request a new DSP from the service and only expect the valid one.
|
| + TemplateURL* new_default = model()->FindNewDefaultSearchProvider();
|
| + ASSERT_TRUE(new_default);
|
| + EXPECT_EQ(valid_turl, new_default);
|
| +
|
| + // Remove the default we received and ensure that the service returns NULL.
|
| + model()->Remove(new_default);
|
| + EXPECT_FALSE(model()->FindNewDefaultSearchProvider());
|
| }
|
|
|
| // Make sure that the load routine doesn't delete
|
| @@ -1218,13 +1311,37 @@
|
| }
|
| }
|
|
|
| +// Make sure that the load routine updates the url of a preexisting
|
| +// default search engine provider and that the result is saved correctly.
|
| +TEST_F(TemplateURLServiceTest, LoadUpdatesDefaultSearchURL) {
|
| + TestLoadUpdatingPreloadedURL(0);
|
| +}
|
| +
|
| +// Make sure that the load routine updates the url of a preexisting
|
| +// non-default search engine provider and that the result is saved correctly.
|
| +TEST_F(TemplateURLServiceTest, LoadUpdatesSearchURL) {
|
| + TestLoadUpdatingPreloadedURL(1);
|
| +}
|
| +
|
| // Make sure that the load routine sets a default search provider if it was
|
| // missing and not managed.
|
| TEST_F(TemplateURLServiceTest, LoadEnsuresDefaultSearchProviderExists) {
|
| // Force the model to load and make sure we have a default search provider.
|
| test_util_.VerifyLoad();
|
| - EXPECT_TRUE(model()->GetDefaultSearchProvider());
|
| -
|
| + TemplateURL* old_default = model()->GetDefaultSearchProvider();
|
| + EXPECT_TRUE(old_default);
|
| +
|
| + // Now remove it.
|
| + model()->SetUserSelectedDefaultSearchProvider(NULL);
|
| + model()->Remove(old_default);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + EXPECT_FALSE(model()->GetDefaultSearchProvider());
|
| +
|
| + // Reset the model and load it. There should be a default search provider.
|
| + test_util_.ResetModel(true);
|
| +
|
| + ASSERT_TRUE(model()->GetDefaultSearchProvider());
|
| EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement());
|
|
|
| // Make default search provider unusable (no search terms).
|
| @@ -1342,10 +1459,10 @@
|
| EXPECT_FALSE(model()->is_default_search_managed());
|
| EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
|
|
|
| - // The default should now be the user preference.
|
| + // The default should now be the first URL added
|
| const TemplateURL* actual_final_managed_default =
|
| model()->GetDefaultSearchProvider();
|
| - ExpectSimilar(regular_default, actual_final_managed_default);
|
| + ExpectSimilar(model()->GetTemplateURLs()[0], actual_final_managed_default);
|
| EXPECT_EQ(actual_final_managed_default->show_in_default_list(), true);
|
|
|
| // Disable the default search provider through policy.
|
|
|