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

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

Issue 10804039: Make SyncBackendRegistrar aware of loaded data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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 <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 ACTION_P(CreateAndSaveChangeProcessor, change_processor) { 53 ACTION_P(CreateAndSaveChangeProcessor, change_processor) {
54 syncer::UserShare* user_share = arg0->GetUserShare(); 54 syncer::UserShare* user_share = arg0->GetUserShare();
55 *change_processor = new GenericChangeProcessor(arg1, arg2, user_share); 55 *change_processor = new GenericChangeProcessor(arg1, arg2, user_share);
56 return *change_processor; 56 return *change_processor;
57 } 57 }
58 58
59 // TODO(zea): Refactor to remove the ProfileSyncService usage. 59 // TODO(zea): Refactor to remove the ProfileSyncService usage.
60 class ProfileSyncServicePreferenceTest 60 class ProfileSyncServicePreferenceTest
61 : public AbstractProfileSyncServiceTest { 61 : public AbstractProfileSyncServiceTest {
62 public: 62 public:
63 int64 SetSyncedValue(const std::string& name, const Value& value) { 63 int64 SetSyncedValue(const std::string& name, const Value& value,
64 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 64 syncer::UserShare* user_share) {
65 syncer::WriteTransaction trans(FROM_HERE, user_share);
65 syncer::ReadNode root(&trans); 66 syncer::ReadNode root(&trans);
66 if (root.InitByTagLookup(syncer::ModelTypeToRootTag( 67 if (root.InitByTagLookup(syncer::ModelTypeToRootTag(
67 syncer::PREFERENCES)) != syncer::BaseNode::INIT_OK) { 68 syncer::PREFERENCES)) != syncer::BaseNode::INIT_OK) {
68 return syncer::kInvalidId; 69 return syncer::kInvalidId;
69 } 70 }
70 71
71 syncer::WriteNode tag_node(&trans); 72 syncer::WriteNode tag_node(&trans);
72 syncer::WriteNode node(&trans); 73 syncer::WriteNode node(&trans);
73 74
74 if (tag_node.InitByClientTagLookup(syncer::PREFERENCES, name) == 75 if (tag_node.InitByClientTagLookup(syncer::PREFERENCES, name) ==
(...skipping 28 matching lines...) Expand all
103 not_synced_preference_default_value_, 104 not_synced_preference_default_value_,
104 PrefService::UNSYNCABLE_PREF); 105 PrefService::UNSYNCABLE_PREF);
105 } 106 }
106 107
107 virtual void TearDown() { 108 virtual void TearDown() {
108 service_.reset(); 109 service_.reset();
109 profile_.reset(); 110 profile_.reset();
110 AbstractProfileSyncServiceTest::TearDown(); 111 AbstractProfileSyncServiceTest::TearDown();
111 } 112 }
112 113
113 bool StartSyncService(const base::Closure& callback, 114 bool StartSyncService(
114 bool will_fail_association) { 115 const base::Callback<void(syncer::UserShare*)>& callback,
116 bool will_fail_association) {
115 if (service_.get()) 117 if (service_.get())
116 return false; 118 return false;
117 119
118 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_.get()); 120 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_.get());
119 signin->SetAuthenticatedUsername("test"); 121 signin->SetAuthenticatedUsername("test");
120 ProfileSyncComponentsFactoryMock* factory = 122 ProfileSyncComponentsFactoryMock* factory =
121 new ProfileSyncComponentsFactoryMock(); 123 new ProfileSyncComponentsFactoryMock();
122 service_.reset(new TestProfileSyncService( 124 service_.reset(new TestProfileSyncService(
123 factory, 125 factory,
124 profile_.get(), 126 profile_.get(),
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 public: 219 public:
218 AddPreferenceEntriesHelper(ProfileSyncServicePreferenceTest* test, 220 AddPreferenceEntriesHelper(ProfileSyncServicePreferenceTest* test,
219 const PreferenceValues& entries) 221 const PreferenceValues& entries)
220 : ALLOW_THIS_IN_INITIALIZER_LIST(callback_( 222 : ALLOW_THIS_IN_INITIALIZER_LIST(callback_(
221 base::Bind( 223 base::Bind(
222 &AddPreferenceEntriesHelper::AddPreferenceEntriesCallback, 224 &AddPreferenceEntriesHelper::AddPreferenceEntriesCallback,
223 base::Unretained(this), test, entries))), 225 base::Unretained(this), test, entries))),
224 success_(false) { 226 success_(false) {
225 } 227 }
226 228
227 const base::Closure& callback() const { return callback_; } 229 const base::Callback<void(syncer::UserShare*)>& callback() const {
228 bool success() { return success_; } 230 return callback_;
231 }
232
233 bool success() {
234 return success_;
235 }
229 236
230 private: 237 private:
231 void AddPreferenceEntriesCallback(ProfileSyncServicePreferenceTest* test, 238 void AddPreferenceEntriesCallback(ProfileSyncServicePreferenceTest* test,
232 const PreferenceValues& entries) { 239 const PreferenceValues& entries,
233 if (!test->CreateRoot(syncer::PREFERENCES)) 240 syncer::UserShare* user_share) {
241 if (!test->CreateRoot(syncer::PREFERENCES, user_share))
234 return; 242 return;
235 243
236 for (PreferenceValues::const_iterator i = entries.begin(); 244 for (PreferenceValues::const_iterator i = entries.begin();
237 i != entries.end(); ++i) { 245 i != entries.end(); ++i) {
238 if (test->SetSyncedValue(i->first, *i->second) == syncer::kInvalidId) 246 if (test->SetSyncedValue(i->first, *i->second, user_share)
247 == syncer::kInvalidId) {
239 return; 248 return;
249 }
240 } 250 }
241 success_ = true; 251 success_ = true;
242 } 252 }
243 253
244 base::Closure callback_; 254 base::Callback<void(syncer::UserShare*)> callback_;
245 bool success_; 255 bool success_;
246 }; 256 };
247 257
248 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) { 258 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) {
249 prefs_->SetString(prefs::kHomePage, example_url0_); 259 prefs_->SetString(prefs::kHomePage, example_url0_);
250 CreateRootHelper create_root(this, syncer::PREFERENCES); 260 CreateRootHelper create_root(this, syncer::PREFERENCES);
251 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 261 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
252 ASSERT_TRUE(create_root.success()); 262 ASSERT_TRUE(create_root.success());
253 263
254 const PrefService::Preference* pref = 264 const PrefService::Preference* pref =
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 ASSERT_TRUE(value.get()); 353 ASSERT_TRUE(value.get());
344 EXPECT_TRUE(static_cast<const StringValue*>(value.get())-> 354 EXPECT_TRUE(static_cast<const StringValue*>(value.get())->
345 GetAsString(&string_value)); 355 GetAsString(&string_value));
346 EXPECT_EQ(non_default_charset_value_, string_value); 356 EXPECT_EQ(non_default_charset_value_, string_value);
347 EXPECT_EQ(non_default_charset_value_, 357 EXPECT_EQ(non_default_charset_value_,
348 prefs_->GetString(prefs::kDefaultCharset)); 358 prefs_->GetString(prefs::kDefaultCharset));
349 STLDeleteValues(&cloud_data); 359 STLDeleteValues(&cloud_data);
350 } 360 }
351 361
352 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) { 362 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) {
353 ASSERT_TRUE(StartSyncService(base::Closure(), true)); 363 ASSERT_TRUE(StartSyncService(TestProfileSyncService::NullCallback(), true));
354 EXPECT_TRUE(service_->HasUnrecoverableError()); 364 EXPECT_TRUE(service_->HasUnrecoverableError());
355 } 365 }
356 366
357 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) { 367 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) {
358 const PrefService::Preference* pref = 368 const PrefService::Preference* pref =
359 prefs_->FindPreference(prefs::kHomePage); 369 prefs_->FindPreference(prefs::kHomePage);
360 EXPECT_TRUE(pref->IsDefaultValue()); 370 EXPECT_TRUE(pref->IsDefaultValue());
361 371
362 CreateRootHelper create_root(this, syncer::PREFERENCES); 372 CreateRootHelper create_root(this, syncer::PREFERENCES);
363 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 373 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
(...skipping 21 matching lines...) Expand all
385 EXPECT_TRUE(expected->Equals(actual.get())); 395 EXPECT_TRUE(expected->Equals(actual.get()));
386 } 396 }
387 397
388 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionUpdate) { 398 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionUpdate) {
389 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_); 399 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_);
390 CreateRootHelper create_root(this, syncer::PREFERENCES); 400 CreateRootHelper create_root(this, syncer::PREFERENCES);
391 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 401 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
392 ASSERT_TRUE(create_root.success()); 402 ASSERT_TRUE(create_root.success());
393 403
394 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); 404 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_));
395 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); 405 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected,
406 service_->GetUserShare());
396 ASSERT_NE(node_id, syncer::kInvalidId); 407 ASSERT_NE(node_id, syncer::kInvalidId);
397 { 408 {
398 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 409 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
399 change_processor_->ApplyChangesFromSyncModel( 410 change_processor_->ApplyChangesFromSyncModel(
400 &trans, 411 &trans,
401 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( 412 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList(
402 node_id, ChangeRecord::ACTION_UPDATE)); 413 node_id, ChangeRecord::ACTION_UPDATE));
403 } 414 }
404 change_processor_->CommitChangesFromSyncModel(); 415 change_processor_->CommitChangesFromSyncModel();
405 416
406 const Value& actual = GetPreferenceValue(prefs::kHomePage); 417 const Value& actual = GetPreferenceValue(prefs::kHomePage);
407 EXPECT_TRUE(expected->Equals(&actual)); 418 EXPECT_TRUE(expected->Equals(&actual));
408 } 419 }
409 420
410 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) { 421 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) {
411 CreateRootHelper create_root(this, syncer::PREFERENCES); 422 CreateRootHelper create_root(this, syncer::PREFERENCES);
412 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 423 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
413 ASSERT_TRUE(create_root.success()); 424 ASSERT_TRUE(create_root.success());
414 425
415 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); 426 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_));
416 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); 427 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected,
428 service_->GetUserShare());
417 ASSERT_NE(node_id, syncer::kInvalidId); 429 ASSERT_NE(node_id, syncer::kInvalidId);
418 { 430 {
419 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 431 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
420 change_processor_->ApplyChangesFromSyncModel( 432 change_processor_->ApplyChangesFromSyncModel(
421 &trans, 433 &trans,
422 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( 434 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList(
423 node_id, ChangeRecord::ACTION_ADD)); 435 node_id, ChangeRecord::ACTION_ADD));
424 } 436 }
425 change_processor_->CommitChangesFromSyncModel(); 437 change_processor_->CommitChangesFromSyncModel();
426 438
427 const Value& actual = GetPreferenceValue(prefs::kHomePage); 439 const Value& actual = GetPreferenceValue(prefs::kHomePage);
428 EXPECT_TRUE(expected->Equals(&actual)); 440 EXPECT_TRUE(expected->Equals(&actual));
429 EXPECT_EQ(1U, 441 EXPECT_EQ(1U,
430 pref_sync_service_->registered_preferences().count(prefs::kHomePage)); 442 pref_sync_service_->registered_preferences().count(prefs::kHomePage));
431 } 443 }
432 444
433 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) { 445 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) {
434 CreateRootHelper create_root(this, syncer::PREFERENCES); 446 CreateRootHelper create_root(this, syncer::PREFERENCES);
435 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 447 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
436 ASSERT_TRUE(create_root.success()); 448 ASSERT_TRUE(create_root.success());
437 449
438 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); 450 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_));
439 int64 node_id = SetSyncedValue("unknown preference", *expected); 451 int64 node_id = SetSyncedValue("unknown preference", *expected,
452 service_->GetUserShare());
440 ASSERT_NE(node_id, syncer::kInvalidId); 453 ASSERT_NE(node_id, syncer::kInvalidId);
441 { 454 {
442 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 455 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
443 change_processor_->ApplyChangesFromSyncModel( 456 change_processor_->ApplyChangesFromSyncModel(
444 &trans, 457 &trans,
445 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( 458 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList(
446 node_id, ChangeRecord::ACTION_UPDATE)); 459 node_id, ChangeRecord::ACTION_UPDATE));
447 } 460 }
448 change_processor_->CommitChangesFromSyncModel(); 461 change_processor_->CommitChangesFromSyncModel();
449 462
(...skipping 14 matching lines...) Expand all
464 // Changing the homepage preference should not sync anything. 477 // Changing the homepage preference should not sync anything.
465 scoped_ptr<Value> user_value( 478 scoped_ptr<Value> user_value(
466 Value::CreateStringValue("http://chromium..com")); 479 Value::CreateStringValue("http://chromium..com"));
467 prefs_->SetUserPref(prefs::kHomePage, user_value->DeepCopy()); 480 prefs_->SetUserPref(prefs::kHomePage, user_value->DeepCopy());
468 EXPECT_EQ(NULL, GetSyncedValue(prefs::kHomePage)); 481 EXPECT_EQ(NULL, GetSyncedValue(prefs::kHomePage));
469 482
470 // An incoming sync transaction should change the user value, not the managed 483 // An incoming sync transaction should change the user value, not the managed
471 // value. 484 // value.
472 scoped_ptr<Value> sync_value( 485 scoped_ptr<Value> sync_value(
473 Value::CreateStringValue("http://crbug.com")); 486 Value::CreateStringValue("http://crbug.com"));
474 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); 487 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value,
488 service_->GetUserShare());
475 ASSERT_NE(node_id, syncer::kInvalidId); 489 ASSERT_NE(node_id, syncer::kInvalidId);
476 { 490 {
477 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 491 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
478 change_processor_->ApplyChangesFromSyncModel( 492 change_processor_->ApplyChangesFromSyncModel(
479 &trans, 493 &trans,
480 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( 494 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList(
481 node_id, ChangeRecord::ACTION_UPDATE)); 495 node_id, ChangeRecord::ACTION_UPDATE));
482 } 496 }
483 change_processor_->CommitChangesFromSyncModel(); 497 change_processor_->CommitChangesFromSyncModel();
484 498
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 541
528 // Switch kHomePage to managed and set a different value. 542 // Switch kHomePage to managed and set a different value.
529 scoped_ptr<Value> managed_value( 543 scoped_ptr<Value> managed_value(
530 Value::CreateStringValue("http://example.com/managed")); 544 Value::CreateStringValue("http://example.com/managed"));
531 profile_->GetTestingPrefService()->SetManagedPref( 545 profile_->GetTestingPrefService()->SetManagedPref(
532 prefs::kHomePage, managed_value->DeepCopy()); 546 prefs::kHomePage, managed_value->DeepCopy());
533 547
534 // Change the sync value. 548 // Change the sync value.
535 scoped_ptr<Value> sync_value( 549 scoped_ptr<Value> sync_value(
536 Value::CreateStringValue("http://example.com/sync")); 550 Value::CreateStringValue("http://example.com/sync"));
537 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); 551 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value,
552 service_->GetUserShare());
538 ASSERT_NE(node_id, syncer::kInvalidId); 553 ASSERT_NE(node_id, syncer::kInvalidId);
539 { 554 {
540 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 555 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
541 change_processor_->ApplyChangesFromSyncModel( 556 change_processor_->ApplyChangesFromSyncModel(
542 &trans, 557 &trans,
543 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( 558 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList(
544 node_id, ChangeRecord::ACTION_ADD)); 559 node_id, ChangeRecord::ACTION_ADD));
545 } 560 }
546 change_processor_->CommitChangesFromSyncModel(); 561 change_processor_->CommitChangesFromSyncModel();
547 562
(...skipping 27 matching lines...) Expand all
575 EXPECT_FALSE(pref->IsDefaultValue()); 590 EXPECT_FALSE(pref->IsDefaultValue());
576 // There should be no synced value. 591 // There should be no synced value.
577 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); 592 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL);
578 // Switch kHomePage back to unmanaged. 593 // Switch kHomePage back to unmanaged.
579 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); 594 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage);
580 // The original value should be picked up. 595 // The original value should be picked up.
581 EXPECT_TRUE(pref->IsDefaultValue()); 596 EXPECT_TRUE(pref->IsDefaultValue());
582 // There should still be no synced value. 597 // There should still be no synced value.
583 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); 598 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL);
584 } 599 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698