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

Side by Side Diff: chrome/browser/sync/profile_sync_service_preference_unittest.cc

Issue 6375007: [Sync] Refactored ProfileSyncService and remove its backend() function (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add comment Created 9 years, 11 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "base/string_piece.h" 10 #include "base/string_piece.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 service_->RegisterDataTypeController( 88 service_->RegisterDataTypeController(
89 new PreferenceDataTypeController(&factory_, 89 new PreferenceDataTypeController(&factory_,
90 service_.get())); 90 service_.get()));
91 profile_->GetTokenService()->IssueAuthTokenForTest( 91 profile_->GetTokenService()->IssueAuthTokenForTest(
92 GaiaConstants::kSyncService, "token"); 92 GaiaConstants::kSyncService, "token");
93 service_->Initialize(); 93 service_->Initialize();
94 MessageLoop::current()->Run(); 94 MessageLoop::current()->Run();
95 return true; 95 return true;
96 } 96 }
97 97
98 SyncBackendHost* backend() { return service_->backend_.get(); }
99
100 const Value& GetPreferenceValue(const std::string& name) { 98 const Value& GetPreferenceValue(const std::string& name) {
101 const PrefService::Preference* preference = 99 const PrefService::Preference* preference =
102 prefs_->FindPreference(name.c_str()); 100 prefs_->FindPreference(name.c_str());
103 return *preference->GetValue(); 101 return *preference->GetValue();
104 } 102 }
105 103
106 // Caller gets ownership of the returned value. 104 // Caller gets ownership of the returned value.
107 const Value* GetSyncedValue(const std::string& name) { 105 const Value* GetSyncedValue(const std::string& name) {
108 sync_api::ReadTransaction trans(service_->backend()->GetUserShareHandle()); 106 sync_api::ReadTransaction trans(service_->GetUserShare());
109 sync_api::ReadNode node(&trans); 107 sync_api::ReadNode node(&trans);
110 108
111 int64 node_id = model_associator_->GetSyncIdFromChromeId(name); 109 int64 node_id = model_associator_->GetSyncIdFromChromeId(name);
112 if (node_id == sync_api::kInvalidId) 110 if (node_id == sync_api::kInvalidId)
113 return NULL; 111 return NULL;
114 if (!node.InitByIdLookup(node_id)) 112 if (!node.InitByIdLookup(node_id))
115 return NULL; 113 return NULL;
116 114
117 const sync_pb::PreferenceSpecifics& specifics( 115 const sync_pb::PreferenceSpecifics& specifics(
118 node.GetPreferenceSpecifics()); 116 node.GetPreferenceSpecifics());
119 117
120 JSONReader reader; 118 JSONReader reader;
121 return reader.JsonToValue(specifics.value(), false, false); 119 return reader.JsonToValue(specifics.value(), false, false);
122 } 120 }
123 121
124 int64 WriteSyncedValue(sync_api::WriteNode& node, 122 int64 WriteSyncedValue(sync_api::WriteNode& node,
125 const std::string& name, 123 const std::string& name,
126 const Value& value) { 124 const Value& value) {
127 if (!PreferenceModelAssociator::WritePreferenceToNode(name, value, &node)) 125 if (!PreferenceModelAssociator::WritePreferenceToNode(name, value, &node))
128 return sync_api::kInvalidId; 126 return sync_api::kInvalidId;
129 return node.GetId(); 127 return node.GetId();
130 } 128 }
131 129
132 int64 SetSyncedValue(const std::string& name, const Value& value) { 130 int64 SetSyncedValue(const std::string& name, const Value& value) {
133 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 131 sync_api::WriteTransaction trans(service_->GetUserShare());
134 sync_api::ReadNode root(&trans); 132 sync_api::ReadNode root(&trans);
135 if (!root.InitByTagLookup(browser_sync::kPreferencesTag)) 133 if (!root.InitByTagLookup(browser_sync::kPreferencesTag))
136 return sync_api::kInvalidId; 134 return sync_api::kInvalidId;
137 135
138 sync_api::WriteNode tag_node(&trans); 136 sync_api::WriteNode tag_node(&trans);
139 sync_api::WriteNode node(&trans); 137 sync_api::WriteNode node(&trans);
140 138
141 int64 node_id = model_associator_->GetSyncIdFromChromeId(name); 139 int64 node_id = model_associator_->GetSyncIdFromChromeId(name);
142 if (node_id == sync_api::kInvalidId) { 140 if (node_id == sync_api::kInvalidId) {
143 if (tag_node.InitByClientTagLookup(syncable::PREFERENCES, name)) 141 if (tag_node.InitByClientTagLookup(syncable::PREFERENCES, name))
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 }; 210 };
213 211
214 TEST_F(ProfileSyncServicePreferenceTest, WritePreferenceToNode) { 212 TEST_F(ProfileSyncServicePreferenceTest, WritePreferenceToNode) {
215 prefs_->SetString(prefs::kHomePage, example_url0_); 213 prefs_->SetString(prefs::kHomePage, example_url0_);
216 CreateRootTask task(this, syncable::PREFERENCES); 214 CreateRootTask task(this, syncable::PREFERENCES);
217 ASSERT_TRUE(StartSyncService(&task, false)); 215 ASSERT_TRUE(StartSyncService(&task, false));
218 ASSERT_TRUE(task.success()); 216 ASSERT_TRUE(task.success());
219 217
220 const PrefService::Preference* pref = 218 const PrefService::Preference* pref =
221 prefs_->FindPreference(prefs::kHomePage); 219 prefs_->FindPreference(prefs::kHomePage);
222 sync_api::WriteTransaction trans(service_->backend()->GetUserShareHandle()); 220 sync_api::WriteTransaction trans(service_->GetUserShare());
223 sync_api::WriteNode node(&trans); 221 sync_api::WriteNode node(&trans);
224 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PREFERENCES, 222 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PREFERENCES,
225 prefs::kHomePage)); 223 prefs::kHomePage));
226 224
227 EXPECT_TRUE(PreferenceModelAssociator::WritePreferenceToNode( 225 EXPECT_TRUE(PreferenceModelAssociator::WritePreferenceToNode(
228 pref->name(), *pref->GetValue(), &node)); 226 pref->name(), *pref->GetValue(), &node));
229 EXPECT_EQ(UTF8ToWide(prefs::kHomePage), node.GetTitle()); 227 EXPECT_EQ(UTF8ToWide(prefs::kHomePage), node.GetTitle());
230 const sync_pb::PreferenceSpecifics& specifics(node.GetPreferenceSpecifics()); 228 const sync_pb::PreferenceSpecifics& specifics(node.GetPreferenceSpecifics());
231 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name()); 229 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name());
232 230
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 ASSERT_TRUE(StartSyncService(&task, false)); 353 ASSERT_TRUE(StartSyncService(&task, false));
356 ASSERT_TRUE(task.success()); 354 ASSERT_TRUE(task.success());
357 355
358 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); 356 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_));
359 ASSERT_NE(SetSyncedValue(prefs::kHomePage, *expected), sync_api::kInvalidId); 357 ASSERT_NE(SetSyncedValue(prefs::kHomePage, *expected), sync_api::kInvalidId);
360 int64 node_id = model_associator_->GetSyncIdFromChromeId(prefs::kHomePage); 358 int64 node_id = model_associator_->GetSyncIdFromChromeId(prefs::kHomePage);
361 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord); 359 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord);
362 record->action = SyncManager::ChangeRecord::ACTION_UPDATE; 360 record->action = SyncManager::ChangeRecord::ACTION_UPDATE;
363 record->id = node_id; 361 record->id = node_id;
364 { 362 {
365 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 363 sync_api::WriteTransaction trans(service_->GetUserShare());
366 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); 364 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1);
367 } 365 }
368 366
369 const Value& actual = GetPreferenceValue(prefs::kHomePage); 367 const Value& actual = GetPreferenceValue(prefs::kHomePage);
370 EXPECT_TRUE(expected->Equals(&actual)); 368 EXPECT_TRUE(expected->Equals(&actual));
371 } 369 }
372 370
373 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) { 371 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) {
374 CreateRootTask task(this, syncable::PREFERENCES); 372 CreateRootTask task(this, syncable::PREFERENCES);
375 ASSERT_TRUE(StartSyncService(&task, false)); 373 ASSERT_TRUE(StartSyncService(&task, false));
376 ASSERT_TRUE(task.success()); 374 ASSERT_TRUE(task.success());
377 375
378 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); 376 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_));
379 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); 377 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected);
380 ASSERT_NE(node_id, sync_api::kInvalidId); 378 ASSERT_NE(node_id, sync_api::kInvalidId);
381 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord); 379 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord);
382 record->action = SyncManager::ChangeRecord::ACTION_ADD; 380 record->action = SyncManager::ChangeRecord::ACTION_ADD;
383 record->id = node_id; 381 record->id = node_id;
384 { 382 {
385 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 383 sync_api::WriteTransaction trans(service_->GetUserShare());
386 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); 384 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1);
387 } 385 }
388 386
389 const Value& actual = GetPreferenceValue(prefs::kHomePage); 387 const Value& actual = GetPreferenceValue(prefs::kHomePage);
390 EXPECT_TRUE(expected->Equals(&actual)); 388 EXPECT_TRUE(expected->Equals(&actual));
391 EXPECT_EQ(node_id, 389 EXPECT_EQ(node_id,
392 model_associator_->GetSyncIdFromChromeId(prefs::kHomePage)); 390 model_associator_->GetSyncIdFromChromeId(prefs::kHomePage));
393 } 391 }
394 392
395 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) { 393 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) {
396 CreateRootTask task(this, syncable::PREFERENCES); 394 CreateRootTask task(this, syncable::PREFERENCES);
397 ASSERT_TRUE(StartSyncService(&task, false)); 395 ASSERT_TRUE(StartSyncService(&task, false));
398 ASSERT_TRUE(task.success()); 396 ASSERT_TRUE(task.success());
399 397
400 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); 398 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_));
401 int64 node_id = SetSyncedValue("unknown preference", *expected); 399 int64 node_id = SetSyncedValue("unknown preference", *expected);
402 ASSERT_NE(node_id, sync_api::kInvalidId); 400 ASSERT_NE(node_id, sync_api::kInvalidId);
403 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord); 401 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord);
404 record->action = SyncManager::ChangeRecord::ACTION_ADD; 402 record->action = SyncManager::ChangeRecord::ACTION_ADD;
405 record->id = node_id; 403 record->id = node_id;
406 { 404 {
407 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 405 sync_api::WriteTransaction trans(service_->GetUserShare());
408 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); 406 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1);
409 } 407 }
410 408
411 // Nothing interesting happens on the client when it gets an update 409 // Nothing interesting happens on the client when it gets an update
412 // of an unknown preference. We just should not crash. 410 // of an unknown preference. We just should not crash.
413 } 411 }
414 412
415 TEST_F(ProfileSyncServicePreferenceTest, ManagedPreferences) { 413 TEST_F(ProfileSyncServicePreferenceTest, ManagedPreferences) {
416 // Make the homepage preference managed. 414 // Make the homepage preference managed.
417 scoped_ptr<Value> managed_value( 415 scoped_ptr<Value> managed_value(
(...skipping 12 matching lines...) Expand all
430 428
431 // An incoming sync transaction shouldn't change the user value. 429 // An incoming sync transaction shouldn't change the user value.
432 scoped_ptr<Value> sync_value( 430 scoped_ptr<Value> sync_value(
433 Value::CreateStringValue("http://crbug.com")); 431 Value::CreateStringValue("http://crbug.com"));
434 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); 432 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value);
435 ASSERT_NE(node_id, sync_api::kInvalidId); 433 ASSERT_NE(node_id, sync_api::kInvalidId);
436 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord); 434 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord);
437 record->action = SyncManager::ChangeRecord::ACTION_UPDATE; 435 record->action = SyncManager::ChangeRecord::ACTION_UPDATE;
438 record->id = node_id; 436 record->id = node_id;
439 { 437 {
440 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 438 sync_api::WriteTransaction trans(service_->GetUserShare());
441 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); 439 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1);
442 } 440 }
443 EXPECT_TRUE(managed_value->Equals( 441 EXPECT_TRUE(managed_value->Equals(
444 prefs_->GetManagedPref(prefs::kHomePage))); 442 prefs_->GetManagedPref(prefs::kHomePage)));
445 EXPECT_TRUE(user_value->Equals( 443 EXPECT_TRUE(user_value->Equals(
446 prefs_->GetUserPref(prefs::kHomePage))); 444 prefs_->GetUserPref(prefs::kHomePage)));
447 } 445 }
448 446
449 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedPreferences) { 447 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedPreferences) {
450 CreateRootTask task(this, syncable::PREFERENCES); 448 CreateRootTask task(this, syncable::PREFERENCES);
(...skipping 18 matching lines...) Expand all
469 467
470 // Change the sync value. 468 // Change the sync value.
471 scoped_ptr<Value> sync_value( 469 scoped_ptr<Value> sync_value(
472 Value::CreateStringValue("http://example.com/sync")); 470 Value::CreateStringValue("http://example.com/sync"));
473 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); 471 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value);
474 ASSERT_NE(node_id, sync_api::kInvalidId); 472 ASSERT_NE(node_id, sync_api::kInvalidId);
475 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord); 473 scoped_ptr<SyncManager::ChangeRecord> record(new SyncManager::ChangeRecord);
476 record->action = SyncManager::ChangeRecord::ACTION_ADD; 474 record->action = SyncManager::ChangeRecord::ACTION_ADD;
477 record->id = node_id; 475 record->id = node_id;
478 { 476 {
479 sync_api::WriteTransaction trans(backend()->GetUserShareHandle()); 477 sync_api::WriteTransaction trans(service_->GetUserShare());
480 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); 478 change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1);
481 } 479 }
482 480
483 // The pref value should still be the one dictated by policy. 481 // The pref value should still be the one dictated by policy.
484 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); 482 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage)));
485 483
486 // Switch kHomePage back to unmanaged. 484 // Switch kHomePage back to unmanaged.
487 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); 485 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage);
488 486
489 // Sync value should be picked up. 487 // Sync value should be picked up.
490 EXPECT_TRUE(sync_value->Equals(&GetPreferenceValue(prefs::kHomePage))); 488 EXPECT_TRUE(sync_value->Equals(&GetPreferenceValue(prefs::kHomePage)));
491 } 489 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698