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 |