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

Side by Side Diff: chrome/browser/search_engines/template_url_service_sync_unittest.cc

Issue 10021008: Reland r131019: Move most TemplateURL data members to a new struct, TemplateURLData. This allows us… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/search_engines/template_url.h" 9 #include "chrome/browser/search_engines/template_url.h"
10 #include "chrome/browser/search_engines/template_url_service.h" 10 #include "chrome/browser/search_engines/template_url_service.h"
(...skipping 26 matching lines...) Expand all
37 return sync_data.GetSpecifics().search_engine().keyword(); 37 return sync_data.GetSpecifics().search_engine().keyword();
38 } 38 }
39 39
40 // TODO(stevet): Share these with template_url_service_unittest. 40 // TODO(stevet): Share these with template_url_service_unittest.
41 // Set the managed preferences for the default search provider and trigger 41 // Set the managed preferences for the default search provider and trigger
42 // notification. 42 // notification.
43 void SetManagedDefaultSearchPreferences(TemplateURLService* turl_service, 43 void SetManagedDefaultSearchPreferences(TemplateURLService* turl_service,
44 TestingProfile* profile, 44 TestingProfile* profile,
45 bool enabled, 45 bool enabled,
46 const std::string& name, 46 const std::string& name,
47 const std::string& keyword,
47 const std::string& search_url, 48 const std::string& search_url,
48 const std::string& suggest_url, 49 const std::string& suggest_url,
49 const std::string& icon_url, 50 const std::string& icon_url,
50 const std::string& encodings, 51 const std::string& encodings) {
51 const std::string& keyword) {
52 TestingPrefService* pref_service = profile->GetTestingPrefService(); 52 TestingPrefService* pref_service = profile->GetTestingPrefService();
53 pref_service->SetManagedPref(prefs::kDefaultSearchProviderEnabled, 53 pref_service->SetManagedPref(prefs::kDefaultSearchProviderEnabled,
54 Value::CreateBooleanValue(enabled)); 54 Value::CreateBooleanValue(enabled));
55 pref_service->SetManagedPref(prefs::kDefaultSearchProviderName, 55 pref_service->SetManagedPref(prefs::kDefaultSearchProviderName,
56 Value::CreateStringValue(name)); 56 Value::CreateStringValue(name));
57 pref_service->SetManagedPref(prefs::kDefaultSearchProviderKeyword,
58 Value::CreateStringValue(keyword));
57 pref_service->SetManagedPref(prefs::kDefaultSearchProviderSearchURL, 59 pref_service->SetManagedPref(prefs::kDefaultSearchProviderSearchURL,
58 Value::CreateStringValue(search_url)); 60 Value::CreateStringValue(search_url));
59 pref_service->SetManagedPref(prefs::kDefaultSearchProviderSuggestURL, 61 pref_service->SetManagedPref(prefs::kDefaultSearchProviderSuggestURL,
60 Value::CreateStringValue(suggest_url)); 62 Value::CreateStringValue(suggest_url));
61 pref_service->SetManagedPref(prefs::kDefaultSearchProviderIconURL, 63 pref_service->SetManagedPref(prefs::kDefaultSearchProviderIconURL,
62 Value::CreateStringValue(icon_url)); 64 Value::CreateStringValue(icon_url));
63 pref_service->SetManagedPref(prefs::kDefaultSearchProviderEncodings, 65 pref_service->SetManagedPref(prefs::kDefaultSearchProviderEncodings,
64 Value::CreateStringValue(encodings)); 66 Value::CreateStringValue(encodings));
65 pref_service->SetManagedPref(prefs::kDefaultSearchProviderKeyword,
66 Value::CreateStringValue(keyword));
67 } 67 }
68 68
69 // Remove all the managed preferences for the default search provider and 69 // Remove all the managed preferences for the default search provider and
70 // trigger notification. 70 // trigger notification.
71 void RemoveManagedDefaultSearchPreferences(TemplateURLService* turl_service, 71 void RemoveManagedDefaultSearchPreferences(TemplateURLService* turl_service,
72 TestingProfile* profile) { 72 TestingProfile* profile) {
73 TestingPrefService* pref_service = profile->GetTestingPrefService(); 73 TestingPrefService* pref_service = profile->GetTestingPrefService();
74 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderSearchURL);
75 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderEnabled); 74 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderEnabled);
76 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderName); 75 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderName);
76 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderKeyword);
77 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderSearchURL);
77 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderSuggestURL); 78 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderSuggestURL);
78 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderIconURL); 79 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderIconURL);
79 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderEncodings); 80 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderEncodings);
80 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderKeyword);
81 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderID); 81 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderID);
82 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderPrepopulateID); 82 pref_service->RemoveManagedPref(prefs::kDefaultSearchProviderPrepopulateID);
83 } 83 }
84 84
85 85
86 // TestChangeProcessor -------------------------------------------------------- 86 // TestChangeProcessor --------------------------------------------------------
87 87
88 // Dummy SyncChangeProcessor used to help review what SyncChanges are pushed 88 // Dummy SyncChangeProcessor used to help review what SyncChanges are pushed
89 // back up to Sync. 89 // back up to Sync.
90 class TestChangeProcessor : public SyncChangeProcessor { 90 class TestChangeProcessor : public SyncChangeProcessor {
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 scoped_ptr<SyncChangeProcessor> TemplateURLServiceSyncTest::PassProcessor() { 260 scoped_ptr<SyncChangeProcessor> TemplateURLServiceSyncTest::PassProcessor() {
261 return sync_processor_delegate_.PassAs<SyncChangeProcessor>(); 261 return sync_processor_delegate_.PassAs<SyncChangeProcessor>();
262 } 262 }
263 263
264 TemplateURL* TemplateURLServiceSyncTest::CreateTestTemplateURL( 264 TemplateURL* TemplateURLServiceSyncTest::CreateTestTemplateURL(
265 const string16& keyword, 265 const string16& keyword,
266 const std::string& url, 266 const std::string& url,
267 const std::string& guid, 267 const std::string& guid,
268 time_t last_mod, 268 time_t last_mod,
269 bool created_by_policy) const { 269 bool created_by_policy) const {
270 TemplateURL* turl = new TemplateURL(); 270 TemplateURLData data;
271 turl->set_short_name(ASCIIToUTF16("unittest")); 271 data.short_name = ASCIIToUTF16("unittest");
272 turl->set_keyword(keyword); 272 data.SetKeyword(keyword);
273 turl->set_safe_for_autoreplace(true); 273 data.SetURL(url);
274 turl->set_date_created(Time::FromTimeT(100)); 274 data.favicon_url = GURL("http://favicon.url");
275 turl->set_last_modified(Time::FromTimeT(last_mod)); 275 data.safe_for_autoreplace = true;
276 turl->set_created_by_policy(created_by_policy); 276 data.date_created = Time::FromTimeT(100);
277 turl->SetPrepopulateId(999999); 277 data.last_modified = Time::FromTimeT(last_mod);
278 data.created_by_policy = created_by_policy;
279 data.prepopulate_id = 999999;
278 if (!guid.empty()) 280 if (!guid.empty())
279 turl->set_sync_guid(guid); 281 data.sync_guid = guid;
280 turl->SetURL(url); 282 return new TemplateURL(data);
281 turl->set_favicon_url(GURL("http://favicon.url"));
282 return turl;
283 } 283 }
284 284
285 void TemplateURLServiceSyncTest::AssertEquals(const TemplateURL& expected, 285 void TemplateURLServiceSyncTest::AssertEquals(const TemplateURL& expected,
286 const TemplateURL& actual) const { 286 const TemplateURL& actual) const {
287 ASSERT_EQ(expected.short_name(), actual.short_name()); 287 ASSERT_EQ(expected.short_name(), actual.short_name());
288 ASSERT_EQ(expected.keyword(), actual.keyword());
288 ASSERT_EQ(expected.url(), actual.url()); 289 ASSERT_EQ(expected.url(), actual.url());
289 ASSERT_EQ(expected.suggestions_url(), actual.suggestions_url()); 290 ASSERT_EQ(expected.suggestions_url(), actual.suggestions_url());
290 ASSERT_EQ(expected.keyword(), actual.keyword()); 291 ASSERT_EQ(expected.favicon_url(), actual.favicon_url());
291 ASSERT_EQ(expected.show_in_default_list(), actual.show_in_default_list()); 292 ASSERT_EQ(expected.show_in_default_list(), actual.show_in_default_list());
292 ASSERT_EQ(expected.safe_for_autoreplace(), actual.safe_for_autoreplace()); 293 ASSERT_EQ(expected.safe_for_autoreplace(), actual.safe_for_autoreplace());
293 ASSERT_EQ(expected.favicon_url(), actual.favicon_url());
294 ASSERT_EQ(expected.input_encodings(), actual.input_encodings()); 294 ASSERT_EQ(expected.input_encodings(), actual.input_encodings());
295 ASSERT_EQ(expected.date_created(), actual.date_created()); 295 ASSERT_EQ(expected.date_created(), actual.date_created());
296 ASSERT_EQ(expected.last_modified(), actual.last_modified()); 296 ASSERT_EQ(expected.last_modified(), actual.last_modified());
297 } 297 }
298 298
299 void TemplateURLServiceSyncTest::AssertEquals(const SyncDataList& data1, 299 void TemplateURLServiceSyncTest::AssertEquals(const SyncDataList& data1,
300 const SyncDataList& data2) const { 300 const SyncDataList& data2) const {
301 SyncDataMap map1 = TemplateURLService::CreateGUIDToSyncDataMap(data1); 301 SyncDataMap map1 = TemplateURLService::CreateGUIDToSyncDataMap(data1);
302 SyncDataMap map2 = TemplateURLService::CreateGUIDToSyncDataMap(data2); 302 SyncDataMap map2 = TemplateURLService::CreateGUIDToSyncDataMap(data2);
303 303
(...skipping 30 matching lines...) Expand all
334 list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*turl)); 334 list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*turl));
335 turl.reset(CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", 335 turl.reset(CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com",
336 "key3", 90)); 336 "key3", 90));
337 list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*turl)); 337 list.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(*turl));
338 338
339 return list; 339 return list;
340 } 340 }
341 341
342 TemplateURL* TemplateURLServiceSyncTest::Deserialize( 342 TemplateURL* TemplateURLServiceSyncTest::Deserialize(
343 const SyncData& sync_data) { 343 const SyncData& sync_data) {
344 return TemplateURLService::CreateTemplateURLFromSyncData(sync_data); 344 return TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData(NULL,
345 sync_data);
345 } 346 }
346 347
347 348
348 // Actual tests --------------------------------------------------------------- 349 // Actual tests ---------------------------------------------------------------
349 350
350 TEST_F(TemplateURLServiceSyncTest, SerializeDeserialize) { 351 TEST_F(TemplateURLServiceSyncTest, SerializeDeserialize) {
351 // Create a TemplateURL and convert it into a sync specific type. 352 // Create a TemplateURL and convert it into a sync specific type.
352 scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("unittest"), 353 scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("unittest"),
353 "http://www.unittest.com/")); 354 "http://www.unittest.com/"));
354 SyncData sync_data = TemplateURLService::CreateSyncDataFromTemplateURL(*turl); 355 SyncData sync_data = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 1091
1091 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", 1092 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com",
1092 "key1", 10)); // earlier 1093 "key1", 10)); // earlier
1093 1094
1094 SyncError error = model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES, 1095 SyncError error = model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES,
1095 initial_data, PassProcessor()); 1096 initial_data, PassProcessor());
1096 ASSERT_FALSE(error.IsSet()); 1097 ASSERT_FALSE(error.IsSet());
1097 1098
1098 // We should have updated the original TemplateURL with Sync's version. 1099 // We should have updated the original TemplateURL with Sync's version.
1099 // Keep a copy of it so we can compare it after we re-merge. 1100 // Keep a copy of it so we can compare it after we re-merge.
1100 ASSERT_TRUE(model()->GetTemplateURLForGUID("key1")); 1101 const TemplateURL* key1_url = model()->GetTemplateURLForGUID("key1");
1101 TemplateURL updated_turl(*model()->GetTemplateURLForGUID("key1")); 1102 ASSERT_TRUE(key1_url);
1102 EXPECT_EQ(Time::FromTimeT(90), updated_turl.last_modified()); 1103 scoped_ptr<TemplateURL> updated_turl(new TemplateURL(key1_url->data()));
1104 EXPECT_EQ(Time::FromTimeT(90), updated_turl->last_modified());
1103 1105
1104 // Modify a single field of the initial data. This should not be updated in 1106 // Modify a single field of the initial data. This should not be updated in
1105 // the second merge, as the last_modified timestamp remains the same. 1107 // the second merge, as the last_modified timestamp remains the same.
1106 scoped_ptr<TemplateURL> temp_turl(Deserialize(initial_data[0])); 1108 scoped_ptr<TemplateURL> temp_turl(Deserialize(initial_data[0]));
1107 temp_turl->set_short_name(ASCIIToUTF16("SomethingDifferent")); 1109 TemplateURLData data(temp_turl->data());
1110 data.short_name = ASCIIToUTF16("SomethingDifferent");
1111 temp_turl.reset(new TemplateURL(data));
1108 initial_data.clear(); 1112 initial_data.clear();
1109 initial_data.push_back( 1113 initial_data.push_back(
1110 TemplateURLService::CreateSyncDataFromTemplateURL(*temp_turl)); 1114 TemplateURLService::CreateSyncDataFromTemplateURL(*temp_turl));
1111 1115
1112 // Remerge the data again. This simulates shutting down and syncing again 1116 // Remerge the data again. This simulates shutting down and syncing again
1113 // at a different time, but the cloud data has not changed. 1117 // at a different time, but the cloud data has not changed.
1114 model()->StopSyncing(syncable::SEARCH_ENGINES); 1118 model()->StopSyncing(syncable::SEARCH_ENGINES);
1115 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate( 1119 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate(
1116 sync_processor_.get())); 1120 sync_processor_.get()));
1117 error = model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES, 1121 error = model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES,
1118 initial_data, PassProcessor()); 1122 initial_data, PassProcessor());
1119 ASSERT_FALSE(error.IsSet()); 1123 ASSERT_FALSE(error.IsSet());
1120 1124
1121 // Check that the TemplateURL was not modified. 1125 // Check that the TemplateURL was not modified.
1122 const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("key1"); 1126 const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("key1");
1123 ASSERT_TRUE(reupdated_turl); 1127 ASSERT_TRUE(reupdated_turl);
1124 AssertEquals(updated_turl, *reupdated_turl); 1128 AssertEquals(*updated_turl, *reupdated_turl);
1125 } 1129 }
1126 1130
1127 TEST_F(TemplateURLServiceSyncTest, SyncedDefaultGUIDArrivesFirst) { 1131 TEST_F(TemplateURLServiceSyncTest, SyncedDefaultGUIDArrivesFirst) {
1128 SyncDataList initial_data = CreateInitialSyncData(); 1132 SyncDataList initial_data = CreateInitialSyncData();
1129 model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES, initial_data, 1133 model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES, initial_data,
1130 PassProcessor()); 1134 PassProcessor());
1131 model()->SetDefaultSearchProvider(model()->GetTemplateURLForGUID("key2")); 1135 model()->SetDefaultSearchProvider(model()->GetTemplateURLForGUID("key2"));
1132 1136
1133 EXPECT_EQ(3U, model()->GetAllSyncData(syncable::SEARCH_ENGINES).size()); 1137 EXPECT_EQ(3U, model()->GetAllSyncData(syncable::SEARCH_ENGINES).size());
1134 const TemplateURL* default_search = model()->GetDefaultSearchProvider(); 1138 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 1288
1285 // The key1 entry should be a duplicate of the default. 1289 // The key1 entry should be a duplicate of the default.
1286 model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES, 1290 model()->MergeDataAndStartSyncing(syncable::SEARCH_ENGINES,
1287 CreateInitialSyncData(), PassProcessor()); 1291 CreateInitialSyncData(), PassProcessor());
1288 1292
1289 EXPECT_EQ(3U, model()->GetAllSyncData(syncable::SEARCH_ENGINES).size()); 1293 EXPECT_EQ(3U, model()->GetAllSyncData(syncable::SEARCH_ENGINES).size());
1290 EXPECT_FALSE(model()->GetTemplateURLForGUID("whateverguid")); 1294 EXPECT_FALSE(model()->GetTemplateURLForGUID("whateverguid"));
1291 EXPECT_EQ(model()->GetDefaultSearchProvider(), 1295 EXPECT_EQ(model()->GetDefaultSearchProvider(),
1292 model()->GetTemplateURLForGUID("key1")); 1296 model()->GetTemplateURLForGUID("key1"));
1293 } 1297 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_service.cc ('k') | chrome/browser/search_engines/template_url_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698