Index: chrome/browser/search_engines/template_url_model_unittest.cc |
=================================================================== |
--- chrome/browser/search_engines/template_url_model_unittest.cc (revision 30401) |
+++ chrome/browser/search_engines/template_url_model_unittest.cc (working copy) |
@@ -690,3 +690,51 @@ |
EXPECT_EQ(PageTransition::KEYWORD_GENERATED, |
PageTransition::StripQualifier(callback.visits[0].transition)); |
} |
+ |
+// Make sure that MergeEnginesFromPrepopulateData() deletes prepopulated engines |
+// that no longer exist in the prepopulate data. |
+TEST_F(TemplateURLModelTest, MergeDeletesUnusedProviders) { |
+ VerifyLoad(); |
+ |
+ // Create an URL that appears to have been prepopulated but won't be in the |
+ // current data. |
+ TemplateURL* t_url = new TemplateURL(); |
+ t_url->SetURL(L"http://www.unittest.com/", 0, 0); |
+ t_url->set_keyword(L"unittest"); |
+ t_url->set_short_name(L"unittest"); |
+ t_url->set_safe_for_autoreplace(true); |
+ GURL favicon_url("http://favicon.url"); |
+ t_url->SetFavIconURL(favicon_url); |
+ t_url->set_date_created(Time::FromTimeT(100)); |
+ t_url->set_prepopulate_id(999999); |
+ |
+ // Make a few copies now, since as we add each to the model it takes ownership |
+ // of them and deletes them when finished. |
+ TemplateURL* t_url2 = new TemplateURL(*t_url); |
+ TemplateURL* t_url3 = new TemplateURL(*t_url); |
+ |
+ // Ensure that merging clears this engine. |
+ model_->Add(t_url); |
+ EXPECT_EQ(t_url, model_->GetTemplateURLForKeyword(L"unittest")); |
+ model_->MergeEnginesFromPrepopulateData(); |
+ ASSERT_TRUE(model_->GetTemplateURLForKeyword(L"unittest") == NULL); |
+ |
+ // Ensure that merging won't clear it if the user has edited it. |
+ t_url2->set_safe_for_autoreplace(false); |
+ model_->Add(t_url2); |
+ ASSERT_EQ(t_url2, model_->GetTemplateURLForKeyword(L"unittest")); |
+ model_->MergeEnginesFromPrepopulateData(); |
+ ASSERT_FALSE(model_->GetTemplateURLForKeyword(L"unittest") == NULL); |
+ model_->Remove(t_url2); |
+ |
+ // Ensure that merging won't clear it if it's the default engine. |
+ model_->Add(t_url3); |
+ ASSERT_EQ(t_url3, model_->GetTemplateURLForKeyword(L"unittest")); |
+ model_->SetDefaultSearchProvider(t_url3); |
+ ASSERT_EQ(t_url3, model_->GetDefaultSearchProvider()); |
+ model_->MergeEnginesFromPrepopulateData(); |
+ ASSERT_EQ(t_url3, model_->GetTemplateURLForKeyword(L"unittest")); |
+ ASSERT_EQ(t_url3, model_->GetDefaultSearchProvider()); |
+ // Don't remove |t_url3|; we'd need to make it non-default first, and why |
+ // bother when the model shutdown will clean it up for us. |
+} |