| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 65 syncer::ReadNode root(&trans); | 65 syncer::ReadNode root(&trans); |
| 66 if (root.InitByTagLookup(syncable::ModelTypeToRootTag( | 66 if (root.InitByTagLookup(syncer::ModelTypeToRootTag( |
| 67 syncable::PREFERENCES)) != syncer::BaseNode::INIT_OK) { | 67 syncer::PREFERENCES)) != syncer::BaseNode::INIT_OK) { |
| 68 return syncer::kInvalidId; | 68 return syncer::kInvalidId; |
| 69 } | 69 } |
| 70 | 70 |
| 71 syncer::WriteNode tag_node(&trans); | 71 syncer::WriteNode tag_node(&trans); |
| 72 syncer::WriteNode node(&trans); | 72 syncer::WriteNode node(&trans); |
| 73 | 73 |
| 74 if (tag_node.InitByClientTagLookup(syncable::PREFERENCES, name) == | 74 if (tag_node.InitByClientTagLookup(syncer::PREFERENCES, name) == |
| 75 syncer::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 syncer::WriteNode::InitUniqueByCreationResult result = | 79 syncer::WriteNode::InitUniqueByCreationResult result = |
| 80 node.InitUniqueByCreation(syncable::PREFERENCES, root, name); | 80 node.InitUniqueByCreation(syncer::PREFERENCES, root, name); |
| 81 if (result == syncer::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 syncer::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"), |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 factory, | 123 factory, |
| 124 profile_.get(), | 124 profile_.get(), |
| 125 signin, | 125 signin, |
| 126 ProfileSyncService::AUTO_START, | 126 ProfileSyncService::AUTO_START, |
| 127 false, | 127 false, |
| 128 callback)); | 128 callback)); |
| 129 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>( | 129 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>( |
| 130 prefs_->GetSyncableService()); | 130 prefs_->GetSyncableService()); |
| 131 if (!pref_sync_service_) | 131 if (!pref_sync_service_) |
| 132 return false; | 132 return false; |
| 133 EXPECT_CALL(*factory, GetSyncableServiceForType(syncable::PREFERENCES)). | 133 EXPECT_CALL(*factory, GetSyncableServiceForType(syncer::PREFERENCES)). |
| 134 WillOnce(Return(pref_sync_service_->AsWeakPtr())); | 134 WillOnce(Return(pref_sync_service_->AsWeakPtr())); |
| 135 | 135 |
| 136 EXPECT_CALL(*factory, CreateDataTypeManager(_, _)). | 136 EXPECT_CALL(*factory, CreateDataTypeManager(_, _)). |
| 137 WillOnce(ReturnNewDataTypeManager()); | 137 WillOnce(ReturnNewDataTypeManager()); |
| 138 dtc_ = new UIDataTypeController(syncable::PREFERENCES, | 138 dtc_ = new UIDataTypeController(syncer::PREFERENCES, |
| 139 factory, | 139 factory, |
| 140 profile_.get(), | 140 profile_.get(), |
| 141 service_.get()); | 141 service_.get()); |
| 142 EXPECT_CALL(*factory, CreateSharedChangeProcessor()). | 142 EXPECT_CALL(*factory, CreateSharedChangeProcessor()). |
| 143 WillOnce(Return(new SharedChangeProcessor())); | 143 WillOnce(Return(new SharedChangeProcessor())); |
| 144 EXPECT_CALL(*factory, CreateGenericChangeProcessor(_, _, _)). | 144 EXPECT_CALL(*factory, CreateGenericChangeProcessor(_, _, _)). |
| 145 WillOnce(CreateAndSaveChangeProcessor(&change_processor_)); | 145 WillOnce(CreateAndSaveChangeProcessor(&change_processor_)); |
| 146 service_->RegisterDataTypeController(dtc_); | 146 service_->RegisterDataTypeController(dtc_); |
| 147 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 147 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 148 GaiaConstants::kSyncService, "token"); | 148 GaiaConstants::kSyncService, "token"); |
| 149 | 149 |
| 150 service_->Initialize(); | 150 service_->Initialize(); |
| 151 MessageLoop::current()->Run(); | 151 MessageLoop::current()->Run(); |
| 152 return true; | 152 return true; |
| 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 syncer::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); | 163 syncer::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 164 syncer::ReadNode node(&trans); | 164 syncer::ReadNode node(&trans); |
| 165 | 165 |
| 166 if (node.InitByClientTagLookup(syncable::PREFERENCES, name) != | 166 if (node.InitByClientTagLookup(syncer::PREFERENCES, name) != |
| 167 syncer::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 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 base::Unretained(this), test, entries))), | 223 base::Unretained(this), test, entries))), |
| 224 success_(false) { | 224 success_(false) { |
| 225 } | 225 } |
| 226 | 226 |
| 227 const base::Closure& callback() const { return callback_; } | 227 const base::Closure& callback() const { return callback_; } |
| 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(syncer::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) == syncer::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, syncer::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 syncer::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 } |
| 267 | 267 |
| 268 TEST_F(ProfileSyncServicePreferenceTest, ModelAssociationDoNotSyncDefaults) { | 268 TEST_F(ProfileSyncServicePreferenceTest, ModelAssociationDoNotSyncDefaults) { |
| 269 const PrefService::Preference* pref = | 269 const PrefService::Preference* pref = |
| 270 prefs_->FindPreference(prefs::kHomePage); | 270 prefs_->FindPreference(prefs::kHomePage); |
| 271 EXPECT_TRUE(pref->IsDefaultValue()); | 271 EXPECT_TRUE(pref->IsDefaultValue()); |
| 272 CreateRootHelper create_root(this, syncable::PREFERENCES); | 272 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 273 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 273 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 274 ASSERT_TRUE(create_root.success()); | 274 ASSERT_TRUE(create_root.success()); |
| 275 EXPECT_TRUE(IsSynced(prefs::kHomePage)); | 275 EXPECT_TRUE(IsSynced(prefs::kHomePage)); |
| 276 EXPECT_TRUE(pref->IsDefaultValue()); | 276 EXPECT_TRUE(pref->IsDefaultValue()); |
| 277 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 277 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
| 278 EXPECT_TRUE(GetSyncedValue(not_synced_preference_name_) == NULL); | 278 EXPECT_TRUE(GetSyncedValue(not_synced_preference_name_) == NULL); |
| 279 } | 279 } |
| 280 | 280 |
| 281 TEST_F(ProfileSyncServicePreferenceTest, ModelAssociationEmptyCloud) { | 281 TEST_F(ProfileSyncServicePreferenceTest, ModelAssociationEmptyCloud) { |
| 282 prefs_->SetString(prefs::kHomePage, example_url0_); | 282 prefs_->SetString(prefs::kHomePage, example_url0_); |
| 283 { | 283 { |
| 284 ListPrefUpdate update(prefs_, prefs::kURLsToRestoreOnStartup); | 284 ListPrefUpdate update(prefs_, prefs::kURLsToRestoreOnStartup); |
| 285 ListValue* url_list = update.Get(); | 285 ListValue* url_list = update.Get(); |
| 286 url_list->Append(Value::CreateStringValue(example_url0_)); | 286 url_list->Append(Value::CreateStringValue(example_url0_)); |
| 287 url_list->Append(Value::CreateStringValue(example_url1_)); | 287 url_list->Append(Value::CreateStringValue(example_url1_)); |
| 288 } | 288 } |
| 289 CreateRootHelper create_root(this, syncable::PREFERENCES); | 289 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 290 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 290 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 291 ASSERT_TRUE(create_root.success()); | 291 ASSERT_TRUE(create_root.success()); |
| 292 | 292 |
| 293 scoped_ptr<const Value> value(GetSyncedValue(prefs::kHomePage)); | 293 scoped_ptr<const Value> value(GetSyncedValue(prefs::kHomePage)); |
| 294 ASSERT_TRUE(value.get()); | 294 ASSERT_TRUE(value.get()); |
| 295 EXPECT_TRUE(GetPreferenceValue(prefs::kHomePage).Equals(value.get())); | 295 EXPECT_TRUE(GetPreferenceValue(prefs::kHomePage).Equals(value.get())); |
| 296 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartup)); | 296 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartup)); |
| 297 ASSERT_TRUE(value.get()); | 297 ASSERT_TRUE(value.get()); |
| 298 EXPECT_TRUE( | 298 EXPECT_TRUE( |
| 299 GetPreferenceValue(prefs::kURLsToRestoreOnStartup).Equals(value.get())); | 299 GetPreferenceValue(prefs::kURLsToRestoreOnStartup).Equals(value.get())); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) { | 352 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) { |
| 353 ASSERT_TRUE(StartSyncService(base::Closure(), true)); | 353 ASSERT_TRUE(StartSyncService(base::Closure(), true)); |
| 354 EXPECT_TRUE(service_->HasUnrecoverableError()); | 354 EXPECT_TRUE(service_->HasUnrecoverableError()); |
| 355 } | 355 } |
| 356 | 356 |
| 357 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) { | 357 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) { |
| 358 const PrefService::Preference* pref = | 358 const PrefService::Preference* pref = |
| 359 prefs_->FindPreference(prefs::kHomePage); | 359 prefs_->FindPreference(prefs::kHomePage); |
| 360 EXPECT_TRUE(pref->IsDefaultValue()); | 360 EXPECT_TRUE(pref->IsDefaultValue()); |
| 361 | 361 |
| 362 CreateRootHelper create_root(this, syncable::PREFERENCES); | 362 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 363 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 363 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 364 ASSERT_TRUE(create_root.success()); | 364 ASSERT_TRUE(create_root.success()); |
| 365 | 365 |
| 366 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); | 366 scoped_ptr<Value> expected(Value::CreateStringValue(example_url0_)); |
| 367 profile_->GetPrefs()->Set(prefs::kHomePage, *expected); | 367 profile_->GetPrefs()->Set(prefs::kHomePage, *expected); |
| 368 | 368 |
| 369 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); | 369 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); |
| 370 ASSERT_TRUE(actual.get()); | 370 ASSERT_TRUE(actual.get()); |
| 371 EXPECT_TRUE(expected->Equals(actual.get())); | 371 EXPECT_TRUE(expected->Equals(actual.get())); |
| 372 } | 372 } |
| 373 | 373 |
| 374 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithValue) { | 374 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithValue) { |
| 375 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_); | 375 profile_->GetPrefs()->SetString(prefs::kHomePage, example_url0_); |
| 376 CreateRootHelper create_root(this, syncable::PREFERENCES); | 376 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 377 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 377 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 378 ASSERT_TRUE(create_root.success()); | 378 ASSERT_TRUE(create_root.success()); |
| 379 | 379 |
| 380 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); | 380 scoped_ptr<Value> expected(Value::CreateStringValue(example_url1_)); |
| 381 profile_->GetPrefs()->Set(prefs::kHomePage, *expected); | 381 profile_->GetPrefs()->Set(prefs::kHomePage, *expected); |
| 382 | 382 |
| 383 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); | 383 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); |
| 384 ASSERT_TRUE(actual.get()); | 384 ASSERT_TRUE(actual.get()); |
| 385 EXPECT_TRUE(expected->Equals(actual.get())); | 385 EXPECT_TRUE(expected->Equals(actual.get())); |
| 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, syncer::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, syncer::kInvalidId); | 396 ASSERT_NE(node_id, syncer::kInvalidId); |
| 397 { | 397 { |
| 398 syncer::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, syncer::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, syncer::kInvalidId); | 417 ASSERT_NE(node_id, syncer::kInvalidId); |
| 418 { | 418 { |
| 419 syncer::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, syncer::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, syncer::kInvalidId); | 440 ASSERT_NE(node_id, syncer::kInvalidId); |
| 441 { | 441 { |
| 442 syncer::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 } |
| 453 | 453 |
| 454 TEST_F(ProfileSyncServicePreferenceTest, ManagedPreferences) { | 454 TEST_F(ProfileSyncServicePreferenceTest, ManagedPreferences) { |
| 455 // Make the homepage preference managed. | 455 // Make the homepage preference managed. |
| 456 scoped_ptr<Value> managed_value( | 456 scoped_ptr<Value> managed_value( |
| 457 Value::CreateStringValue("http://example.com")); | 457 Value::CreateStringValue("http://example.com")); |
| 458 prefs_->SetManagedPref(prefs::kHomePage, managed_value->DeepCopy()); | 458 prefs_->SetManagedPref(prefs::kHomePage, managed_value->DeepCopy()); |
| 459 | 459 |
| 460 CreateRootHelper create_root(this, syncable::PREFERENCES); | 460 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 461 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 461 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 462 ASSERT_TRUE(create_root.success()); | 462 ASSERT_TRUE(create_root.success()); |
| 463 | 463 |
| 464 // Changing the homepage preference should not sync anything. | 464 // Changing the homepage preference should not sync anything. |
| 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, syncer::kInvalidId); | 475 ASSERT_NE(node_id, syncer::kInvalidId); |
| 476 { | 476 { |
| 477 syncer::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 } |
| 488 | 488 |
| 489 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedPreferences) { | 489 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedPreferences) { |
| 490 CreateRootHelper create_root(this, syncable::PREFERENCES); | 490 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 491 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 491 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 492 ASSERT_TRUE(create_root.success()); | 492 ASSERT_TRUE(create_root.success()); |
| 493 | 493 |
| 494 scoped_ptr<Value> initial_value( | 494 scoped_ptr<Value> initial_value( |
| 495 Value::CreateStringValue("http://example.com/initial")); | 495 Value::CreateStringValue("http://example.com/initial")); |
| 496 profile_->GetPrefs()->Set(prefs::kHomePage, *initial_value); | 496 profile_->GetPrefs()->Set(prefs::kHomePage, *initial_value); |
| 497 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); | 497 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); |
| 498 EXPECT_TRUE(initial_value->Equals(actual.get())); | 498 EXPECT_TRUE(initial_value->Equals(actual.get())); |
| 499 | 499 |
| 500 // Switch kHomePage to managed and set a different value. | 500 // Switch kHomePage to managed and set a different value. |
| 501 scoped_ptr<Value> managed_value( | 501 scoped_ptr<Value> managed_value( |
| 502 Value::CreateStringValue("http://example.com/managed")); | 502 Value::CreateStringValue("http://example.com/managed")); |
| 503 profile_->GetTestingPrefService()->SetManagedPref( | 503 profile_->GetTestingPrefService()->SetManagedPref( |
| 504 prefs::kHomePage, managed_value->DeepCopy()); | 504 prefs::kHomePage, managed_value->DeepCopy()); |
| 505 | 505 |
| 506 // The pref value should be the one dictated by policy. | 506 // The pref value should be the one dictated by policy. |
| 507 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); | 507 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); |
| 508 | 508 |
| 509 // Switch kHomePage back to unmanaged. | 509 // Switch kHomePage back to unmanaged. |
| 510 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); | 510 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); |
| 511 | 511 |
| 512 // The original value should be picked up. | 512 // The original value should be picked up. |
| 513 EXPECT_TRUE(initial_value->Equals(&GetPreferenceValue(prefs::kHomePage))); | 513 EXPECT_TRUE(initial_value->Equals(&GetPreferenceValue(prefs::kHomePage))); |
| 514 } | 514 } |
| 515 | 515 |
| 516 TEST_F(ProfileSyncServicePreferenceTest, | 516 TEST_F(ProfileSyncServicePreferenceTest, |
| 517 DynamicManagedPreferencesWithSyncChange) { | 517 DynamicManagedPreferencesWithSyncChange) { |
| 518 CreateRootHelper create_root(this, syncable::PREFERENCES); | 518 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 519 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 519 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 520 ASSERT_TRUE(create_root.success()); | 520 ASSERT_TRUE(create_root.success()); |
| 521 | 521 |
| 522 scoped_ptr<Value> initial_value( | 522 scoped_ptr<Value> initial_value( |
| 523 Value::CreateStringValue("http://example.com/initial")); | 523 Value::CreateStringValue("http://example.com/initial")); |
| 524 profile_->GetPrefs()->Set(prefs::kHomePage, *initial_value); | 524 profile_->GetPrefs()->Set(prefs::kHomePage, *initial_value); |
| 525 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); | 525 scoped_ptr<const Value> actual(GetSyncedValue(prefs::kHomePage)); |
| 526 EXPECT_TRUE(initial_value->Equals(actual.get())); | 526 EXPECT_TRUE(initial_value->Equals(actual.get())); |
| 527 | 527 |
| 528 // Switch kHomePage to managed and set a different value. | 528 // Switch kHomePage to managed and set a different value. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 552 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); | 552 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); |
| 553 | 553 |
| 554 // Sync value should be picked up. | 554 // Sync value should be picked up. |
| 555 EXPECT_TRUE(sync_value->Equals(&GetPreferenceValue(prefs::kHomePage))); | 555 EXPECT_TRUE(sync_value->Equals(&GetPreferenceValue(prefs::kHomePage))); |
| 556 } | 556 } |
| 557 | 557 |
| 558 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedDefaultPreferences) { | 558 TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedDefaultPreferences) { |
| 559 const PrefService::Preference* pref = | 559 const PrefService::Preference* pref = |
| 560 prefs_->FindPreference(prefs::kHomePage); | 560 prefs_->FindPreference(prefs::kHomePage); |
| 561 EXPECT_TRUE(pref->IsDefaultValue()); | 561 EXPECT_TRUE(pref->IsDefaultValue()); |
| 562 CreateRootHelper create_root(this, syncable::PREFERENCES); | 562 CreateRootHelper create_root(this, syncer::PREFERENCES); |
| 563 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); | 563 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); |
| 564 ASSERT_TRUE(create_root.success()); | 564 ASSERT_TRUE(create_root.success()); |
| 565 EXPECT_TRUE(IsSynced(prefs::kHomePage)); | 565 EXPECT_TRUE(IsSynced(prefs::kHomePage)); |
| 566 EXPECT_TRUE(pref->IsDefaultValue()); | 566 EXPECT_TRUE(pref->IsDefaultValue()); |
| 567 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 567 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
| 568 // Switch kHomePage to managed and set a different value. | 568 // Switch kHomePage to managed and set a different value. |
| 569 scoped_ptr<Value> managed_value( | 569 scoped_ptr<Value> managed_value( |
| 570 Value::CreateStringValue("http://example.com/managed")); | 570 Value::CreateStringValue("http://example.com/managed")); |
| 571 profile_->GetTestingPrefService()->SetManagedPref( | 571 profile_->GetTestingPrefService()->SetManagedPref( |
| 572 prefs::kHomePage, managed_value->DeepCopy()); | 572 prefs::kHomePage, managed_value->DeepCopy()); |
| 573 // The pref value should be the one dictated by policy. | 573 // The pref value should be the one dictated by policy. |
| 574 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); | 574 EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); |
| 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 |