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

Unified Diff: chrome/browser/search_engines/template_url_service_sync_unittest.cc

Issue 12084076: Ensure post-sync TemplateURL of prepopulated engines use built-in version. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change according to pkasting comments. Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
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());
+}
« no previous file with comments | « chrome/browser/search_engines/template_url_service.cc ('k') | chrome/browser/search_engines/template_url_service_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698