| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "chrome/browser/extensions/api/storage/leveldb_settings_storage_factory
.h" | 11 #include "chrome/browser/extensions/api/storage/leveldb_settings_storage_factory
.h" |
| 12 #include "chrome/browser/extensions/api/storage/settings_frontend.h" | 12 #include "chrome/browser/extensions/api/storage/settings_frontend.h" |
| 13 #include "chrome/browser/extensions/api/storage/settings_storage_factory.h" | 13 #include "chrome/browser/extensions/api/storage/settings_storage_factory.h" |
| 14 #include "chrome/browser/extensions/api/storage/settings_sync_util.h" | 14 #include "chrome/browser/extensions/api/storage/settings_sync_util.h" |
| 15 #include "chrome/browser/extensions/api/storage/settings_test_util.h" | 15 #include "chrome/browser/extensions/api/storage/settings_test_util.h" |
| 16 #include "chrome/browser/extensions/api/storage/syncable_settings_storage.h" | 16 #include "chrome/browser/extensions/api/storage/syncable_settings_storage.h" |
| 17 #include "chrome/browser/extensions/test_extension_service.h" | 17 #include "chrome/browser/extensions/test_extension_service.h" |
| 18 #include "chrome/browser/value_store/testing_value_store.h" | 18 #include "chrome/browser/value_store/testing_value_store.h" |
| 19 #include "content/public/test/test_browser_thread.h" | 19 #include "content/public/test/test_browser_thread.h" |
| 20 #include "extensions/browser/extension_system.h" | 20 #include "extensions/browser/extension_system.h" |
| 21 #include "extensions/common/manifest.h" | 21 #include "extensions/common/manifest.h" |
| 22 #include "sync/api/sync_change_processor.h" | 22 #include "sync/api/sync_change_processor.h" |
| 23 #include "sync/api/sync_change_processor_wrapper_for_test.h" |
| 23 #include "sync/api/sync_error_factory.h" | 24 #include "sync/api/sync_error_factory.h" |
| 24 #include "sync/api/sync_error_factory_mock.h" | 25 #include "sync/api/sync_error_factory_mock.h" |
| 25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
| 26 | 27 |
| 27 using base::DictionaryValue; | 28 using base::DictionaryValue; |
| 28 using base::ListValue; | 29 using base::ListValue; |
| 29 using base::Value; | 30 using base::Value; |
| 30 using content::BrowserThread; | 31 using content::BrowserThread; |
| 31 | 32 |
| 32 namespace extensions { | 33 namespace extensions { |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 extension_id << "/" << key << " (out of " << changes_.size() << ")"; | 151 extension_id << "/" << key << " (out of " << changes_.size() << ")"; |
| 151 } | 152 } |
| 152 return matching_changes[0]; | 153 return matching_changes[0]; |
| 153 } | 154 } |
| 154 | 155 |
| 155 private: | 156 private: |
| 156 SettingSyncDataList changes_; | 157 SettingSyncDataList changes_; |
| 157 bool fail_all_requests_; | 158 bool fail_all_requests_; |
| 158 }; | 159 }; |
| 159 | 160 |
| 160 class SyncChangeProcessorDelegate : public syncer::SyncChangeProcessor { | |
| 161 public: | |
| 162 explicit SyncChangeProcessorDelegate(syncer::SyncChangeProcessor* recipient) | |
| 163 : recipient_(recipient) { | |
| 164 DCHECK(recipient_); | |
| 165 } | |
| 166 virtual ~SyncChangeProcessorDelegate() {} | |
| 167 | |
| 168 // syncer::SyncChangeProcessor implementation. | |
| 169 virtual syncer::SyncError ProcessSyncChanges( | |
| 170 const tracked_objects::Location& from_here, | |
| 171 const syncer::SyncChangeList& change_list) OVERRIDE { | |
| 172 return recipient_->ProcessSyncChanges(from_here, change_list); | |
| 173 } | |
| 174 | |
| 175 virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const | |
| 176 OVERRIDE { | |
| 177 return recipient_->GetAllSyncData(type); | |
| 178 } | |
| 179 | |
| 180 private: | |
| 181 // The recipient of all sync changes. | |
| 182 syncer::SyncChangeProcessor* recipient_; | |
| 183 | |
| 184 DISALLOW_COPY_AND_ASSIGN(SyncChangeProcessorDelegate); | |
| 185 }; | |
| 186 | |
| 187 // SettingsStorageFactory which always returns TestingValueStore objects, | 161 // SettingsStorageFactory which always returns TestingValueStore objects, |
| 188 // and allows individually created objects to be returned. | 162 // and allows individually created objects to be returned. |
| 189 class TestingValueStoreFactory : public SettingsStorageFactory { | 163 class TestingValueStoreFactory : public SettingsStorageFactory { |
| 190 public: | 164 public: |
| 191 TestingValueStore* GetExisting(const std::string& extension_id) { | 165 TestingValueStore* GetExisting(const std::string& extension_id) { |
| 192 DCHECK(created_.count(extension_id)); | 166 DCHECK(created_.count(extension_id)); |
| 193 return created_[extension_id]; | 167 return created_[extension_id]; |
| 194 } | 168 } |
| 195 | 169 |
| 196 // SettingsStorageFactory implementation. | 170 // SettingsStorageFactory implementation. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 213 | 187 |
| 214 } // namespace | 188 } // namespace |
| 215 | 189 |
| 216 class ExtensionSettingsSyncTest : public testing::Test { | 190 class ExtensionSettingsSyncTest : public testing::Test { |
| 217 public: | 191 public: |
| 218 ExtensionSettingsSyncTest() | 192 ExtensionSettingsSyncTest() |
| 219 : ui_thread_(BrowserThread::UI, base::MessageLoop::current()), | 193 : ui_thread_(BrowserThread::UI, base::MessageLoop::current()), |
| 220 file_thread_(BrowserThread::FILE, base::MessageLoop::current()), | 194 file_thread_(BrowserThread::FILE, base::MessageLoop::current()), |
| 221 storage_factory_(new util::ScopedSettingsStorageFactory()), | 195 storage_factory_(new util::ScopedSettingsStorageFactory()), |
| 222 sync_processor_(new MockSyncChangeProcessor), | 196 sync_processor_(new MockSyncChangeProcessor), |
| 223 sync_processor_delegate_(new SyncChangeProcessorDelegate( | 197 sync_processor_wrapper_(new syncer::SyncChangeProcessorWrapperForTest( |
| 224 sync_processor_.get())) {} | 198 sync_processor_.get())) {} |
| 225 | 199 |
| 226 virtual void SetUp() OVERRIDE { | 200 virtual void SetUp() OVERRIDE { |
| 227 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 201 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 228 profile_.reset(new util::MockProfile(temp_dir_.path())); | 202 profile_.reset(new util::MockProfile(temp_dir_.path())); |
| 229 storage_factory_->Reset(new LeveldbSettingsStorageFactory()); | 203 storage_factory_->Reset(new LeveldbSettingsStorageFactory()); |
| 230 frontend_.reset( | 204 frontend_.reset( |
| 231 SettingsFrontend::Create(storage_factory_.get(), profile_.get())); | 205 SettingsFrontend::Create(storage_factory_.get(), profile_.get())); |
| 232 } | 206 } |
| 233 | 207 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 // Need these so that the DCHECKs for running on FILE or UI threads pass. | 248 // Need these so that the DCHECKs for running on FILE or UI threads pass. |
| 275 base::MessageLoop message_loop_; | 249 base::MessageLoop message_loop_; |
| 276 content::TestBrowserThread ui_thread_; | 250 content::TestBrowserThread ui_thread_; |
| 277 content::TestBrowserThread file_thread_; | 251 content::TestBrowserThread file_thread_; |
| 278 | 252 |
| 279 base::ScopedTempDir temp_dir_; | 253 base::ScopedTempDir temp_dir_; |
| 280 scoped_ptr<util::MockProfile> profile_; | 254 scoped_ptr<util::MockProfile> profile_; |
| 281 scoped_ptr<SettingsFrontend> frontend_; | 255 scoped_ptr<SettingsFrontend> frontend_; |
| 282 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_; | 256 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_; |
| 283 scoped_ptr<MockSyncChangeProcessor> sync_processor_; | 257 scoped_ptr<MockSyncChangeProcessor> sync_processor_; |
| 284 scoped_ptr<SyncChangeProcessorDelegate> sync_processor_delegate_; | 258 scoped_ptr<syncer::SyncChangeProcessorWrapperForTest> sync_processor_wrapper_; |
| 285 }; | 259 }; |
| 286 | 260 |
| 287 // Get a semblance of coverage for both EXTENSION_SETTINGS and APP_SETTINGS | 261 // Get a semblance of coverage for both EXTENSION_SETTINGS and APP_SETTINGS |
| 288 // sync by roughly alternative which one to test. | 262 // sync by roughly alternative which one to test. |
| 289 | 263 |
| 290 TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { | 264 TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { |
| 291 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 265 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
| 292 Manifest::Type type = Manifest::TYPE_EXTENSION; | 266 Manifest::Type type = Manifest::TYPE_EXTENSION; |
| 293 | 267 |
| 294 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 268 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
| 295 | 269 |
| 296 // Have one extension created before sync is set up, the other created after. | 270 // Have one extension created before sync is set up, the other created after. |
| 297 AddExtensionAndGetStorage("s1", type); | 271 AddExtensionAndGetStorage("s1", type); |
| 298 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 272 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
| 299 | 273 |
| 300 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 274 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 301 model_type, | 275 model_type, |
| 302 syncer::SyncDataList(), | 276 syncer::SyncDataList(), |
| 303 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 277 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 304 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 278 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 305 | 279 |
| 306 AddExtensionAndGetStorage("s2", type); | 280 AddExtensionAndGetStorage("s2", type); |
| 307 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 281 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
| 308 | 282 |
| 309 GetSyncableService(model_type)->StopSyncing(model_type); | 283 GetSyncableService(model_type)->StopSyncing(model_type); |
| 310 | 284 |
| 311 EXPECT_EQ(0u, sync_processor_->changes().size()); | 285 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 312 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 286 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
| 313 } | 287 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 334 EXPECT_EQ(1u, all_sync_data["s2"].size()); | 308 EXPECT_EQ(1u, all_sync_data["s2"].size()); |
| 335 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &all_sync_data["s2"][0].value()); | 309 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &all_sync_data["s2"][0].value()); |
| 336 | 310 |
| 337 syncer::SyncDataList sync_data; | 311 syncer::SyncDataList sync_data; |
| 338 sync_data.push_back(settings_sync_util::CreateData( | 312 sync_data.push_back(settings_sync_util::CreateData( |
| 339 "s1", "foo", value1, model_type)); | 313 "s1", "foo", value1, model_type)); |
| 340 sync_data.push_back(settings_sync_util::CreateData( | 314 sync_data.push_back(settings_sync_util::CreateData( |
| 341 "s2", "bar", value2, model_type)); | 315 "s2", "bar", value2, model_type)); |
| 342 | 316 |
| 343 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 317 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 344 model_type, sync_data, | 318 model_type, |
| 345 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 319 sync_data, |
| 320 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 346 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 321 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 347 | 322 |
| 348 // Already in sync, so no changes. | 323 // Already in sync, so no changes. |
| 349 EXPECT_EQ(0u, sync_processor_->changes().size()); | 324 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 350 | 325 |
| 351 // Regression test: not-changing the synced value shouldn't result in a sync | 326 // Regression test: not-changing the synced value shouldn't result in a sync |
| 352 // change, and changing the synced value should result in an update. | 327 // change, and changing the synced value should result in an update. |
| 353 storage1->Set(DEFAULTS, "foo", value1); | 328 storage1->Set(DEFAULTS, "foo", value1); |
| 354 EXPECT_EQ(0u, sync_processor_->changes().size()); | 329 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 355 | 330 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 372 | 347 |
| 373 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 348 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
| 374 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 349 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
| 375 | 350 |
| 376 storage1->Set(DEFAULTS, "foo", value1); | 351 storage1->Set(DEFAULTS, "foo", value1); |
| 377 storage2->Set(DEFAULTS, "bar", value2); | 352 storage2->Set(DEFAULTS, "bar", value2); |
| 378 | 353 |
| 379 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 354 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 380 model_type, | 355 model_type, |
| 381 syncer::SyncDataList(), | 356 syncer::SyncDataList(), |
| 382 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 357 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 383 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 358 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 384 | 359 |
| 385 // All settings should have been pushed to sync. | 360 // All settings should have been pushed to sync. |
| 386 EXPECT_EQ(2u, sync_processor_->changes().size()); | 361 EXPECT_EQ(2u, sync_processor_->changes().size()); |
| 387 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "foo"); | 362 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "foo"); |
| 388 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); | 363 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); |
| 389 EXPECT_TRUE(value1.Equals(&change.value())); | 364 EXPECT_TRUE(value1.Equals(&change.value())); |
| 390 change = sync_processor_->GetOnlyChange("s2", "bar"); | 365 change = sync_processor_->GetOnlyChange("s2", "bar"); |
| 391 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); | 366 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); |
| 392 EXPECT_TRUE(value2.Equals(&change.value())); | 367 EXPECT_TRUE(value2.Equals(&change.value())); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 409 // Pre-populate one of the storage areas. | 384 // Pre-populate one of the storage areas. |
| 410 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 385 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
| 411 storage1->Set(DEFAULTS, "overwriteMe", value1); | 386 storage1->Set(DEFAULTS, "overwriteMe", value1); |
| 412 | 387 |
| 413 syncer::SyncDataList sync_data; | 388 syncer::SyncDataList sync_data; |
| 414 sync_data.push_back(settings_sync_util::CreateData( | 389 sync_data.push_back(settings_sync_util::CreateData( |
| 415 "s1", "foo", value1, model_type)); | 390 "s1", "foo", value1, model_type)); |
| 416 sync_data.push_back(settings_sync_util::CreateData( | 391 sync_data.push_back(settings_sync_util::CreateData( |
| 417 "s2", "bar", value2, model_type)); | 392 "s2", "bar", value2, model_type)); |
| 418 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 393 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 419 model_type, sync_data, | 394 model_type, |
| 420 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 395 sync_data, |
| 396 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 421 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 397 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 422 expected1.Set("foo", value1.DeepCopy()); | 398 expected1.Set("foo", value1.DeepCopy()); |
| 423 expected2.Set("bar", value2.DeepCopy()); | 399 expected2.Set("bar", value2.DeepCopy()); |
| 424 | 400 |
| 425 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 401 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
| 426 | 402 |
| 427 // All changes should be local, so no sync changes. | 403 // All changes should be local, so no sync changes. |
| 428 EXPECT_EQ(0u, sync_processor_->changes().size()); | 404 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 429 | 405 |
| 430 // Sync settings should have been pushed to local settings. | 406 // Sync settings should have been pushed to local settings. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 451 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 427 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
| 452 | 428 |
| 453 storage1->Set(DEFAULTS, "foo", value1); | 429 storage1->Set(DEFAULTS, "foo", value1); |
| 454 expected1.Set("foo", value1.DeepCopy()); | 430 expected1.Set("foo", value1.DeepCopy()); |
| 455 | 431 |
| 456 syncer::SyncDataList sync_data; | 432 syncer::SyncDataList sync_data; |
| 457 sync_data.push_back(settings_sync_util::CreateData( | 433 sync_data.push_back(settings_sync_util::CreateData( |
| 458 "s2", "bar", value2, model_type)); | 434 "s2", "bar", value2, model_type)); |
| 459 | 435 |
| 460 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 436 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 461 model_type, sync_data, | 437 model_type, |
| 462 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 438 sync_data, |
| 439 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 463 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 440 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 464 expected2.Set("bar", value2.DeepCopy()); | 441 expected2.Set("bar", value2.DeepCopy()); |
| 465 | 442 |
| 466 // Make sync add some settings. | 443 // Make sync add some settings. |
| 467 syncer::SyncChangeList change_list; | 444 syncer::SyncChangeList change_list; |
| 468 change_list.push_back(settings_sync_util::CreateAdd( | 445 change_list.push_back(settings_sync_util::CreateAdd( |
| 469 "s1", "bar", value2, model_type)); | 446 "s1", "bar", value2, model_type)); |
| 470 change_list.push_back(settings_sync_util::CreateAdd( | 447 change_list.push_back(settings_sync_util::CreateAdd( |
| 471 "s2", "foo", value1, model_type)); | 448 "s2", "foo", value1, model_type)); |
| 472 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); | 449 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 storage1->Set(DEFAULTS, "foo", value1); | 502 storage1->Set(DEFAULTS, "foo", value1); |
| 526 storage2->Set(DEFAULTS, "foo", value1); | 503 storage2->Set(DEFAULTS, "foo", value1); |
| 527 | 504 |
| 528 syncer::SyncDataList sync_data; | 505 syncer::SyncDataList sync_data; |
| 529 sync_data.push_back(settings_sync_util::CreateData( | 506 sync_data.push_back(settings_sync_util::CreateData( |
| 530 "s3", "bar", value2, model_type)); | 507 "s3", "bar", value2, model_type)); |
| 531 sync_data.push_back(settings_sync_util::CreateData( | 508 sync_data.push_back(settings_sync_util::CreateData( |
| 532 "s4", "bar", value2, model_type)); | 509 "s4", "bar", value2, model_type)); |
| 533 | 510 |
| 534 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 511 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 535 model_type, sync_data, | 512 model_type, |
| 536 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 513 sync_data, |
| 514 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 537 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 515 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 538 | 516 |
| 539 // Add something locally. | 517 // Add something locally. |
| 540 storage1->Set(DEFAULTS, "bar", value2); | 518 storage1->Set(DEFAULTS, "bar", value2); |
| 541 storage2->Set(DEFAULTS, "bar", value2); | 519 storage2->Set(DEFAULTS, "bar", value2); |
| 542 storage3->Set(DEFAULTS, "foo", value1); | 520 storage3->Set(DEFAULTS, "foo", value1); |
| 543 storage4->Set(DEFAULTS, "foo", value1); | 521 storage4->Set(DEFAULTS, "foo", value1); |
| 544 | 522 |
| 545 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "bar"); | 523 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "bar"); |
| 546 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); | 524 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &app_sync_data["s2"][0].value()); | 654 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &app_sync_data["s2"][0].value()); |
| 677 | 655 |
| 678 // Stop each separately, there should be no changes either time. | 656 // Stop each separately, there should be no changes either time. |
| 679 syncer::SyncDataList sync_data; | 657 syncer::SyncDataList sync_data; |
| 680 sync_data.push_back(settings_sync_util::CreateData( | 658 sync_data.push_back(settings_sync_util::CreateData( |
| 681 "s1", "foo", value1, syncer::EXTENSION_SETTINGS)); | 659 "s1", "foo", value1, syncer::EXTENSION_SETTINGS)); |
| 682 | 660 |
| 683 GetSyncableService(syncer::EXTENSION_SETTINGS)->MergeDataAndStartSyncing( | 661 GetSyncableService(syncer::EXTENSION_SETTINGS)->MergeDataAndStartSyncing( |
| 684 syncer::EXTENSION_SETTINGS, | 662 syncer::EXTENSION_SETTINGS, |
| 685 sync_data, | 663 sync_data, |
| 686 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 664 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 687 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 665 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 688 GetSyncableService(syncer::EXTENSION_SETTINGS)-> | 666 GetSyncableService(syncer::EXTENSION_SETTINGS)-> |
| 689 StopSyncing(syncer::EXTENSION_SETTINGS); | 667 StopSyncing(syncer::EXTENSION_SETTINGS); |
| 690 EXPECT_EQ(0u, sync_processor_->changes().size()); | 668 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 691 | 669 |
| 692 sync_data.clear(); | 670 sync_data.clear(); |
| 693 sync_data.push_back(settings_sync_util::CreateData( | 671 sync_data.push_back(settings_sync_util::CreateData( |
| 694 "s2", "bar", value2, syncer::APP_SETTINGS)); | 672 "s2", "bar", value2, syncer::APP_SETTINGS)); |
| 695 | 673 |
| 696 scoped_ptr<SyncChangeProcessorDelegate> app_settings_delegate_( | 674 scoped_ptr<syncer::SyncChangeProcessorWrapperForTest> app_settings_delegate_( |
| 697 new SyncChangeProcessorDelegate(sync_processor_.get())); | 675 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 698 GetSyncableService(syncer::APP_SETTINGS)->MergeDataAndStartSyncing( | 676 GetSyncableService(syncer::APP_SETTINGS)->MergeDataAndStartSyncing( |
| 699 syncer::APP_SETTINGS, | 677 syncer::APP_SETTINGS, |
| 700 sync_data, | 678 sync_data, |
| 701 app_settings_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 679 app_settings_delegate_.PassAs<syncer::SyncChangeProcessor>(), |
| 702 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 680 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 703 GetSyncableService(syncer::APP_SETTINGS)-> | 681 GetSyncableService(syncer::APP_SETTINGS)-> |
| 704 StopSyncing(syncer::APP_SETTINGS); | 682 StopSyncing(syncer::APP_SETTINGS); |
| 705 EXPECT_EQ(0u, sync_processor_->changes().size()); | 683 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 706 } | 684 } |
| 707 | 685 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 725 testing_factory->GetExisting("bad")->set_error_code(ValueStore::CORRUPTION); | 703 testing_factory->GetExisting("bad")->set_error_code(ValueStore::CORRUPTION); |
| 726 { | 704 { |
| 727 syncer::SyncDataList sync_data; | 705 syncer::SyncDataList sync_data; |
| 728 sync_data.push_back(settings_sync_util::CreateData( | 706 sync_data.push_back(settings_sync_util::CreateData( |
| 729 "good", "foo", fooValue, model_type)); | 707 "good", "foo", fooValue, model_type)); |
| 730 sync_data.push_back(settings_sync_util::CreateData( | 708 sync_data.push_back(settings_sync_util::CreateData( |
| 731 "bad", "foo", fooValue, model_type)); | 709 "bad", "foo", fooValue, model_type)); |
| 732 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 710 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 733 model_type, | 711 model_type, |
| 734 sync_data, | 712 sync_data, |
| 735 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 713 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 736 scoped_ptr<syncer::SyncErrorFactory>( | 714 scoped_ptr<syncer::SyncErrorFactory>( |
| 737 new syncer::SyncErrorFactoryMock())); | 715 new syncer::SyncErrorFactoryMock())); |
| 738 } | 716 } |
| 739 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); | 717 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); |
| 740 | 718 |
| 741 { | 719 { |
| 742 base::DictionaryValue dict; | 720 base::DictionaryValue dict; |
| 743 dict.Set("foo", fooValue.DeepCopy()); | 721 dict.Set("foo", fooValue.DeepCopy()); |
| 744 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); | 722 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); |
| 745 } | 723 } |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 } | 817 } |
| 840 { | 818 { |
| 841 base::DictionaryValue dict; | 819 base::DictionaryValue dict; |
| 842 dict.Set("bar", fooValue.DeepCopy()); | 820 dict.Set("bar", fooValue.DeepCopy()); |
| 843 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 821 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
| 844 } | 822 } |
| 845 | 823 |
| 846 // Restarting sync should make bad start syncing again. | 824 // Restarting sync should make bad start syncing again. |
| 847 sync_processor_->ClearChanges(); | 825 sync_processor_->ClearChanges(); |
| 848 GetSyncableService(model_type)->StopSyncing(model_type); | 826 GetSyncableService(model_type)->StopSyncing(model_type); |
| 849 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate( | 827 sync_processor_wrapper_.reset( |
| 850 sync_processor_.get())); | 828 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 851 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 829 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 852 model_type, | 830 model_type, |
| 853 syncer::SyncDataList(), | 831 syncer::SyncDataList(), |
| 854 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 832 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 855 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 833 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 856 | 834 |
| 857 // Local settings will have been pushed to sync, since it's empty (in this | 835 // Local settings will have been pushed to sync, since it's empty (in this |
| 858 // test; presumably it wouldn't be live, since we've been getting changes). | 836 // test; presumably it wouldn't be live, since we've been getting changes). |
| 859 EXPECT_EQ( | 837 EXPECT_EQ( |
| 860 syncer::SyncChange::ACTION_ADD, | 838 syncer::SyncChange::ACTION_ADD, |
| 861 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 839 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 862 EXPECT_EQ( | 840 EXPECT_EQ( |
| 863 syncer::SyncChange::ACTION_ADD, | 841 syncer::SyncChange::ACTION_ADD, |
| 864 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 842 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 // Unlike before, initially succeeding MergeDataAndStartSyncing. | 899 // Unlike before, initially succeeding MergeDataAndStartSyncing. |
| 922 { | 900 { |
| 923 syncer::SyncDataList sync_data; | 901 syncer::SyncDataList sync_data; |
| 924 sync_data.push_back(settings_sync_util::CreateData( | 902 sync_data.push_back(settings_sync_util::CreateData( |
| 925 "good", "foo", fooValue, model_type)); | 903 "good", "foo", fooValue, model_type)); |
| 926 sync_data.push_back(settings_sync_util::CreateData( | 904 sync_data.push_back(settings_sync_util::CreateData( |
| 927 "bad", "foo", fooValue, model_type)); | 905 "bad", "foo", fooValue, model_type)); |
| 928 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 906 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 929 model_type, | 907 model_type, |
| 930 sync_data, | 908 sync_data, |
| 931 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 909 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 932 scoped_ptr<syncer::SyncErrorFactory>( | 910 scoped_ptr<syncer::SyncErrorFactory>( |
| 933 new syncer::SyncErrorFactoryMock())); | 911 new syncer::SyncErrorFactoryMock())); |
| 934 } | 912 } |
| 935 | 913 |
| 936 EXPECT_EQ(0u, sync_processor_->changes().size()); | 914 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 937 | 915 |
| 938 { | 916 { |
| 939 base::DictionaryValue dict; | 917 base::DictionaryValue dict; |
| 940 dict.Set("foo", fooValue.DeepCopy()); | 918 dict.Set("foo", fooValue.DeepCopy()); |
| 941 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); | 919 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1027 GetSyncableService(model_type)->GetAllSyncData(model_type); | 1005 GetSyncableService(model_type)->GetAllSyncData(model_type); |
| 1028 EXPECT_EQ(1u, all_sync_data.size()); | 1006 EXPECT_EQ(1u, all_sync_data.size()); |
| 1029 EXPECT_EQ("good/foo", all_sync_data[0].GetTag()); | 1007 EXPECT_EQ("good/foo", all_sync_data[0].GetTag()); |
| 1030 } | 1008 } |
| 1031 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); | 1009 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); |
| 1032 | 1010 |
| 1033 // Sync shouldn't be disabled for good (nor bad -- but this is unimportant). | 1011 // Sync shouldn't be disabled for good (nor bad -- but this is unimportant). |
| 1034 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1012 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1035 model_type, | 1013 model_type, |
| 1036 syncer::SyncDataList(), | 1014 syncer::SyncDataList(), |
| 1037 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1015 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1038 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1016 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1039 | 1017 |
| 1040 EXPECT_EQ( | 1018 EXPECT_EQ( |
| 1041 syncer::SyncChange::ACTION_ADD, | 1019 syncer::SyncChange::ACTION_ADD, |
| 1042 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1020 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 1043 EXPECT_EQ( | 1021 EXPECT_EQ( |
| 1044 syncer::SyncChange::ACTION_ADD, | 1022 syncer::SyncChange::ACTION_ADD, |
| 1045 sync_processor_->GetOnlyChange("bad", "foo").change_type()); | 1023 sync_processor_->GetOnlyChange("bad", "foo").change_type()); |
| 1046 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1024 EXPECT_EQ(2u, sync_processor_->changes().size()); |
| 1047 | 1025 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1073 | 1051 |
| 1074 good->Set(DEFAULTS, "foo", fooValue); | 1052 good->Set(DEFAULTS, "foo", fooValue); |
| 1075 bad->Set(DEFAULTS, "foo", fooValue); | 1053 bad->Set(DEFAULTS, "foo", fooValue); |
| 1076 | 1054 |
| 1077 // good will successfully push foo:fooValue to sync, but bad will fail to | 1055 // good will successfully push foo:fooValue to sync, but bad will fail to |
| 1078 // get them so won't. | 1056 // get them so won't. |
| 1079 testing_factory->GetExisting("bad")->set_error_code(ValueStore::CORRUPTION); | 1057 testing_factory->GetExisting("bad")->set_error_code(ValueStore::CORRUPTION); |
| 1080 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1058 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1081 model_type, | 1059 model_type, |
| 1082 syncer::SyncDataList(), | 1060 syncer::SyncDataList(), |
| 1083 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1061 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1084 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1062 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1085 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); | 1063 testing_factory->GetExisting("bad")->set_error_code(ValueStore::OK); |
| 1086 | 1064 |
| 1087 EXPECT_EQ( | 1065 EXPECT_EQ( |
| 1088 syncer::SyncChange::ACTION_ADD, | 1066 syncer::SyncChange::ACTION_ADD, |
| 1089 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1067 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 1090 EXPECT_EQ(1u, sync_processor_->changes().size()); | 1068 EXPECT_EQ(1u, sync_processor_->changes().size()); |
| 1091 | 1069 |
| 1092 // bad should now be disabled for sync. | 1070 // bad should now be disabled for sync. |
| 1093 sync_processor_->ClearChanges(); | 1071 sync_processor_->ClearChanges(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1120 base::DictionaryValue dict; | 1098 base::DictionaryValue dict; |
| 1121 dict.Set("foo", fooValue.DeepCopy()); | 1099 dict.Set("foo", fooValue.DeepCopy()); |
| 1122 dict.Set("bar", barValue.DeepCopy()); | 1100 dict.Set("bar", barValue.DeepCopy()); |
| 1123 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 1101 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
| 1124 } | 1102 } |
| 1125 | 1103 |
| 1126 // Re-enabling sync without failing should cause the local changes from bad | 1104 // Re-enabling sync without failing should cause the local changes from bad |
| 1127 // to be pushed to sync successfully, as should future changes to bad. | 1105 // to be pushed to sync successfully, as should future changes to bad. |
| 1128 sync_processor_->ClearChanges(); | 1106 sync_processor_->ClearChanges(); |
| 1129 GetSyncableService(model_type)->StopSyncing(model_type); | 1107 GetSyncableService(model_type)->StopSyncing(model_type); |
| 1130 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate( | 1108 sync_processor_wrapper_.reset( |
| 1131 sync_processor_.get())); | 1109 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 1132 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1110 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1133 model_type, | 1111 model_type, |
| 1134 syncer::SyncDataList(), | 1112 syncer::SyncDataList(), |
| 1135 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1113 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1136 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1114 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1137 | 1115 |
| 1138 EXPECT_EQ( | 1116 EXPECT_EQ( |
| 1139 syncer::SyncChange::ACTION_ADD, | 1117 syncer::SyncChange::ACTION_ADD, |
| 1140 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1118 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 1141 EXPECT_EQ( | 1119 EXPECT_EQ( |
| 1142 syncer::SyncChange::ACTION_ADD, | 1120 syncer::SyncChange::ACTION_ADD, |
| 1143 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1121 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
| 1144 EXPECT_EQ( | 1122 EXPECT_EQ( |
| 1145 syncer::SyncChange::ACTION_ADD, | 1123 syncer::SyncChange::ACTION_ADD, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1175 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1153 ValueStore* good = AddExtensionAndGetStorage("good", type); |
| 1176 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1154 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
| 1177 | 1155 |
| 1178 // Only set bad; setting good will cause it to fail below. | 1156 // Only set bad; setting good will cause it to fail below. |
| 1179 bad->Set(DEFAULTS, "foo", fooValue); | 1157 bad->Set(DEFAULTS, "foo", fooValue); |
| 1180 | 1158 |
| 1181 sync_processor_->set_fail_all_requests(true); | 1159 sync_processor_->set_fail_all_requests(true); |
| 1182 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1160 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1183 model_type, | 1161 model_type, |
| 1184 syncer::SyncDataList(), | 1162 syncer::SyncDataList(), |
| 1185 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1163 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1186 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1164 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1187 sync_processor_->set_fail_all_requests(false); | 1165 sync_processor_->set_fail_all_requests(false); |
| 1188 | 1166 |
| 1189 // Changes from good will be send to sync, changes from bad won't. | 1167 // Changes from good will be send to sync, changes from bad won't. |
| 1190 sync_processor_->ClearChanges(); | 1168 sync_processor_->ClearChanges(); |
| 1191 good->Set(DEFAULTS, "foo", barValue); | 1169 good->Set(DEFAULTS, "foo", barValue); |
| 1192 bad->Set(DEFAULTS, "foo", barValue); | 1170 bad->Set(DEFAULTS, "foo", barValue); |
| 1193 | 1171 |
| 1194 EXPECT_EQ( | 1172 EXPECT_EQ( |
| 1195 syncer::SyncChange::ACTION_ADD, | 1173 syncer::SyncChange::ACTION_ADD, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1214 } | 1192 } |
| 1215 { | 1193 { |
| 1216 base::DictionaryValue dict; | 1194 base::DictionaryValue dict; |
| 1217 dict.Set("foo", barValue.DeepCopy()); | 1195 dict.Set("foo", barValue.DeepCopy()); |
| 1218 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 1196 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
| 1219 } | 1197 } |
| 1220 | 1198 |
| 1221 // Restarting sync makes everything work again. | 1199 // Restarting sync makes everything work again. |
| 1222 sync_processor_->ClearChanges(); | 1200 sync_processor_->ClearChanges(); |
| 1223 GetSyncableService(model_type)->StopSyncing(model_type); | 1201 GetSyncableService(model_type)->StopSyncing(model_type); |
| 1224 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate( | 1202 sync_processor_wrapper_.reset( |
| 1225 sync_processor_.get())); | 1203 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 1226 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1204 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1227 model_type, | 1205 model_type, |
| 1228 syncer::SyncDataList(), | 1206 syncer::SyncDataList(), |
| 1229 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1207 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1230 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1208 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1231 | 1209 |
| 1232 EXPECT_EQ( | 1210 EXPECT_EQ( |
| 1233 syncer::SyncChange::ACTION_ADD, | 1211 syncer::SyncChange::ACTION_ADD, |
| 1234 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1212 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 1235 EXPECT_EQ( | 1213 EXPECT_EQ( |
| 1236 syncer::SyncChange::ACTION_ADD, | 1214 syncer::SyncChange::ACTION_ADD, |
| 1237 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1215 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
| 1238 EXPECT_EQ( | 1216 EXPECT_EQ( |
| 1239 syncer::SyncChange::ACTION_ADD, | 1217 syncer::SyncChange::ACTION_ADD, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1262 | 1240 |
| 1263 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 1241 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
| 1264 storage_factory_->Reset(testing_factory); | 1242 storage_factory_->Reset(testing_factory); |
| 1265 | 1243 |
| 1266 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1244 ValueStore* good = AddExtensionAndGetStorage("good", type); |
| 1267 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1245 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
| 1268 | 1246 |
| 1269 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1247 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1270 model_type, | 1248 model_type, |
| 1271 syncer::SyncDataList(), | 1249 syncer::SyncDataList(), |
| 1272 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1250 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1273 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1251 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1274 | 1252 |
| 1275 // bad will fail to send changes. | 1253 // bad will fail to send changes. |
| 1276 good->Set(DEFAULTS, "foo", fooValue); | 1254 good->Set(DEFAULTS, "foo", fooValue); |
| 1277 sync_processor_->set_fail_all_requests(true); | 1255 sync_processor_->set_fail_all_requests(true); |
| 1278 bad->Set(DEFAULTS, "foo", fooValue); | 1256 bad->Set(DEFAULTS, "foo", fooValue); |
| 1279 sync_processor_->set_fail_all_requests(false); | 1257 sync_processor_->set_fail_all_requests(false); |
| 1280 | 1258 |
| 1281 EXPECT_EQ( | 1259 EXPECT_EQ( |
| 1282 syncer::SyncChange::ACTION_ADD, | 1260 syncer::SyncChange::ACTION_ADD, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1311 } | 1289 } |
| 1312 { | 1290 { |
| 1313 base::DictionaryValue dict; | 1291 base::DictionaryValue dict; |
| 1314 dict.Set("foo", barValue.DeepCopy()); | 1292 dict.Set("foo", barValue.DeepCopy()); |
| 1315 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 1293 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
| 1316 } | 1294 } |
| 1317 | 1295 |
| 1318 // Restarting sync makes everything work again. | 1296 // Restarting sync makes everything work again. |
| 1319 sync_processor_->ClearChanges(); | 1297 sync_processor_->ClearChanges(); |
| 1320 GetSyncableService(model_type)->StopSyncing(model_type); | 1298 GetSyncableService(model_type)->StopSyncing(model_type); |
| 1321 sync_processor_delegate_.reset(new SyncChangeProcessorDelegate( | 1299 sync_processor_wrapper_.reset( |
| 1322 sync_processor_.get())); | 1300 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 1323 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1301 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1324 model_type, | 1302 model_type, |
| 1325 syncer::SyncDataList(), | 1303 syncer::SyncDataList(), |
| 1326 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1304 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1327 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1305 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1328 | 1306 |
| 1329 EXPECT_EQ( | 1307 EXPECT_EQ( |
| 1330 syncer::SyncChange::ACTION_ADD, | 1308 syncer::SyncChange::ACTION_ADD, |
| 1331 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1309 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
| 1332 EXPECT_EQ( | 1310 EXPECT_EQ( |
| 1333 syncer::SyncChange::ACTION_ADD, | 1311 syncer::SyncChange::ACTION_ADD, |
| 1334 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1312 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
| 1335 EXPECT_EQ( | 1313 EXPECT_EQ( |
| 1336 syncer::SyncChange::ACTION_ADD, | 1314 syncer::SyncChange::ACTION_ADD, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1358 // This value should be larger than the limit in settings_backend.cc. | 1336 // This value should be larger than the limit in settings_backend.cc. |
| 1359 std::string string_5k; | 1337 std::string string_5k; |
| 1360 for (size_t i = 0; i < 5000; ++i) { | 1338 for (size_t i = 0; i < 5000; ++i) { |
| 1361 string_5k.append("a"); | 1339 string_5k.append("a"); |
| 1362 } | 1340 } |
| 1363 base::StringValue large_value(string_5k); | 1341 base::StringValue large_value(string_5k); |
| 1364 | 1342 |
| 1365 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1343 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1366 model_type, | 1344 model_type, |
| 1367 syncer::SyncDataList(), | 1345 syncer::SyncDataList(), |
| 1368 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1346 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1369 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 1347 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 1370 | 1348 |
| 1371 // Large local change rejected and doesn't get sent out. | 1349 // Large local change rejected and doesn't get sent out. |
| 1372 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 1350 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
| 1373 EXPECT_TRUE(storage1->Set(DEFAULTS, "large_value", large_value)->HasError()); | 1351 EXPECT_TRUE(storage1->Set(DEFAULTS, "large_value", large_value)->HasError()); |
| 1374 EXPECT_EQ(0u, sync_processor_->changes().size()); | 1352 EXPECT_EQ(0u, sync_processor_->changes().size()); |
| 1375 | 1353 |
| 1376 // Large incoming change should still get accepted. | 1354 // Large incoming change should still get accepted. |
| 1377 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 1355 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
| 1378 { | 1356 { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1401 | 1379 |
| 1402 { | 1380 { |
| 1403 syncer::SyncDataList sync_data_list; | 1381 syncer::SyncDataList sync_data_list; |
| 1404 scoped_ptr<base::Value> string_value(new base::StringValue("value")); | 1382 scoped_ptr<base::Value> string_value(new base::StringValue("value")); |
| 1405 sync_data_list.push_back(settings_sync_util::CreateData( | 1383 sync_data_list.push_back(settings_sync_util::CreateData( |
| 1406 "ext", "key.with.dot", *string_value, model_type)); | 1384 "ext", "key.with.dot", *string_value, model_type)); |
| 1407 | 1385 |
| 1408 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1386 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
| 1409 model_type, | 1387 model_type, |
| 1410 sync_data_list, | 1388 sync_data_list, |
| 1411 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 1389 sync_processor_wrapper_.PassAs<syncer::SyncChangeProcessor>(), |
| 1412 scoped_ptr<syncer::SyncErrorFactory>( | 1390 scoped_ptr<syncer::SyncErrorFactory>( |
| 1413 new syncer::SyncErrorFactoryMock())); | 1391 new syncer::SyncErrorFactoryMock())); |
| 1414 } | 1392 } |
| 1415 | 1393 |
| 1416 // Test dots in keys that come from sync. | 1394 // Test dots in keys that come from sync. |
| 1417 { | 1395 { |
| 1418 ValueStore::ReadResult data = storage->Get(); | 1396 ValueStore::ReadResult data = storage->Get(); |
| 1419 ASSERT_FALSE(data->HasError()); | 1397 ASSERT_FALSE(data->HasError()); |
| 1420 | 1398 |
| 1421 base::DictionaryValue expected_data; | 1399 base::DictionaryValue expected_data; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1433 ASSERT_EQ(1u, sync_processor_->changes().size()); | 1411 ASSERT_EQ(1u, sync_processor_->changes().size()); |
| 1434 SettingSyncData sync_data = sync_processor_->changes()[0]; | 1412 SettingSyncData sync_data = sync_processor_->changes()[0]; |
| 1435 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, sync_data.change_type()); | 1413 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, sync_data.change_type()); |
| 1436 EXPECT_EQ("ext", sync_data.extension_id()); | 1414 EXPECT_EQ("ext", sync_data.extension_id()); |
| 1437 EXPECT_EQ("key.with.spot", sync_data.key()); | 1415 EXPECT_EQ("key.with.spot", sync_data.key()); |
| 1438 EXPECT_TRUE(sync_data.value().Equals(string_value.get())); | 1416 EXPECT_TRUE(sync_data.value().Equals(string_value.get())); |
| 1439 } | 1417 } |
| 1440 } | 1418 } |
| 1441 | 1419 |
| 1442 } // namespace extensions | 1420 } // namespace extensions |
| OLD | NEW |