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

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

Issue 2067723002: [sync] Search engine shortcuts get underscores at the end after sync (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added requested comments Created 4 years, 6 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
« no previous file with comments | « no previous file | components/search_engines/template_url_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ca3904c163a4ecf0693fb2a13a0ef0769f64f318..9d3e4ad1b80b150ae3a30f3d48d6d0e7e0acc3ed 100644
--- a/chrome/browser/search_engines/template_url_service_sync_unittest.cc
+++ b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
@@ -60,9 +60,10 @@ std::string GetKeyword(const syncer::SyncData& sync_data) {
// order to create custom data that should be handled specially when synced to a
// client.
syncer::SyncData CreateCustomSyncData(const TemplateURL& turl,
- bool autogenerate_keyword,
- const std::string& url,
- const std::string& sync_guid) {
+ bool autogenerate_keyword,
+ const std::string& url,
+ const std::string& sync_guid,
+ int prepopulate_id = -1) {
sync_pb::EntitySpecifics specifics;
sync_pb::SearchEngineSpecifics* se_specifics =
specifics.mutable_search_engine();
@@ -78,7 +79,8 @@ syncer::SyncData CreateCustomSyncData(const TemplateURL& turl,
base::JoinString(turl.input_encodings(), ";"));
se_specifics->set_show_in_default_list(turl.show_in_default_list());
se_specifics->set_suggestions_url(turl.suggestions_url());
- se_specifics->set_prepopulate_id(turl.prepopulate_id());
+ se_specifics->set_prepopulate_id(prepopulate_id == -1 ? turl.prepopulate_id()
+ : prepopulate_id);
se_specifics->set_autogenerate_keyword(autogenerate_keyword);
se_specifics->set_instant_url(turl.instant_url());
se_specifics->set_last_modified(turl.last_modified().ToInternalValue());
@@ -209,7 +211,8 @@ class TemplateURLServiceSyncTest : public testing::Test {
const std::string& guid = std::string(),
time_t last_mod = 100,
bool safe_for_autoreplace = false,
- bool created_by_policy = false) const;
+ bool created_by_policy = false,
+ int prepopulate_id = 999999) const;
// Verifies the two TemplateURLs are equal.
// TODO(stevet): Share this with TemplateURLServiceTest.
@@ -296,7 +299,8 @@ TemplateURL* TemplateURLServiceSyncTest::CreateTestTemplateURL(
const std::string& guid,
time_t last_mod,
bool safe_for_autoreplace,
- bool created_by_policy) const {
+ bool created_by_policy,
+ int prepopulate_id) const {
TemplateURLData data;
data.SetShortName(ASCIIToUTF16("unittest"));
data.SetKeyword(keyword);
@@ -306,7 +310,7 @@ TemplateURL* TemplateURLServiceSyncTest::CreateTestTemplateURL(
data.date_created = Time::FromTimeT(100);
data.last_modified = Time::FromTimeT(last_mod);
data.created_by_policy = created_by_policy;
- data.prepopulate_id = 999999;
+ data.prepopulate_id = prepopulate_id;
if (!guid.empty())
data.sync_guid = guid;
return new TemplateURL(data);
@@ -531,7 +535,7 @@ TEST_F(TemplateURLServiceSyncTest, IsLocalTemplateURLBetter) {
CreateTestTemplateURL(ASCIIToUTF16("synckey"), "www.sync.com",
"syncguid", test_cases[i].sync_time));
EXPECT_EQ(test_cases[i].expected_result,
- model()->IsLocalTemplateURLBetter(local_turl, sync_turl.get()));
+ model()->IsLocalTemplateURLBetter(local_turl, sync_turl.get()));
// Undo the changes.
if (test_cases[i].local_is_default)
@@ -854,13 +858,15 @@ TEST_F(TemplateURLServiceSyncTest, MergeAddFromNewerSyncData) {
// from Sync are newer. Set up the local data so that one is a dupe, one has a
// conflicting keyword, and the last has no conflicts (a clean ADD).
model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com",
- "aaa", 10)); // dupe
+ "aaa", 10, false, false, 111)); // dupe
model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"),
- "http://expected.com", "bbb", 10)); // keyword conflict
+ "http://expected.com", "bbb", 10, false,
+ false, 112)); // keyword conflict
model()->Add(CreateTestTemplateURL(ASCIIToUTF16("unique"),
- "http://unique.com", "ccc", 10)); // add
+ "http://unique.com", "ccc", 10, false,
+ false, 113)); // add
syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(
syncer::SEARCH_ENGINES,
@@ -1142,7 +1148,7 @@ TEST_F(TemplateURLServiceSyncTest, AutogeneratedKeywordMigrated) {
turl.reset(CreateTestTemplateURL(ASCIIToUTF16("key2"),
"{google:baseURL}search?q={searchTerms}", "key2"));
initial_data.push_back(
- CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid()));
+ CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid(), 99));
// Now try to sync the data locally.
model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
@@ -2221,6 +2227,70 @@ TEST_F(TemplateURLServiceSyncTest, MergeEditedPrepopulatedEngine) {
EXPECT_EQ(default_turl->url(), result_turl->url());
}
+TEST_F(TemplateURLServiceSyncTest, MergeConflictingPrepopulatedEngine) {
+ std::unique_ptr<TemplateURLData> default_turl(
+ TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(nullptr));
+
+ TemplateURLData data(*default_turl);
+ data.SetKeyword(ASCIIToUTF16("old_kw"));
+ data.SetShortName(ASCIIToUTF16("my name"));
+ data.SetURL("http://wrong.url.com?q={searchTerms}");
+ data.safe_for_autoreplace = true;
+ data.date_created = Time::FromTimeT(50);
+ data.last_modified = Time::FromTimeT(50);
+ data.prepopulate_id = 1;
+ data.sync_guid = "default";
+ model()->Add(new TemplateURL(data));
+
+ TemplateURLData new_data(*default_turl);
+ new_data.SetKeyword(ASCIIToUTF16("new_kw"));
+ new_data.SetShortName(ASCIIToUTF16("my name"));
+ new_data.SetURL("http://wrong.url.com?q={searchTerms}");
+ new_data.safe_for_autoreplace = false;
+ new_data.date_created = Time::FromTimeT(100);
+ new_data.last_modified = Time::FromTimeT(100);
+ new_data.prepopulate_id = 1;
+ new_data.sync_guid = "different_guid";
+
+ // Test that a remote TemplateURL can override a local TemplateURL not yet
+ // known to sync.
+ std::unique_ptr<TemplateURL> sync_turl =
+ base::MakeUnique<TemplateURL>(new_data);
+ syncer::SyncDataList list;
+ list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*sync_turl));
+ syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(
+ syncer::SEARCH_ENGINES, list, PassProcessor(),
+ CreateAndPassSyncErrorFactory());
+
+ TemplateURL* result_turl = model()->GetTemplateURLForGUID("different_guid");
+ 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());
+
+ // Reset the state of the service.
+ model()->Remove(result_turl);
+ model()->StopSyncing(syncer::SEARCH_ENGINES);
+ sync_processor_wrapper_.reset(
+ new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get()));
+
+ // Now test that a remote TemplateURL can override the attributes of the local
+ // default search provider.
+ TemplateURL* existing_default = new TemplateURL(data);
+ model()->Add(existing_default);
+ model()->SetUserSelectedDefaultSearchProvider(existing_default);
+
+ merge_result = model()->MergeDataAndStartSyncing(
+ syncer::SEARCH_ENGINES, list, PassProcessor(),
+ CreateAndPassSyncErrorFactory());
+
+ result_turl = model()->GetDefaultSearchProvider();
+ 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) {
std::unique_ptr<TemplateURLData> default_turl(
TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(NULL));
« no previous file with comments | « no previous file | components/search_engines/template_url_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698