Index: chrome/browser/search_engines/template_url_service_sync_unittest.cc |
diff --git a/chrome/browser/search_engines/template_url_service_sync_unittest.cc b/chrome/browser/search_engines/template_url_service_sync_unittest.cc |
index 3c01b17092aadff9cc2368ca9247bfa31bf9c247..92a6be280703128570cd4a9ecb37aadd6270c6e0 100644 |
--- a/chrome/browser/search_engines/template_url_service_sync_unittest.cc |
+++ b/chrome/browser/search_engines/template_url_service_sync_unittest.cc |
@@ -225,6 +225,12 @@ class TemplateURLServiceSyncTest : public testing::Test { |
// Syntactic sugar. |
TemplateURL* Deserialize(const syncer::SyncData& sync_data); |
+ // Creates a new TemplateURL copying the fields of |turl| but replacing |
+ // the |url| and |guid|. The caller owns the returned TemplateURL*. |
SteveT
2013/02/04 19:00:18
Do you want to mention something about what you do
beaudoin
2013/02/04 20:01:31
Done.
|
+ TemplateURL* CopyTemplateURL(const TemplateURL* turl, |
+ const std::string& url, |
+ const std::string& guid); |
+ |
protected: |
// We keep two TemplateURLServices to test syncing between them. |
TemplateURLServiceTestUtil test_util_a_; |
@@ -361,6 +367,17 @@ TemplateURL* TemplateURLServiceSyncTest::Deserialize( |
NULL, sync_data, &dummy); |
} |
+TemplateURL* TemplateURLServiceSyncTest::CopyTemplateURL( |
+ const TemplateURL* turl, |
+ const std::string& url, |
+ const std::string& guid) { |
+ TemplateURLData data (turl->data()); |
+ data.SetURL(url); |
+ data.date_created = Time::FromTimeT(100); |
+ data.last_modified = Time::FromTimeT(100); |
+ data.sync_guid = guid; |
+ return new TemplateURL(NULL, data); |
+} |
// Actual tests --------------------------------------------------------------- |
@@ -1690,8 +1707,12 @@ TEST_F(TemplateURLServiceSyncTest, SyncWithManagedDefaultSearch) { |
const char kSearchURL[] = "http://manageddefault.com/search?t={searchTerms}"; |
const char kIconURL[] = "http://manageddefault.com/icon.jpg"; |
const char kEncodings[] = "UTF-16;UTF-32"; |
+ const char kAlternateURL[] = |
+ "http://manageddefault.com/search#t={searchTerms}"; |
+ const char kSearchTermsReplacementKey[] = "espv"; |
test_util_a_.SetManagedDefaultSearchPreferences(true, kName, kName, |
- kSearchURL, std::string(), kIconURL, kEncodings); |
+ kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL, |
+ kSearchTermsReplacementKey); |
const TemplateURL* dsp_turl = model()->GetDefaultSearchProvider(); |
EXPECT_TRUE(model()->is_default_search_managed()); |
@@ -2115,3 +2136,140 @@ TEST_F(TemplateURLServiceSyncTest, MergeInSyncTemplateURL) { |
} |
} // for |
} |
+ |
+TEST_F(TemplateURLServiceSyncTest, MergePrepopulatedEngine) { |
+ scoped_ptr<TemplateURL> default_turl( |
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
+ |
+ // Merge with an initial list containing a prepopulated engine with a wrong |
+ // URL. |
+ syncer::SyncDataList list; |
+ scoped_ptr<TemplateURL> sync_turl(CopyTemplateURL(default_turl.get(), |
+ "http://wrong.url.com?q={searchTerms}", "default")); |
+ list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl)); |
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( |
+ syncer::SEARCH_ENGINES, list, PassProcessor(), |
+ CreateAndPassSyncErrorFactory()); |
+ |
+ const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); |
+ EXPECT_TRUE(result_turl); |
+ EXPECT_EQ(default_turl->keyword(), result_turl->keyword()); |
+ EXPECT_EQ(default_turl->short_name(), result_turl->short_name()); |
+ EXPECT_EQ(default_turl->url(), result_turl->url()); |
SteveT
2013/02/04 19:00:18
Some of the above seem to be repeated a few times.
beaudoin
2013/02/04 20:01:31
I usually prefer to keep the expectations right in
|
+} |
+ |
+TEST_F(TemplateURLServiceSyncTest, AddPrepopulatedEngine) { |
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( |
+ syncer::SEARCH_ENGINES, syncer::SyncDataList(), PassProcessor(), |
+ CreateAndPassSyncErrorFactory()); |
+ |
+ scoped_ptr<TemplateURL> default_turl( |
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
+ TemplateURL* sync_turl = CopyTemplateURL(default_turl.get(), |
+ "http://wrong.url.com?q={searchTerms}", "default"); |
+ |
+ // Add a prepopulated engine with a wrong URL. |
+ syncer::SyncChangeList changes; |
+ changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, |
+ sync_turl)); |
+ model()->ProcessSyncChanges(FROM_HERE, changes); |
+ |
+ const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); |
+ EXPECT_TRUE(result_turl); |
+ EXPECT_EQ(default_turl->keyword(), result_turl->keyword()); |
+ EXPECT_EQ(default_turl->short_name(), result_turl->short_name()); |
+ EXPECT_EQ(default_turl->url(), result_turl->url()); |
+} |
+ |
+TEST_F(TemplateURLServiceSyncTest, UpdatePrepopulatedEngine) { |
+ scoped_ptr<TemplateURL> default_turl( |
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
+ |
+ TemplateURLData data(default_turl->data()); |
+ data.SetURL("http://old.wrong.url.com?q={searchTerms}"); |
+ data.sync_guid = "default"; |
+ model()->Add(new TemplateURL(NULL, data)); |
+ |
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( |
+ syncer::SEARCH_ENGINES, syncer::SyncDataList(), PassProcessor(), |
+ CreateAndPassSyncErrorFactory()); |
+ |
+ TemplateURL* sync_turl = CopyTemplateURL(default_turl.get(), |
+ "http://new.wrong.url.com?q={searchTerms}", "default"); |
+ |
+ // Update the engine in the model, which is prepopulated, with a new one. |
+ // Both have wrong URLs, but it should still get corrected. |
+ syncer::SyncChangeList changes; |
+ changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, |
+ sync_turl)); |
+ model()->ProcessSyncChanges(FROM_HERE, changes); |
+ |
+ const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); |
+ EXPECT_TRUE(result_turl); |
+ EXPECT_EQ(default_turl->keyword(), result_turl->keyword()); |
+ EXPECT_EQ(default_turl->short_name(), result_turl->short_name()); |
+ EXPECT_EQ(default_turl->url(), result_turl->url()); |
+} |
+ |
+TEST_F(TemplateURLServiceSyncTest, MergeEditedPrepopulatedEngine) { |
+ scoped_ptr<TemplateURL> default_turl( |
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
+ |
+ TemplateURLData data(default_turl->data()); |
+ data.safe_for_autoreplace = false; |
+ data.SetKeyword(ASCIIToUTF16("new_kw")); |
+ data.short_name = ASCIIToUTF16("my name"); |
+ data.SetURL("http://wrong.url.com?q={searchTerms}"); |
+ data.date_created = Time::FromTimeT(50); |
+ data.last_modified = Time::FromTimeT(50); |
+ data.sync_guid = "default"; |
+ model()->Add(new TemplateURL(NULL, data)); |
+ |
SteveT
2013/02/04 19:00:18
extra break here not needed.
beaudoin
2013/02/04 20:01:31
Done.
|
+ |
+ data.date_created = Time::FromTimeT(100); |
+ data.last_modified = Time::FromTimeT(100); |
+ scoped_ptr<TemplateURL> sync_turl(new TemplateURL(NULL, data)); |
+ syncer::SyncDataList list; |
+ list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl)); |
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( |
+ syncer::SEARCH_ENGINES, list, PassProcessor(), |
+ CreateAndPassSyncErrorFactory()); |
+ |
+ const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); |
+ EXPECT_TRUE(result_turl); |
+ EXPECT_EQ(ASCIIToUTF16("new_kw"), result_turl->keyword()); |
+ EXPECT_EQ(ASCIIToUTF16("my name"), result_turl->short_name()); |
+ EXPECT_EQ(default_turl->url(), result_turl->url()); |
+} |
+ |
+ |
+TEST_F(TemplateURLServiceSyncTest, MergeNonEditedPrepopulatedEngine) { |
+ scoped_ptr<TemplateURL> default_turl( |
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL)); |
+ |
+ TemplateURLData data(default_turl->data()); |
+ data.safe_for_autoreplace = true; // Can be replaced with built-in values. |
+ data.SetKeyword(ASCIIToUTF16("new_kw")); |
+ data.short_name = ASCIIToUTF16("my name"); |
+ data.SetURL("http://wrong.url.com?q={searchTerms}"); |
+ data.date_created = Time::FromTimeT(50); |
+ data.last_modified = Time::FromTimeT(50); |
+ data.sync_guid = "default"; |
+ model()->Add(new TemplateURL(NULL, data)); |
+ |
SteveT
2013/02/04 19:00:18
extra break here not needed
beaudoin
2013/02/04 20:01:31
Done.
|
+ |
+ data.date_created = Time::FromTimeT(100); |
+ data.last_modified = Time::FromTimeT(100); |
+ scoped_ptr<TemplateURL> sync_turl(new TemplateURL(NULL, data)); |
+ syncer::SyncDataList list; |
+ list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl)); |
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( |
+ syncer::SEARCH_ENGINES, list, PassProcessor(), |
+ CreateAndPassSyncErrorFactory()); |
+ |
+ const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); |
+ EXPECT_TRUE(result_turl); |
+ EXPECT_EQ(default_turl->keyword(), result_turl->keyword()); |
+ EXPECT_EQ(default_turl->short_name(), result_turl->short_name()); |
+ EXPECT_EQ(default_turl->url(), result_turl->url()); |
+} |