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

Side by Side Diff: chrome/browser/extensions/settings/settings_sync_unittest.cc

Issue 9427001: Extend TwoClientExtensionSettingsSyncTest to test app settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 for (SettingSyncDataList::iterator it = changes_.begin(); 118 for (SettingSyncDataList::iterator it = changes_.begin();
119 it != changes_.end(); ++it) { 119 it != changes_.end(); ++it) {
120 if (it->extension_id() == extension_id && it->key() == key) { 120 if (it->extension_id() == extension_id && it->key() == key) {
121 matching_changes.push_back(*it); 121 matching_changes.push_back(*it);
122 } 122 }
123 } 123 }
124 if (matching_changes.empty()) { 124 if (matching_changes.empty()) {
125 ADD_FAILURE() << "No matching changes for " << extension_id << "/" << 125 ADD_FAILURE() << "No matching changes for " << extension_id << "/" <<
126 key << " (out of " << changes_.size() << ")"; 126 key << " (out of " << changes_.size() << ")";
127 return SettingSyncData( 127 return SettingSyncData(
128 SyncChange::ACTION_INVALID, "", "", new DictionaryValue()); 128 SyncChange::ACTION_INVALID, "", "",
129 scoped_ptr<Value>(new DictionaryValue()));
129 } 130 }
130 if (matching_changes.size() != 1u) { 131 if (matching_changes.size() != 1u) {
131 ADD_FAILURE() << matching_changes.size() << " matching changes for " << 132 ADD_FAILURE() << matching_changes.size() << " matching changes for " <<
132 extension_id << "/" << key << " (out of " << changes_.size() << ")"; 133 extension_id << "/" << key << " (out of " << changes_.size() << ")";
133 } 134 }
134 return matching_changes[0]; 135 return matching_changes[0];
135 } 136 }
136 137
137 private: 138 private:
138 SettingSyncDataList changes_; 139 SettingSyncDataList changes_;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 std::map<std::string, SettingSyncDataList> all_sync_data = 280 std::map<std::string, SettingSyncDataList> all_sync_data =
280 GetAllSyncData(model_type); 281 GetAllSyncData(model_type);
281 EXPECT_EQ(2u, all_sync_data.size()); 282 EXPECT_EQ(2u, all_sync_data.size());
282 EXPECT_EQ(1u, all_sync_data["s1"].size()); 283 EXPECT_EQ(1u, all_sync_data["s1"].size());
283 EXPECT_PRED_FORMAT2(ValuesEq, &value1, &all_sync_data["s1"][0].value()); 284 EXPECT_PRED_FORMAT2(ValuesEq, &value1, &all_sync_data["s1"][0].value());
284 EXPECT_EQ(1u, all_sync_data["s2"].size()); 285 EXPECT_EQ(1u, all_sync_data["s2"].size());
285 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &all_sync_data["s2"][0].value()); 286 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &all_sync_data["s2"][0].value());
286 287
287 SyncDataList sync_data; 288 SyncDataList sync_data;
288 sync_data.push_back(settings_sync_util::CreateData( 289 sync_data.push_back(settings_sync_util::CreateData(
289 "s1", "foo", value1)); 290 "s1", "foo", value1, model_type));
290 sync_data.push_back(settings_sync_util::CreateData( 291 sync_data.push_back(settings_sync_util::CreateData(
291 "s2", "bar", value2)); 292 "s2", "bar", value2, model_type));
292 293
293 GetSyncableService(model_type)->MergeDataAndStartSyncing( 294 GetSyncableService(model_type)->MergeDataAndStartSyncing(
294 model_type, sync_data, &sync_); 295 model_type, sync_data, &sync_);
295 296
296 // Already in sync, so no changes. 297 // Already in sync, so no changes.
297 EXPECT_EQ(0u, sync_.changes().size()); 298 EXPECT_EQ(0u, sync_.changes().size());
298 299
299 // Regression test: not-changing the synced value shouldn't result in a sync 300 // Regression test: not-changing the synced value shouldn't result in a sync
300 // change, and changing the synced value should result in an update. 301 // change, and changing the synced value should result in an update.
301 storage1->Set(DEFAULTS, "foo", value1); 302 storage1->Set(DEFAULTS, "foo", value1);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 // Maintain dictionaries mirrored to the expected values of the settings in 351 // Maintain dictionaries mirrored to the expected values of the settings in
351 // each storage area. 352 // each storage area.
352 DictionaryValue expected1, expected2; 353 DictionaryValue expected1, expected2;
353 354
354 // Pre-populate one of the storage areas. 355 // Pre-populate one of the storage areas.
355 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type); 356 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type);
356 storage1->Set(DEFAULTS, "overwriteMe", value1); 357 storage1->Set(DEFAULTS, "overwriteMe", value1);
357 358
358 SyncDataList sync_data; 359 SyncDataList sync_data;
359 sync_data.push_back(settings_sync_util::CreateData( 360 sync_data.push_back(settings_sync_util::CreateData(
360 "s1", "foo", value1)); 361 "s1", "foo", value1, model_type));
361 sync_data.push_back(settings_sync_util::CreateData( 362 sync_data.push_back(settings_sync_util::CreateData(
362 "s2", "bar", value2)); 363 "s2", "bar", value2, model_type));
363 GetSyncableService(model_type)->MergeDataAndStartSyncing( 364 GetSyncableService(model_type)->MergeDataAndStartSyncing(
364 model_type, sync_data, &sync_); 365 model_type, sync_data, &sync_);
365 expected1.Set("foo", value1.DeepCopy()); 366 expected1.Set("foo", value1.DeepCopy());
366 expected2.Set("bar", value2.DeepCopy()); 367 expected2.Set("bar", value2.DeepCopy());
367 368
368 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type); 369 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type);
369 370
370 // All changes should be local, so no sync changes. 371 // All changes should be local, so no sync changes.
371 EXPECT_EQ(0u, sync_.changes().size()); 372 EXPECT_EQ(0u, sync_.changes().size());
372 373
(...skipping 18 matching lines...) Expand all
391 392
392 // Make storage1 initialised from local data, storage2 initialised from sync. 393 // Make storage1 initialised from local data, storage2 initialised from sync.
393 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type); 394 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type);
394 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type); 395 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type);
395 396
396 storage1->Set(DEFAULTS, "foo", value1); 397 storage1->Set(DEFAULTS, "foo", value1);
397 expected1.Set("foo", value1.DeepCopy()); 398 expected1.Set("foo", value1.DeepCopy());
398 399
399 SyncDataList sync_data; 400 SyncDataList sync_data;
400 sync_data.push_back(settings_sync_util::CreateData( 401 sync_data.push_back(settings_sync_util::CreateData(
401 "s2", "bar", value2)); 402 "s2", "bar", value2, model_type));
402 403
403 GetSyncableService(model_type)->MergeDataAndStartSyncing( 404 GetSyncableService(model_type)->MergeDataAndStartSyncing(
404 model_type, sync_data, &sync_); 405 model_type, sync_data, &sync_);
405 expected2.Set("bar", value2.DeepCopy()); 406 expected2.Set("bar", value2.DeepCopy());
406 407
407 // Make sync add some settings. 408 // Make sync add some settings.
408 SyncChangeList change_list; 409 SyncChangeList change_list;
409 change_list.push_back(settings_sync_util::CreateAdd( 410 change_list.push_back(settings_sync_util::CreateAdd(
410 "s1", "bar", value2)); 411 "s1", "bar", value2, model_type));
411 change_list.push_back(settings_sync_util::CreateAdd( 412 change_list.push_back(settings_sync_util::CreateAdd(
412 "s2", "foo", value1)); 413 "s2", "foo", value1, model_type));
413 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 414 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
414 expected1.Set("bar", value2.DeepCopy()); 415 expected1.Set("bar", value2.DeepCopy());
415 expected2.Set("foo", value1.DeepCopy()); 416 expected2.Set("foo", value1.DeepCopy());
416 417
417 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); 418 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get());
418 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); 419 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get());
419 420
420 // Make sync update some settings, storage1 the new setting, storage2 the 421 // Make sync update some settings, storage1 the new setting, storage2 the
421 // initial setting. 422 // initial setting.
422 change_list.clear(); 423 change_list.clear();
423 change_list.push_back(settings_sync_util::CreateUpdate( 424 change_list.push_back(settings_sync_util::CreateUpdate(
424 "s1", "bar", value2)); 425 "s1", "bar", value2, model_type));
425 change_list.push_back(settings_sync_util::CreateUpdate( 426 change_list.push_back(settings_sync_util::CreateUpdate(
426 "s2", "bar", value1)); 427 "s2", "bar", value1, model_type));
427 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 428 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
428 expected1.Set("bar", value2.DeepCopy()); 429 expected1.Set("bar", value2.DeepCopy());
429 expected2.Set("bar", value1.DeepCopy()); 430 expected2.Set("bar", value1.DeepCopy());
430 431
431 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); 432 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get());
432 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); 433 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get());
433 434
434 // Make sync remove some settings, storage1 the initial setting, storage2 the 435 // Make sync remove some settings, storage1 the initial setting, storage2 the
435 // new setting. 436 // new setting.
436 change_list.clear(); 437 change_list.clear();
437 change_list.push_back(settings_sync_util::CreateDelete( 438 change_list.push_back(settings_sync_util::CreateDelete(
438 "s1", "foo")); 439 "s1", "foo", model_type));
439 change_list.push_back(settings_sync_util::CreateDelete( 440 change_list.push_back(settings_sync_util::CreateDelete(
440 "s2", "foo")); 441 "s2", "foo", model_type));
441 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 442 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
442 expected1.Remove("foo", NULL); 443 expected1.Remove("foo", NULL);
443 expected2.Remove("foo", NULL); 444 expected2.Remove("foo", NULL);
444 445
445 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); 446 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get());
446 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); 447 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get());
447 448
448 GetSyncableService(model_type)->StopSyncing(model_type); 449 GetSyncableService(model_type)->StopSyncing(model_type);
449 } 450 }
450 451
(...skipping 10 matching lines...) Expand all
461 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type); 462 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type);
462 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type); 463 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type);
463 SettingsStorage* storage3 = AddExtensionAndGetStorage("s3", type); 464 SettingsStorage* storage3 = AddExtensionAndGetStorage("s3", type);
464 SettingsStorage* storage4 = AddExtensionAndGetStorage("s4", type); 465 SettingsStorage* storage4 = AddExtensionAndGetStorage("s4", type);
465 466
466 storage1->Set(DEFAULTS, "foo", value1); 467 storage1->Set(DEFAULTS, "foo", value1);
467 storage2->Set(DEFAULTS, "foo", value1); 468 storage2->Set(DEFAULTS, "foo", value1);
468 469
469 SyncDataList sync_data; 470 SyncDataList sync_data;
470 sync_data.push_back(settings_sync_util::CreateData( 471 sync_data.push_back(settings_sync_util::CreateData(
471 "s3", "bar", value2)); 472 "s3", "bar", value2, model_type));
472 sync_data.push_back(settings_sync_util::CreateData( 473 sync_data.push_back(settings_sync_util::CreateData(
473 "s4", "bar", value2)); 474 "s4", "bar", value2, model_type));
474 475
475 GetSyncableService(model_type)->MergeDataAndStartSyncing( 476 GetSyncableService(model_type)->MergeDataAndStartSyncing(
476 model_type, sync_data, &sync_); 477 model_type, sync_data, &sync_);
477 478
478 // Add something locally. 479 // Add something locally.
479 storage1->Set(DEFAULTS, "bar", value2); 480 storage1->Set(DEFAULTS, "bar", value2);
480 storage2->Set(DEFAULTS, "bar", value2); 481 storage2->Set(DEFAULTS, "bar", value2);
481 storage3->Set(DEFAULTS, "foo", value1); 482 storage3->Set(DEFAULTS, "foo", value1);
482 storage4->Set(DEFAULTS, "foo", value1); 483 storage4->Set(DEFAULTS, "foo", value1);
483 484
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 611
611 std::map<std::string, SettingSyncDataList> app_sync_data = 612 std::map<std::string, SettingSyncDataList> app_sync_data =
612 GetAllSyncData(syncable::APP_SETTINGS); 613 GetAllSyncData(syncable::APP_SETTINGS);
613 EXPECT_EQ(1u, app_sync_data.size()); 614 EXPECT_EQ(1u, app_sync_data.size());
614 EXPECT_EQ(1u, app_sync_data["s2"].size()); 615 EXPECT_EQ(1u, app_sync_data["s2"].size());
615 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &app_sync_data["s2"][0].value()); 616 EXPECT_PRED_FORMAT2(ValuesEq, &value2, &app_sync_data["s2"][0].value());
616 617
617 // Stop each separately, there should be no changes either time. 618 // Stop each separately, there should be no changes either time.
618 SyncDataList sync_data; 619 SyncDataList sync_data;
619 sync_data.push_back(settings_sync_util::CreateData( 620 sync_data.push_back(settings_sync_util::CreateData(
620 "s1", "foo", value1)); 621 "s1", "foo", value1, syncable::EXTENSION_SETTINGS));
621 622
622 GetSyncableService(syncable::EXTENSION_SETTINGS)-> 623 GetSyncableService(syncable::EXTENSION_SETTINGS)->
623 MergeDataAndStartSyncing(syncable::EXTENSION_SETTINGS, sync_data, &sync_); 624 MergeDataAndStartSyncing(syncable::EXTENSION_SETTINGS, sync_data, &sync_);
624 GetSyncableService(syncable::EXTENSION_SETTINGS)-> 625 GetSyncableService(syncable::EXTENSION_SETTINGS)->
625 StopSyncing(syncable::EXTENSION_SETTINGS); 626 StopSyncing(syncable::EXTENSION_SETTINGS);
626 EXPECT_EQ(0u, sync_.changes().size()); 627 EXPECT_EQ(0u, sync_.changes().size());
627 628
628 sync_data.clear(); 629 sync_data.clear();
629 sync_data.push_back(settings_sync_util::CreateData( 630 sync_data.push_back(settings_sync_util::CreateData(
630 "s2", "bar", value2)); 631 "s2", "bar", value2, syncable::APP_SETTINGS));
631 632
632 GetSyncableService(syncable::APP_SETTINGS)-> 633 GetSyncableService(syncable::APP_SETTINGS)->
633 MergeDataAndStartSyncing(syncable::APP_SETTINGS, sync_data, &sync_); 634 MergeDataAndStartSyncing(syncable::APP_SETTINGS, sync_data, &sync_);
634 GetSyncableService(syncable::APP_SETTINGS)-> 635 GetSyncableService(syncable::APP_SETTINGS)->
635 StopSyncing(syncable::APP_SETTINGS); 636 StopSyncing(syncable::APP_SETTINGS);
636 EXPECT_EQ(0u, sync_.changes().size()); 637 EXPECT_EQ(0u, sync_.changes().size());
637 } 638 }
638 639
639 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) { 640 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) {
640 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; 641 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS;
641 Extension::Type type = Extension::TYPE_EXTENSION; 642 Extension::Type type = Extension::TYPE_EXTENSION;
642 643
643 StringValue fooValue("fooValue"); 644 StringValue fooValue("fooValue");
644 StringValue barValue("barValue"); 645 StringValue barValue("barValue");
645 646
646 // There is a bit of a convoluted method to get storage areas that can fail; 647 // There is a bit of a convoluted method to get storage areas that can fail;
647 // hand out TestingSettingsStorage object then toggle them failing/succeeding 648 // hand out TestingSettingsStorage object then toggle them failing/succeeding
648 // as necessary. 649 // as necessary.
649 TestingSettingsStorageFactory* testing_factory = 650 TestingSettingsStorageFactory* testing_factory =
650 new TestingSettingsStorageFactory(); 651 new TestingSettingsStorageFactory();
651 storage_factory_->Reset(testing_factory); 652 storage_factory_->Reset(testing_factory);
652 653
653 SettingsStorage* good = AddExtensionAndGetStorage("good", type); 654 SettingsStorage* good = AddExtensionAndGetStorage("good", type);
654 SettingsStorage* bad = AddExtensionAndGetStorage("bad", type); 655 SettingsStorage* bad = AddExtensionAndGetStorage("bad", type);
655 656
656 // Make bad fail for incoming sync changes. 657 // Make bad fail for incoming sync changes.
657 testing_factory->GetExisting("bad")->SetFailAllRequests(true); 658 testing_factory->GetExisting("bad")->SetFailAllRequests(true);
658 { 659 {
659 SyncDataList sync_data; 660 SyncDataList sync_data;
660 sync_data.push_back( 661 sync_data.push_back(settings_sync_util::CreateData(
661 settings_sync_util::CreateData("good", "foo", fooValue)); 662 "good", "foo", fooValue, model_type));
662 sync_data.push_back( 663 sync_data.push_back(settings_sync_util::CreateData(
663 settings_sync_util::CreateData("bad", "foo", fooValue)); 664 "bad", "foo", fooValue, model_type));
664 GetSyncableService(model_type)->MergeDataAndStartSyncing( 665 GetSyncableService(model_type)->MergeDataAndStartSyncing(
665 model_type, sync_data, &sync_); 666 model_type, sync_data, &sync_);
666 } 667 }
667 testing_factory->GetExisting("bad")->SetFailAllRequests(false); 668 testing_factory->GetExisting("bad")->SetFailAllRequests(false);
668 669
669 { 670 {
670 DictionaryValue dict; 671 DictionaryValue dict;
671 dict.Set("foo", fooValue.DeepCopy()); 672 dict.Set("foo", fooValue.DeepCopy());
672 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 673 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
673 } 674 }
(...skipping 21 matching lines...) Expand all
695 { 696 {
696 DictionaryValue dict; 697 DictionaryValue dict;
697 dict.Set("bar", barValue.DeepCopy()); 698 dict.Set("bar", barValue.DeepCopy());
698 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); 699 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get());
699 } 700 }
700 701
701 // Changes received from sync should go to good but not bad (even when it's 702 // Changes received from sync should go to good but not bad (even when it's
702 // not failing). 703 // not failing).
703 { 704 {
704 SyncChangeList change_list; 705 SyncChangeList change_list;
705 change_list.push_back( 706 change_list.push_back(settings_sync_util::CreateUpdate(
706 settings_sync_util::CreateUpdate("good", "foo", barValue)); 707 "good", "foo", barValue, model_type));
707 // (Sending UPDATE here even though it's adding, since that's what the state 708 // (Sending UPDATE here even though it's adding, since that's what the state
708 // of sync is. In any case, it won't work.) 709 // of sync is. In any case, it won't work.)
709 change_list.push_back( 710 change_list.push_back(settings_sync_util::CreateUpdate(
710 settings_sync_util::CreateUpdate("bad", "foo", barValue)); 711 "bad", "foo", barValue, model_type));
711 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 712 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
712 } 713 }
713 714
714 { 715 {
715 DictionaryValue dict; 716 DictionaryValue dict;
716 dict.Set("foo", barValue.DeepCopy()); 717 dict.Set("foo", barValue.DeepCopy());
717 dict.Set("bar", barValue.DeepCopy()); 718 dict.Set("bar", barValue.DeepCopy());
718 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 719 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
719 } 720 }
720 { 721 {
(...skipping 22 matching lines...) Expand all
743 { 744 {
744 DictionaryValue dict; 745 DictionaryValue dict;
745 dict.Set("bar", fooValue.DeepCopy()); 746 dict.Set("bar", fooValue.DeepCopy());
746 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); 747 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get());
747 } 748 }
748 749
749 // Failing ProcessSyncChanges shouldn't go to the storage. 750 // Failing ProcessSyncChanges shouldn't go to the storage.
750 testing_factory->GetExisting("bad")->SetFailAllRequests(true); 751 testing_factory->GetExisting("bad")->SetFailAllRequests(true);
751 { 752 {
752 SyncChangeList change_list; 753 SyncChangeList change_list;
753 change_list.push_back( 754 change_list.push_back(settings_sync_util::CreateUpdate(
754 settings_sync_util::CreateUpdate("good", "foo", fooValue)); 755 "good", "foo", fooValue, model_type));
755 // (Ditto.) 756 // (Ditto.)
756 change_list.push_back( 757 change_list.push_back(settings_sync_util::CreateUpdate(
757 settings_sync_util::CreateUpdate("bad", "foo", fooValue)); 758 "bad", "foo", fooValue, model_type));
758 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 759 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
759 } 760 }
760 testing_factory->GetExisting("bad")->SetFailAllRequests(false); 761 testing_factory->GetExisting("bad")->SetFailAllRequests(false);
761 762
762 { 763 {
763 DictionaryValue dict; 764 DictionaryValue dict;
764 dict.Set("foo", fooValue.DeepCopy()); 765 dict.Set("foo", fooValue.DeepCopy());
765 dict.Set("bar", fooValue.DeepCopy()); 766 dict.Set("bar", fooValue.DeepCopy());
766 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 767 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
767 } 768 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 SyncChange::ACTION_UPDATE, 800 SyncChange::ACTION_UPDATE,
800 sync_.GetOnlyChange("good", "bar").change_type()); 801 sync_.GetOnlyChange("good", "bar").change_type());
801 EXPECT_EQ( 802 EXPECT_EQ(
802 SyncChange::ACTION_UPDATE, 803 SyncChange::ACTION_UPDATE,
803 sync_.GetOnlyChange("bad", "bar").change_type()); 804 sync_.GetOnlyChange("bad", "bar").change_type());
804 EXPECT_EQ(2u, sync_.changes().size()); 805 EXPECT_EQ(2u, sync_.changes().size());
805 806
806 // And ProcessSyncChanges work, too. 807 // And ProcessSyncChanges work, too.
807 { 808 {
808 SyncChangeList change_list; 809 SyncChangeList change_list;
809 change_list.push_back( 810 change_list.push_back(settings_sync_util::CreateUpdate(
810 settings_sync_util::CreateUpdate("good", "bar", fooValue)); 811 "good", "bar", fooValue, model_type));
811 change_list.push_back( 812 change_list.push_back(settings_sync_util::CreateUpdate(
812 settings_sync_util::CreateUpdate("bad", "bar", fooValue)); 813 "bad", "bar", fooValue, model_type));
813 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 814 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
814 } 815 }
815 816
816 { 817 {
817 DictionaryValue dict; 818 DictionaryValue dict;
818 dict.Set("foo", fooValue.DeepCopy()); 819 dict.Set("foo", fooValue.DeepCopy());
819 dict.Set("bar", fooValue.DeepCopy()); 820 dict.Set("bar", fooValue.DeepCopy());
820 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 821 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
821 } 822 }
822 { 823 {
(...skipping 15 matching lines...) Expand all
838 TestingSettingsStorageFactory* testing_factory = 839 TestingSettingsStorageFactory* testing_factory =
839 new TestingSettingsStorageFactory(); 840 new TestingSettingsStorageFactory();
840 storage_factory_->Reset(testing_factory); 841 storage_factory_->Reset(testing_factory);
841 842
842 SettingsStorage* good = AddExtensionAndGetStorage("good", type); 843 SettingsStorage* good = AddExtensionAndGetStorage("good", type);
843 SettingsStorage* bad = AddExtensionAndGetStorage("bad", type); 844 SettingsStorage* bad = AddExtensionAndGetStorage("bad", type);
844 845
845 // Unlike before, initially succeeding MergeDataAndStartSyncing. 846 // Unlike before, initially succeeding MergeDataAndStartSyncing.
846 { 847 {
847 SyncDataList sync_data; 848 SyncDataList sync_data;
848 sync_data.push_back( 849 sync_data.push_back(settings_sync_util::CreateData(
849 settings_sync_util::CreateData("good", "foo", fooValue)); 850 "good", "foo", fooValue, model_type));
850 sync_data.push_back( 851 sync_data.push_back(settings_sync_util::CreateData(
851 settings_sync_util::CreateData("bad", "foo", fooValue)); 852 "bad", "foo", fooValue, model_type));
852 GetSyncableService(model_type)->MergeDataAndStartSyncing( 853 GetSyncableService(model_type)->MergeDataAndStartSyncing(
853 model_type, sync_data, &sync_); 854 model_type, sync_data, &sync_);
854 } 855 }
855 856
856 EXPECT_EQ(0u, sync_.changes().size()); 857 EXPECT_EQ(0u, sync_.changes().size());
857 858
858 { 859 {
859 DictionaryValue dict; 860 DictionaryValue dict;
860 dict.Set("foo", fooValue.DeepCopy()); 861 dict.Set("foo", fooValue.DeepCopy());
861 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 862 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
862 } 863 }
863 { 864 {
864 DictionaryValue dict; 865 DictionaryValue dict;
865 dict.Set("foo", fooValue.DeepCopy()); 866 dict.Set("foo", fooValue.DeepCopy());
866 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); 867 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get());
867 } 868 }
868 869
869 // Now fail ProcessSyncChanges for bad. 870 // Now fail ProcessSyncChanges for bad.
870 testing_factory->GetExisting("bad")->SetFailAllRequests(true); 871 testing_factory->GetExisting("bad")->SetFailAllRequests(true);
871 { 872 {
872 SyncChangeList change_list; 873 SyncChangeList change_list;
873 change_list.push_back( 874 change_list.push_back(settings_sync_util::CreateAdd(
874 settings_sync_util::CreateAdd("good", "bar", barValue)); 875 "good", "bar", barValue, model_type));
875 change_list.push_back( 876 change_list.push_back(settings_sync_util::CreateAdd(
876 settings_sync_util::CreateAdd("bad", "bar", barValue)); 877 "bad", "bar", barValue, model_type));
877 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 878 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
878 } 879 }
879 testing_factory->GetExisting("bad")->SetFailAllRequests(false); 880 testing_factory->GetExisting("bad")->SetFailAllRequests(false);
880 881
881 { 882 {
882 DictionaryValue dict; 883 DictionaryValue dict;
883 dict.Set("foo", fooValue.DeepCopy()); 884 dict.Set("foo", fooValue.DeepCopy());
884 dict.Set("bar", barValue.DeepCopy()); 885 dict.Set("bar", barValue.DeepCopy());
885 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 886 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
886 } 887 }
887 { 888 {
888 DictionaryValue dict; 889 DictionaryValue dict;
889 dict.Set("foo", fooValue.DeepCopy()); 890 dict.Set("foo", fooValue.DeepCopy());
890 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); 891 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get());
891 } 892 }
892 893
893 // No more changes sent to sync for bad. 894 // No more changes sent to sync for bad.
894 sync_.ClearChanges(); 895 sync_.ClearChanges();
895 good->Set(DEFAULTS, "foo", barValue); 896 good->Set(DEFAULTS, "foo", barValue);
896 bad->Set(DEFAULTS, "foo", barValue); 897 bad->Set(DEFAULTS, "foo", barValue);
897 898
898 EXPECT_EQ( 899 EXPECT_EQ(
899 SyncChange::ACTION_UPDATE, 900 SyncChange::ACTION_UPDATE,
900 sync_.GetOnlyChange("good", "foo").change_type()); 901 sync_.GetOnlyChange("good", "foo").change_type());
901 EXPECT_EQ(1u, sync_.changes().size()); 902 EXPECT_EQ(1u, sync_.changes().size());
902 903
903 // No more changes received from sync should go to bad. 904 // No more changes received from sync should go to bad.
904 { 905 {
905 SyncChangeList change_list; 906 SyncChangeList change_list;
906 change_list.push_back( 907 change_list.push_back(settings_sync_util::CreateAdd(
907 settings_sync_util::CreateAdd("good", "foo", fooValue)); 908 "good", "foo", fooValue, model_type));
908 change_list.push_back( 909 change_list.push_back(settings_sync_util::CreateAdd(
909 settings_sync_util::CreateAdd("bad", "foo", fooValue)); 910 "bad", "foo", fooValue, model_type));
910 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 911 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
911 } 912 }
912 913
913 { 914 {
914 DictionaryValue dict; 915 DictionaryValue dict;
915 dict.Set("foo", fooValue.DeepCopy()); 916 dict.Set("foo", fooValue.DeepCopy());
916 dict.Set("bar", barValue.DeepCopy()); 917 dict.Set("bar", barValue.DeepCopy());
917 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 918 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
918 } 919 }
919 { 920 {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 good->Set(DEFAULTS, "bar", barValue); 1011 good->Set(DEFAULTS, "bar", barValue);
1011 bad->Set(DEFAULTS, "bar", barValue); 1012 bad->Set(DEFAULTS, "bar", barValue);
1012 1013
1013 EXPECT_EQ( 1014 EXPECT_EQ(
1014 SyncChange::ACTION_ADD, 1015 SyncChange::ACTION_ADD,
1015 sync_.GetOnlyChange("good", "bar").change_type()); 1016 sync_.GetOnlyChange("good", "bar").change_type());
1016 EXPECT_EQ(1u, sync_.changes().size()); 1017 EXPECT_EQ(1u, sync_.changes().size());
1017 1018
1018 { 1019 {
1019 SyncChangeList change_list; 1020 SyncChangeList change_list;
1020 change_list.push_back( 1021 change_list.push_back(settings_sync_util::CreateUpdate(
1021 settings_sync_util::CreateUpdate("good", "foo", barValue)); 1022 "good", "foo", barValue, model_type));
1022 // (Sending ADD here even though it's updating, since that's what the state 1023 // (Sending ADD here even though it's updating, since that's what the state
1023 // of sync is. In any case, it won't work.) 1024 // of sync is. In any case, it won't work.)
1024 change_list.push_back( 1025 change_list.push_back(settings_sync_util::CreateAdd(
1025 settings_sync_util::CreateAdd("bad", "foo", barValue)); 1026 "bad", "foo", barValue, model_type));
1026 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 1027 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
1027 } 1028 }
1028 1029
1029 { 1030 {
1030 DictionaryValue dict; 1031 DictionaryValue dict;
1031 dict.Set("foo", barValue.DeepCopy()); 1032 dict.Set("foo", barValue.DeepCopy());
1032 dict.Set("bar", barValue.DeepCopy()); 1033 dict.Set("bar", barValue.DeepCopy());
1033 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 1034 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
1034 } 1035 }
1035 { 1036 {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 bad->Set(DEFAULTS, "foo", barValue); 1102 bad->Set(DEFAULTS, "foo", barValue);
1102 1103
1103 EXPECT_EQ( 1104 EXPECT_EQ(
1104 SyncChange::ACTION_ADD, 1105 SyncChange::ACTION_ADD,
1105 sync_.GetOnlyChange("good", "foo").change_type()); 1106 sync_.GetOnlyChange("good", "foo").change_type());
1106 EXPECT_EQ(1u, sync_.changes().size()); 1107 EXPECT_EQ(1u, sync_.changes().size());
1107 1108
1108 // Changes from sync will be sent to good, not to bad. 1109 // Changes from sync will be sent to good, not to bad.
1109 { 1110 {
1110 SyncChangeList change_list; 1111 SyncChangeList change_list;
1111 change_list.push_back( 1112 change_list.push_back(settings_sync_util::CreateAdd(
1112 settings_sync_util::CreateAdd("good", "bar", barValue)); 1113 "good", "bar", barValue, model_type));
1113 change_list.push_back( 1114 change_list.push_back(settings_sync_util::CreateAdd(
1114 settings_sync_util::CreateAdd("bad", "bar", barValue)); 1115 "bad", "bar", barValue, model_type));
1115 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 1116 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
1116 } 1117 }
1117 1118
1118 { 1119 {
1119 DictionaryValue dict; 1120 DictionaryValue dict;
1120 dict.Set("foo", barValue.DeepCopy()); 1121 dict.Set("foo", barValue.DeepCopy());
1121 dict.Set("bar", barValue.DeepCopy()); 1122 dict.Set("bar", barValue.DeepCopy());
1122 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 1123 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
1123 } 1124 }
1124 { 1125 {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 bad->Set(DEFAULTS, "foo", barValue); 1192 bad->Set(DEFAULTS, "foo", barValue);
1192 1193
1193 EXPECT_EQ( 1194 EXPECT_EQ(
1194 SyncChange::ACTION_UPDATE, 1195 SyncChange::ACTION_UPDATE,
1195 sync_.GetOnlyChange("good", "foo").change_type()); 1196 sync_.GetOnlyChange("good", "foo").change_type());
1196 EXPECT_EQ(1u, sync_.changes().size()); 1197 EXPECT_EQ(1u, sync_.changes().size());
1197 1198
1198 // Changes from sync will be sent to good, not to bad. 1199 // Changes from sync will be sent to good, not to bad.
1199 { 1200 {
1200 SyncChangeList change_list; 1201 SyncChangeList change_list;
1201 change_list.push_back( 1202 change_list.push_back(settings_sync_util::CreateAdd(
1202 settings_sync_util::CreateAdd("good", "bar", barValue)); 1203 "good", "bar", barValue, model_type));
1203 change_list.push_back( 1204 change_list.push_back(settings_sync_util::CreateAdd(
1204 settings_sync_util::CreateAdd("bad", "bar", barValue)); 1205 "bad", "bar", barValue, model_type));
1205 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 1206 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
1206 } 1207 }
1207 1208
1208 { 1209 {
1209 DictionaryValue dict; 1210 DictionaryValue dict;
1210 dict.Set("foo", barValue.DeepCopy()); 1211 dict.Set("foo", barValue.DeepCopy());
1211 dict.Set("bar", barValue.DeepCopy()); 1212 dict.Set("bar", barValue.DeepCopy());
1212 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get()); 1213 EXPECT_PRED_FORMAT2(SettingsEq, dict, good->Get());
1213 } 1214 }
1214 { 1215 {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 1265
1265 // Large local change rejected and doesn't get sent out. 1266 // Large local change rejected and doesn't get sent out.
1266 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type); 1267 SettingsStorage* storage1 = AddExtensionAndGetStorage("s1", type);
1267 EXPECT_TRUE(storage1->Set(DEFAULTS, "large_value", large_value).HasError()); 1268 EXPECT_TRUE(storage1->Set(DEFAULTS, "large_value", large_value).HasError());
1268 EXPECT_EQ(0u, sync_.changes().size()); 1269 EXPECT_EQ(0u, sync_.changes().size());
1269 1270
1270 // Large incoming change should still get accepted. 1271 // Large incoming change should still get accepted.
1271 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type); 1272 SettingsStorage* storage2 = AddExtensionAndGetStorage("s2", type);
1272 { 1273 {
1273 SyncChangeList change_list; 1274 SyncChangeList change_list;
1274 change_list.push_back( 1275 change_list.push_back(settings_sync_util::CreateAdd(
1275 settings_sync_util::CreateAdd("s1", "large_value", large_value)); 1276 "s1", "large_value", large_value, model_type));
1276 change_list.push_back( 1277 change_list.push_back(settings_sync_util::CreateAdd(
1277 settings_sync_util::CreateAdd("s2", "large_value", large_value)); 1278 "s2", "large_value", large_value, model_type));
1278 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list); 1279 GetSyncableService(model_type)->ProcessSyncChanges(FROM_HERE, change_list);
1279 } 1280 }
1280 { 1281 {
1281 DictionaryValue expected; 1282 DictionaryValue expected;
1282 expected.Set("large_value", large_value.DeepCopy()); 1283 expected.Set("large_value", large_value.DeepCopy());
1283 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get()); 1284 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get());
1284 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get()); 1285 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get());
1285 } 1286 }
1286 1287
1287 GetSyncableService(model_type)->StopSyncing(model_type); 1288 GetSyncableService(model_type)->StopSyncing(model_type);
1288 } 1289 }
1289 1290
1290 } // namespace extensions 1291 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698