| 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..e48c99d1bad3ede390f988e3dbe9cea962b552b9 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,14 @@ 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| and initializing the date_created and last_modified
|
| + // timestamps to a default value of 100. The caller owns the returned
|
| + // TemplateURL*.
|
| + 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 +369,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 +1709,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 +2138,137 @@ 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());
|
| +}
|
| +
|
| +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));
|
| +
|
| + 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));
|
| +
|
| + 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());
|
| +}
|
|
|