| OLD | NEW |
| 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 25 matching lines...) Expand all Loading... |
| 36 #include "sync/internal_api/public/write_node.h" | 36 #include "sync/internal_api/public/write_node.h" |
| 37 #include "sync/internal_api/public/write_transaction.h" | 37 #include "sync/internal_api/public/write_transaction.h" |
| 38 #include "sync/protocol/preference_specifics.pb.h" | 38 #include "sync/protocol/preference_specifics.pb.h" |
| 39 #include "testing/gmock/include/gmock/gmock.h" | 39 #include "testing/gmock/include/gmock/gmock.h" |
| 40 #include "testing/gtest/include/gtest/gtest.h" | 40 #include "testing/gtest/include/gtest/gtest.h" |
| 41 | 41 |
| 42 using base::JSONReader; | 42 using base::JSONReader; |
| 43 using browser_sync::GenericChangeProcessor; | 43 using browser_sync::GenericChangeProcessor; |
| 44 using browser_sync::SharedChangeProcessor; | 44 using browser_sync::SharedChangeProcessor; |
| 45 using browser_sync::UIDataTypeController; | 45 using browser_sync::UIDataTypeController; |
| 46 using csync::ChangeRecord; | 46 using syncer::ChangeRecord; |
| 47 using testing::_; | 47 using testing::_; |
| 48 using testing::Invoke; | 48 using testing::Invoke; |
| 49 using testing::Return; | 49 using testing::Return; |
| 50 | 50 |
| 51 typedef std::map<const std::string, const Value*> PreferenceValues; | 51 typedef std::map<const std::string, const Value*> PreferenceValues; |
| 52 | 52 |
| 53 ACTION_P(CreateAndSaveChangeProcessor, change_processor) { | 53 ACTION_P(CreateAndSaveChangeProcessor, change_processor) { |
| 54 csync::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 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 64 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 65 csync::ReadNode root(&trans); | 65 syncer::ReadNode root(&trans); |
| 66 if (root.InitByTagLookup(syncable::ModelTypeToRootTag( | 66 if (root.InitByTagLookup(syncable::ModelTypeToRootTag( |
| 67 syncable::PREFERENCES)) != csync::BaseNode::INIT_OK) { | 67 syncable::PREFERENCES)) != syncer::BaseNode::INIT_OK) { |
| 68 return csync::kInvalidId; | 68 return syncer::kInvalidId; |
| 69 } | 69 } |
| 70 | 70 |
| 71 csync::WriteNode tag_node(&trans); | 71 syncer::WriteNode tag_node(&trans); |
| 72 csync::WriteNode node(&trans); | 72 syncer::WriteNode node(&trans); |
| 73 | 73 |
| 74 if (tag_node.InitByClientTagLookup(syncable::PREFERENCES, name) == | 74 if (tag_node.InitByClientTagLookup(syncable::PREFERENCES, name) == |
| 75 csync::BaseNode::INIT_OK) { | 75 syncer::BaseNode::INIT_OK) { |
| 76 return WriteSyncedValue(name, value, &tag_node); | 76 return WriteSyncedValue(name, value, &tag_node); |
| 77 } | 77 } |
| 78 | 78 |
| 79 csync::WriteNode::InitUniqueByCreationResult result = | 79 syncer::WriteNode::InitUniqueByCreationResult result = |
| 80 node.InitUniqueByCreation(syncable::PREFERENCES, root, name); | 80 node.InitUniqueByCreation(syncable::PREFERENCES, root, name); |
| 81 if (result == csync::WriteNode::INIT_SUCCESS) | 81 if (result == syncer::WriteNode::INIT_SUCCESS) |
| 82 return WriteSyncedValue(name, value, &node); | 82 return WriteSyncedValue(name, value, &node); |
| 83 | 83 |
| 84 return csync::kInvalidId; | 84 return syncer::kInvalidId; |
| 85 } | 85 } |
| 86 | 86 |
| 87 protected: | 87 protected: |
| 88 ProfileSyncServicePreferenceTest() | 88 ProfileSyncServicePreferenceTest() |
| 89 : example_url0_("http://example.com/0"), | 89 : example_url0_("http://example.com/0"), |
| 90 example_url1_("http://example.com/1"), | 90 example_url1_("http://example.com/1"), |
| 91 example_url2_("http://example.com/2"), | 91 example_url2_("http://example.com/2"), |
| 92 not_synced_preference_name_("nonsense_pref_name"), | 92 not_synced_preference_name_("nonsense_pref_name"), |
| 93 not_synced_preference_default_value_("default"), | 93 not_synced_preference_default_value_("default"), |
| 94 non_default_charset_value_("foo") {} | 94 non_default_charset_value_("foo") {} |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 } | 153 } |
| 154 | 154 |
| 155 const Value& GetPreferenceValue(const std::string& name) { | 155 const Value& GetPreferenceValue(const std::string& name) { |
| 156 const PrefService::Preference* preference = | 156 const PrefService::Preference* preference = |
| 157 prefs_->FindPreference(name.c_str()); | 157 prefs_->FindPreference(name.c_str()); |
| 158 return *preference->GetValue(); | 158 return *preference->GetValue(); |
| 159 } | 159 } |
| 160 | 160 |
| 161 // Caller gets ownership of the returned value. | 161 // Caller gets ownership of the returned value. |
| 162 const Value* GetSyncedValue(const std::string& name) { | 162 const Value* GetSyncedValue(const std::string& name) { |
| 163 csync::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); | 163 syncer::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 164 csync::ReadNode node(&trans); | 164 syncer::ReadNode node(&trans); |
| 165 | 165 |
| 166 if (node.InitByClientTagLookup(syncable::PREFERENCES, name) != | 166 if (node.InitByClientTagLookup(syncable::PREFERENCES, name) != |
| 167 csync::BaseNode::INIT_OK) { | 167 syncer::BaseNode::INIT_OK) { |
| 168 return NULL; | 168 return NULL; |
| 169 } | 169 } |
| 170 | 170 |
| 171 const sync_pb::PreferenceSpecifics& specifics( | 171 const sync_pb::PreferenceSpecifics& specifics( |
| 172 node.GetEntitySpecifics().preference()); | 172 node.GetEntitySpecifics().preference()); |
| 173 | 173 |
| 174 return base::JSONReader::Read(specifics.value()); | 174 return base::JSONReader::Read(specifics.value()); |
| 175 } | 175 } |
| 176 | 176 |
| 177 int64 WriteSyncedValue(const std::string& name, | 177 int64 WriteSyncedValue(const std::string& name, |
| 178 const Value& value, | 178 const Value& value, |
| 179 csync::WriteNode* node) { | 179 syncer::WriteNode* node) { |
| 180 csync::SyncData sync_data; | 180 syncer::SyncData sync_data; |
| 181 if (!PrefModelAssociator::CreatePrefSyncData(name, | 181 if (!PrefModelAssociator::CreatePrefSyncData(name, |
| 182 value, | 182 value, |
| 183 &sync_data)) { | 183 &sync_data)) { |
| 184 return csync::kInvalidId; | 184 return syncer::kInvalidId; |
| 185 } | 185 } |
| 186 node->SetEntitySpecifics(sync_data.GetSpecifics()); | 186 node->SetEntitySpecifics(sync_data.GetSpecifics()); |
| 187 return node->GetId(); | 187 return node->GetId(); |
| 188 } | 188 } |
| 189 | 189 |
| 190 bool IsSynced(const std::string& pref_name) { | 190 bool IsSynced(const std::string& pref_name) { |
| 191 return pref_sync_service_->registered_preferences().count(pref_name) > 0; | 191 return pref_sync_service_->registered_preferences().count(pref_name) > 0; |
| 192 } | 192 } |
| 193 | 193 |
| 194 std::string ValueString(const Value& value) { | 194 std::string ValueString(const Value& value) { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 bool success() { return success_; } | 228 bool success() { return success_; } |
| 229 | 229 |
| 230 private: | 230 private: |
| 231 void AddPreferenceEntriesCallback(ProfileSyncServicePreferenceTest* test, | 231 void AddPreferenceEntriesCallback(ProfileSyncServicePreferenceTest* test, |
| 232 const PreferenceValues& entries) { | 232 const PreferenceValues& entries) { |
| 233 if (!test->CreateRoot(syncable::PREFERENCES)) | 233 if (!test->CreateRoot(syncable::PREFERENCES)) |
| 234 return; | 234 return; |
| 235 | 235 |
| 236 for (PreferenceValues::const_iterator i = entries.begin(); | 236 for (PreferenceValues::const_iterator i = entries.begin(); |
| 237 i != entries.end(); ++i) { | 237 i != entries.end(); ++i) { |
| 238 if (test->SetSyncedValue(i->first, *i->second) == csync::kInvalidId) | 238 if (test->SetSyncedValue(i->first, *i->second) == syncer::kInvalidId) |
| 239 return; | 239 return; |
| 240 } | 240 } |
| 241 success_ = true; | 241 success_ = true; |
| 242 } | 242 } |
| 243 | 243 |
| 244 base::Closure callback_; | 244 base::Closure callback_; |
| 245 bool success_; | 245 bool success_; |
| 246 }; | 246 }; |
| 247 | 247 |
| 248 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) { | 248 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) { |
| 249 prefs_->SetString(prefs::kHomePage, example_url0_); | 249 prefs_->SetString(prefs::kHomePage, example_url0_); |
| 250 CreateRootHelper create_root(this, syncable::PREFERENCES); | 250 CreateRootHelper create_root(this, syncable::PREFERENCES); |
| 251 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 251 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 252 ASSERT_TRUE(create_root.success()); | 252 ASSERT_TRUE(create_root.success()); |
| 253 | 253 |
| 254 const PrefService::Preference* pref = | 254 const PrefService::Preference* pref = |
| 255 prefs_->FindPreference(prefs::kHomePage); | 255 prefs_->FindPreference(prefs::kHomePage); |
| 256 csync::SyncData sync_data; | 256 syncer::SyncData sync_data; |
| 257 EXPECT_TRUE(PrefModelAssociator::CreatePrefSyncData(pref->name(), | 257 EXPECT_TRUE(PrefModelAssociator::CreatePrefSyncData(pref->name(), |
| 258 *pref->GetValue(), &sync_data)); | 258 *pref->GetValue(), &sync_data)); |
| 259 EXPECT_EQ(std::string(prefs::kHomePage), sync_data.GetTag()); | 259 EXPECT_EQ(std::string(prefs::kHomePage), sync_data.GetTag()); |
| 260 const sync_pb::PreferenceSpecifics& specifics(sync_data.GetSpecifics(). | 260 const sync_pb::PreferenceSpecifics& specifics(sync_data.GetSpecifics(). |
| 261 preference()); | 261 preference()); |
| 262 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name()); | 262 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name()); |
| 263 | 263 |
| 264 scoped_ptr<Value> value(base::JSONReader::Read(specifics.value())); | 264 scoped_ptr<Value> value(base::JSONReader::Read(specifics.value())); |
| 265 EXPECT_TRUE(pref->GetValue()->Equals(value.get())); | 265 EXPECT_TRUE(pref->GetValue()->Equals(value.get())); |
| 266 } | 266 } |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 } | 386 } |
| 387 | 387 |
| 388 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionUpdate) { | 388 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionUpdate) { |
| 389 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_); | 389 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_); |
| 390 CreateRootHelper create_root(this, syncable::PREFERENCES); | 390 CreateRootHelper create_root(this, syncable::PREFERENCES); |
| 391 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 391 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 392 ASSERT_TRUE(create_root.success()); | 392 ASSERT_TRUE(create_root.success()); |
| 393 | 393 |
| 394 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); | 394 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); |
| 395 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); | 395 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); |
| 396 ASSERT_NE(node_id, csync::kInvalidId); | 396 ASSERT_NE(node_id, syncer::kInvalidId); |
| 397 { | 397 { |
| 398 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 398 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 399 change_processor_->ApplyChangesFromSyncModel( | 399 change_processor_->ApplyChangesFromSyncModel( |
| 400 &trans, | 400 &trans, |
| 401 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( | 401 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( |
| 402 node_id, ChangeRecord::ACTION_UPDATE)); | 402 node_id, ChangeRecord::ACTION_UPDATE)); |
| 403 } | 403 } |
| 404 change_processor_->CommitChangesFromSyncModel(); | 404 change_processor_->CommitChangesFromSyncModel(); |
| 405 | 405 |
| 406 const Value& actual = GetPreferenceValue(prefs::kHomePage); | 406 const Value& actual = GetPreferenceValue(prefs::kHomePage); |
| 407 EXPECT_TRUE(expected->Equals(&actual)); | 407 EXPECT_TRUE(expected->Equals(&actual)); |
| 408 } | 408 } |
| 409 | 409 |
| 410 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) { | 410 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) { |
| 411 CreateRootHelper create_root(this, syncable::PREFERENCES); | 411 CreateRootHelper create_root(this, syncable::PREFERENCES); |
| 412 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 412 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 413 ASSERT_TRUE(create_root.success()); | 413 ASSERT_TRUE(create_root.success()); |
| 414 | 414 |
| 415 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); | 415 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); |
| 416 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); | 416 int64 node_id = SetSyncedValue(prefs::kHomePage, *expected); |
| 417 ASSERT_NE(node_id, csync::kInvalidId); | 417 ASSERT_NE(node_id, syncer::kInvalidId); |
| 418 { | 418 { |
| 419 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 419 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 420 change_processor_->ApplyChangesFromSyncModel( | 420 change_processor_->ApplyChangesFromSyncModel( |
| 421 &trans, | 421 &trans, |
| 422 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( | 422 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( |
| 423 node_id, ChangeRecord::ACTION_ADD)); | 423 node_id, ChangeRecord::ACTION_ADD)); |
| 424 } | 424 } |
| 425 change_processor_->CommitChangesFromSyncModel(); | 425 change_processor_->CommitChangesFromSyncModel(); |
| 426 | 426 |
| 427 const Value& actual = GetPreferenceValue(prefs::kHomePage); | 427 const Value& actual = GetPreferenceValue(prefs::kHomePage); |
| 428 EXPECT_TRUE(expected->Equals(&actual)); | 428 EXPECT_TRUE(expected->Equals(&actual)); |
| 429 EXPECT_EQ(1U, | 429 EXPECT_EQ(1U, |
| 430 pref_sync_service_->registered_preferences().count(prefs::kHomePage)); | 430 pref_sync_service_->registered_preferences().count(prefs::kHomePage)); |
| 431 } | 431 } |
| 432 | 432 |
| 433 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) { | 433 TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) { |
| 434 CreateRootHelper create_root(this, syncable::PREFERENCES); | 434 CreateRootHelper create_root(this, syncable::PREFERENCES); |
| 435 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 435 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 436 ASSERT_TRUE(create_root.success()); | 436 ASSERT_TRUE(create_root.success()); |
| 437 | 437 |
| 438 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); | 438 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); |
| 439 int64 node_id = SetSyncedValue("unknown preference", *expected); | 439 int64 node_id = SetSyncedValue("unknown preference", *expected); |
| 440 ASSERT_NE(node_id, csync::kInvalidId); | 440 ASSERT_NE(node_id, syncer::kInvalidId); |
| 441 { | 441 { |
| 442 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 442 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 443 change_processor_->ApplyChangesFromSyncModel( | 443 change_processor_->ApplyChangesFromSyncModel( |
| 444 &trans, | 444 &trans, |
| 445 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( | 445 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( |
| 446 node_id, ChangeRecord::ACTION_UPDATE)); | 446 node_id, ChangeRecord::ACTION_UPDATE)); |
| 447 } | 447 } |
| 448 change_processor_->CommitChangesFromSyncModel(); | 448 change_processor_->CommitChangesFromSyncModel(); |
| 449 | 449 |
| 450 // Nothing interesting happens on the client when it gets an update | 450 // Nothing interesting happens on the client when it gets an update |
| 451 // of an unknown preference. We just should not crash. | 451 // of an unknown preference. We just should not crash. |
| 452 } | 452 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 465 scoped_ptr<Value> user_value( | 465 scoped_ptr<Value> user_value( |
| 466 Value::CreateStringValue("http://chromium..com")); | 466 Value::CreateStringValue("http://chromium..com")); |
| 467 prefs_->SetUserPref(prefs::kHomePage, user_value->DeepCopy()); | 467 prefs_->SetUserPref(prefs::kHomePage, user_value->DeepCopy()); |
| 468 EXPECT_EQ(NULL, GetSyncedValue(prefs::kHomePage)); | 468 EXPECT_EQ(NULL, GetSyncedValue(prefs::kHomePage)); |
| 469 | 469 |
| 470 // An incoming sync transaction should change the user value, not the managed | 470 // An incoming sync transaction should change the user value, not the managed |
| 471 // value. | 471 // value. |
| 472 scoped_ptr<Value> sync_value( | 472 scoped_ptr<Value> sync_value( |
| 473 Value::CreateStringValue("http://crbug.com")); | 473 Value::CreateStringValue("http://crbug.com")); |
| 474 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); | 474 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); |
| 475 ASSERT_NE(node_id, csync::kInvalidId); | 475 ASSERT_NE(node_id, syncer::kInvalidId); |
| 476 { | 476 { |
| 477 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 477 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 478 change_processor_->ApplyChangesFromSyncModel( | 478 change_processor_->ApplyChangesFromSyncModel( |
| 479 &trans, | 479 &trans, |
| 480 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( | 480 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( |
| 481 node_id, ChangeRecord::ACTION_UPDATE)); | 481 node_id, ChangeRecord::ACTION_UPDATE)); |
| 482 } | 482 } |
| 483 change_processor_->CommitChangesFromSyncModel(); | 483 change_processor_->CommitChangesFromSyncModel(); |
| 484 | 484 |
| 485 EXPECT_TRUE(managed_value->Equals(prefs_->GetManagedPref(prefs::kHomePage))); | 485 EXPECT_TRUE(managed_value->Equals(prefs_->GetManagedPref(prefs::kHomePage))); |
| 486 EXPECT_TRUE(sync_value->Equals(prefs_->GetUserPref(prefs::kHomePage))); | 486 EXPECT_TRUE(sync_value->Equals(prefs_->GetUserPref(prefs::kHomePage))); |
| 487 } | 487 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 // Switch kHomePage to managed and set a different value. | 528 // Switch kHomePage to managed and set a different value. |
| 529 scoped_ptr<Value> managed_value( | 529 scoped_ptr<Value> managed_value( |
| 530 Value::CreateStringValue("http://example.com/managed")); | 530 Value::CreateStringValue("http://example.com/managed")); |
| 531 profile_->GetTestingPrefService()->SetManagedPref( | 531 profile_->GetTestingPrefService()->SetManagedPref( |
| 532 prefs::kHomePage, managed_value->DeepCopy()); | 532 prefs::kHomePage, managed_value->DeepCopy()); |
| 533 | 533 |
| 534 // Change the sync value. | 534 // Change the sync value. |
| 535 scoped_ptr<Value> sync_value( | 535 scoped_ptr<Value> sync_value( |
| 536 Value::CreateStringValue("http://example.com/sync")); | 536 Value::CreateStringValue("http://example.com/sync")); |
| 537 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); | 537 int64 node_id = SetSyncedValue(prefs::kHomePage, *sync_value); |
| 538 ASSERT_NE(node_id, csync::kInvalidId); | 538 ASSERT_NE(node_id, syncer::kInvalidId); |
| 539 { | 539 { |
| 540 csync::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 540 syncer::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 541 change_processor_->ApplyChangesFromSyncModel( | 541 change_processor_->ApplyChangesFromSyncModel( |
| 542 &trans, | 542 &trans, |
| 543 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( | 543 ProfileSyncServiceTestHelper::MakeSingletonChangeRecordList( |
| 544 node_id, ChangeRecord::ACTION_ADD)); | 544 node_id, ChangeRecord::ACTION_ADD)); |
| 545 } | 545 } |
| 546 change_processor_->CommitChangesFromSyncModel(); | 546 change_processor_->CommitChangesFromSyncModel(); |
| 547 | 547 |
| 548 // The pref value should still be the one dictated by policy. | 548 // The pref value should still be the one dictated by policy. |
| 549 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); | 549 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); |
| 550 | 550 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 575 EXPECT_FALSE(pref->IsDefaultValue()); | 575 EXPECT_FALSE(pref->IsDefaultValue()); |
| 576 // There should be no synced value. | 576 // There should be no synced value. |
| 577 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 577 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
| 578 // Switch kHomePage back to unmanaged. | 578 // Switch kHomePage back to unmanaged. |
| 579 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); | 579 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); |
| 580 // The original value should be picked up. | 580 // The original value should be picked up. |
| 581 EXPECT_TRUE(pref->IsDefaultValue()); | 581 EXPECT_TRUE(pref->IsDefaultValue()); |
| 582 // There should still be no synced value. | 582 // There should still be no synced value. |
| 583 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 583 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
| 584 } | 584 } |
| OLD | NEW |