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

Side by Side Diff: components/sync/device_info/device_info_sync_bridge_unittest.cc

Issue 2618483003: [Sync] Introduce ModelError for USS error handling. (Closed)
Patch Set: Address comments. Created 3 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/sync/device_info/device_info_sync_bridge.h" 5 #include "components/sync/device_info/device_info_sync_bridge.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 EXPECT_EQ(specifics.cache_guid(), model.guid()); 108 EXPECT_EQ(specifics.cache_guid(), model.guid());
109 EXPECT_EQ(specifics.client_name(), model.client_name()); 109 EXPECT_EQ(specifics.client_name(), model.client_name());
110 EXPECT_EQ(specifics.device_type(), model.device_type()); 110 EXPECT_EQ(specifics.device_type(), model.device_type());
111 EXPECT_EQ(specifics.sync_user_agent(), model.sync_user_agent()); 111 EXPECT_EQ(specifics.sync_user_agent(), model.sync_user_agent());
112 EXPECT_EQ(specifics.chrome_version(), model.chrome_version()); 112 EXPECT_EQ(specifics.chrome_version(), model.chrome_version());
113 EXPECT_EQ(specifics.signin_scoped_device_id(), 113 EXPECT_EQ(specifics.signin_scoped_device_id(),
114 model.signin_scoped_device_id()); 114 model.signin_scoped_device_id());
115 } 115 }
116 116
117 void VerifyDataBatch(std::map<std::string, DeviceInfoSpecifics> expected, 117 void VerifyDataBatch(std::map<std::string, DeviceInfoSpecifics> expected,
118 SyncError error,
119 std::unique_ptr<DataBatch> batch) { 118 std::unique_ptr<DataBatch> batch) {
120 EXPECT_FALSE(error.IsSet());
121 while (batch->HasNext()) { 119 while (batch->HasNext()) {
122 const KeyAndData& pair = batch->Next(); 120 const KeyAndData& pair = batch->Next();
123 auto iter = expected.find(pair.first); 121 auto iter = expected.find(pair.first);
124 ASSERT_NE(iter, expected.end()); 122 ASSERT_NE(iter, expected.end());
125 VerifyEqual(iter->second, pair.second->specifics.device_info()); 123 VerifyEqual(iter->second, pair.second->specifics.device_info());
126 // Removing allows us to verify we don't see the same item multiple times, 124 // Removing allows us to verify we don't see the same item multiple times,
127 // and that we saw everything we expected. 125 // and that we saw everything we expected.
128 expected.erase(iter); 126 expected.erase(iter);
129 } 127 }
130 EXPECT_TRUE(expected.empty()); 128 EXPECT_TRUE(expected.empty());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 std::unique_ptr<EntityData> entity_data, 183 std::unique_ptr<EntityData> entity_data,
186 MetadataChangeList* metadata_changes) override { 184 MetadataChangeList* metadata_changes) override {
187 put_multimap_.insert(std::make_pair(storage_key, std::move(entity_data))); 185 put_multimap_.insert(std::make_pair(storage_key, std::move(entity_data)));
188 } 186 }
189 187
190 void Delete(const std::string& storage_key, 188 void Delete(const std::string& storage_key,
191 MetadataChangeList* metadata_changes) override { 189 MetadataChangeList* metadata_changes) override {
192 delete_set_.insert(storage_key); 190 delete_set_.insert(storage_key);
193 } 191 }
194 192
195 void OnMetadataLoaded(SyncError error, 193 void OnMetadataLoaded(std::unique_ptr<MetadataBatch> batch) override {
196 std::unique_ptr<MetadataBatch> batch) override {
197 std::swap(metadata_, batch); 194 std::swap(metadata_, batch);
198 } 195 }
199 196
200 const std::multimap<std::string, std::unique_ptr<EntityData>>& put_multimap() 197 const std::multimap<std::string, std::unique_ptr<EntityData>>& put_multimap()
201 const { 198 const {
202 return put_multimap_; 199 return put_multimap_;
203 } 200 }
204 const std::set<std::string>& delete_set() const { return delete_set_; } 201 const std::set<std::string>& delete_set() const { return delete_set_; }
205 const MetadataBatch* metadata() const { return metadata_.get(); } 202 const MetadataBatch* metadata() const { return metadata_.get(); }
206 203
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 const std::map<std::string, DeviceInfoSpecifics> expected{ 491 const std::map<std::string, DeviceInfoSpecifics> expected{
495 {specifics1.cache_guid(), specifics1}, 492 {specifics1.cache_guid(), specifics1},
496 {specifics2.cache_guid(), specifics2}}; 493 {specifics2.cache_guid(), specifics2}};
497 bridge()->GetData({specifics1.cache_guid(), specifics2.cache_guid()}, 494 bridge()->GetData({specifics1.cache_guid(), specifics2.cache_guid()},
498 base::Bind(&VerifyDataBatch, expected)); 495 base::Bind(&VerifyDataBatch, expected));
499 } 496 }
500 497
501 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesEmpty) { 498 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesEmpty) {
502 InitializeAndPump(); 499 InitializeAndPump();
503 EXPECT_EQ(1, change_count()); 500 EXPECT_EQ(1, change_count());
504 const SyncError error = bridge()->ApplySyncChanges( 501 const ModelError error = bridge()->ApplySyncChanges(
505 bridge()->CreateMetadataChangeList(), EntityChangeList()); 502 bridge()->CreateMetadataChangeList(), EntityChangeList());
506 EXPECT_FALSE(error.IsSet()); 503 EXPECT_FALSE(error.IsSet());
507 EXPECT_EQ(1, change_count()); 504 EXPECT_EQ(1, change_count());
508 } 505 }
509 506
510 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesInMemory) { 507 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesInMemory) {
511 InitializeAndPump(); 508 InitializeAndPump();
512 EXPECT_EQ(1, change_count()); 509 EXPECT_EQ(1, change_count());
513 510
514 const DeviceInfoSpecifics specifics = CreateSpecifics(1); 511 const DeviceInfoSpecifics specifics = CreateSpecifics(1);
515 const SyncError error_on_add = bridge()->ApplySyncChanges( 512 const ModelError error_on_add = bridge()->ApplySyncChanges(
516 bridge()->CreateMetadataChangeList(), EntityAddList({specifics})); 513 bridge()->CreateMetadataChangeList(), EntityAddList({specifics}));
517 514
518 EXPECT_FALSE(error_on_add.IsSet()); 515 EXPECT_FALSE(error_on_add.IsSet());
519 std::unique_ptr<DeviceInfo> info = 516 std::unique_ptr<DeviceInfo> info =
520 bridge()->GetDeviceInfo(specifics.cache_guid()); 517 bridge()->GetDeviceInfo(specifics.cache_guid());
521 ASSERT_TRUE(info); 518 ASSERT_TRUE(info);
522 VerifyEqual(specifics, *info.get()); 519 VerifyEqual(specifics, *info.get());
523 EXPECT_EQ(2, change_count()); 520 EXPECT_EQ(2, change_count());
524 521
525 const SyncError error_on_delete = bridge()->ApplySyncChanges( 522 const ModelError error_on_delete = bridge()->ApplySyncChanges(
526 bridge()->CreateMetadataChangeList(), 523 bridge()->CreateMetadataChangeList(),
527 {EntityChange::CreateDelete(specifics.cache_guid())}); 524 {EntityChange::CreateDelete(specifics.cache_guid())});
528 525
529 EXPECT_FALSE(error_on_delete.IsSet()); 526 EXPECT_FALSE(error_on_delete.IsSet());
530 EXPECT_FALSE(bridge()->GetDeviceInfo(specifics.cache_guid())); 527 EXPECT_FALSE(bridge()->GetDeviceInfo(specifics.cache_guid()));
531 EXPECT_EQ(3, change_count()); 528 EXPECT_EQ(3, change_count());
532 } 529 }
533 530
534 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesStore) { 531 TEST_F(DeviceInfoSyncBridgeTest, ApplySyncChangesStore) {
535 InitializeAndPump(); 532 InitializeAndPump();
536 EXPECT_EQ(1, change_count()); 533 EXPECT_EQ(1, change_count());
537 534
538 const DeviceInfoSpecifics specifics = CreateSpecifics(1); 535 const DeviceInfoSpecifics specifics = CreateSpecifics(1);
539 ModelTypeState state = StateWithEncryption("ekn"); 536 ModelTypeState state = StateWithEncryption("ekn");
540 std::unique_ptr<MetadataChangeList> metadata_changes = 537 std::unique_ptr<MetadataChangeList> metadata_changes =
541 bridge()->CreateMetadataChangeList(); 538 bridge()->CreateMetadataChangeList();
542 metadata_changes->UpdateModelTypeState(state); 539 metadata_changes->UpdateModelTypeState(state);
543 540
544 const SyncError error = bridge()->ApplySyncChanges( 541 const ModelError error = bridge()->ApplySyncChanges(
545 std::move(metadata_changes), EntityAddList({specifics})); 542 std::move(metadata_changes), EntityAddList({specifics}));
546 EXPECT_FALSE(error.IsSet()); 543 EXPECT_FALSE(error.IsSet());
547 EXPECT_EQ(2, change_count()); 544 EXPECT_EQ(2, change_count());
548 545
549 RestartBridge(); 546 RestartBridge();
550 547
551 std::unique_ptr<DeviceInfo> info = 548 std::unique_ptr<DeviceInfo> info =
552 bridge()->GetDeviceInfo(specifics.cache_guid()); 549 bridge()->GetDeviceInfo(specifics.cache_guid());
553 ASSERT_TRUE(info); 550 ASSERT_TRUE(info);
554 VerifyEqual(specifics, *info.get()); 551 VerifyEqual(specifics, *info.get());
(...skipping 16 matching lines...) Expand all
571 EXPECT_EQ(1, change_count()); 568 EXPECT_EQ(1, change_count());
572 // Ensure |last_updated| is about now, plus or minus a little bit. 569 // Ensure |last_updated| is about now, plus or minus a little bit.
573 const Time last_updated(ProtoTimeToTime(processor() 570 const Time last_updated(ProtoTimeToTime(processor()
574 ->put_multimap() 571 ->put_multimap()
575 .begin() 572 .begin()
576 ->second->specifics.device_info() 573 ->second->specifics.device_info()
577 .last_updated_timestamp())); 574 .last_updated_timestamp()));
578 EXPECT_LT(Time::Now() - TimeDelta::FromMinutes(1), last_updated); 575 EXPECT_LT(Time::Now() - TimeDelta::FromMinutes(1), last_updated);
579 EXPECT_GT(Time::Now() + TimeDelta::FromMinutes(1), last_updated); 576 EXPECT_GT(Time::Now() + TimeDelta::FromMinutes(1), last_updated);
580 577
581 const SyncError error_on_add = bridge()->ApplySyncChanges( 578 const ModelError error_on_add = bridge()->ApplySyncChanges(
582 bridge()->CreateMetadataChangeList(), EntityAddList({specifics})); 579 bridge()->CreateMetadataChangeList(), EntityAddList({specifics}));
583 EXPECT_FALSE(error_on_add.IsSet()); 580 EXPECT_FALSE(error_on_add.IsSet());
584 EXPECT_EQ(1, change_count()); 581 EXPECT_EQ(1, change_count());
585 582
586 const SyncError error_on_delete = bridge()->ApplySyncChanges( 583 const ModelError error_on_delete = bridge()->ApplySyncChanges(
587 bridge()->CreateMetadataChangeList(), 584 bridge()->CreateMetadataChangeList(),
588 {EntityChange::CreateDelete(specifics.cache_guid())}); 585 {EntityChange::CreateDelete(specifics.cache_guid())});
589 EXPECT_FALSE(error_on_delete.IsSet()); 586 EXPECT_FALSE(error_on_delete.IsSet());
590 EXPECT_EQ(1, change_count()); 587 EXPECT_EQ(1, change_count());
591 } 588 }
592 589
593 TEST_F(DeviceInfoSyncBridgeTest, ApplyDeleteNonexistent) { 590 TEST_F(DeviceInfoSyncBridgeTest, ApplyDeleteNonexistent) {
594 InitializeAndPump(); 591 InitializeAndPump();
595 EXPECT_EQ(1, change_count()); 592 EXPECT_EQ(1, change_count());
596 const SyncError error = 593 const ModelError error =
597 bridge()->ApplySyncChanges(bridge()->CreateMetadataChangeList(), 594 bridge()->ApplySyncChanges(bridge()->CreateMetadataChangeList(),
598 {EntityChange::CreateDelete("guid")}); 595 {EntityChange::CreateDelete("guid")});
599 EXPECT_FALSE(error.IsSet()); 596 EXPECT_FALSE(error.IsSet());
600 EXPECT_EQ(1, change_count()); 597 EXPECT_EQ(1, change_count());
601 } 598 }
602 599
603 TEST_F(DeviceInfoSyncBridgeTest, ClearProviderAndApply) { 600 TEST_F(DeviceInfoSyncBridgeTest, ClearProviderAndApply) {
604 // This will initialize the provider a first time. 601 // This will initialize the provider a first time.
605 InitializeAndPump(); 602 InitializeAndPump();
606 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 603 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
607 604
608 const DeviceInfoSpecifics specifics = CreateSpecifics(1, Time::Now()); 605 const DeviceInfoSpecifics specifics = CreateSpecifics(1, Time::Now());
609 606
610 local_device()->Clear(); 607 local_device()->Clear();
611 SyncError error = bridge()->ApplySyncChanges( 608 ModelError error = bridge()->ApplySyncChanges(
612 bridge()->CreateMetadataChangeList(), EntityAddList({specifics})); 609 bridge()->CreateMetadataChangeList(), EntityAddList({specifics}));
613 EXPECT_FALSE(error.IsSet()); 610 EXPECT_FALSE(error.IsSet());
614 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 611 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
615 612
616 local_device()->Initialize(CreateModel(kDefaultLocalSuffix)); 613 local_device()->Initialize(CreateModel(kDefaultLocalSuffix));
617 error = bridge()->ApplySyncChanges(bridge()->CreateMetadataChangeList(), 614 error = bridge()->ApplySyncChanges(bridge()->CreateMetadataChangeList(),
618 EntityAddList({specifics})); 615 EntityAddList({specifics}));
619 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size()); 616 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size());
620 } 617 }
621 618
622 TEST_F(DeviceInfoSyncBridgeTest, MergeEmpty) { 619 TEST_F(DeviceInfoSyncBridgeTest, MergeEmpty) {
623 InitializeAndPump(); 620 InitializeAndPump();
624 EXPECT_EQ(1, change_count()); 621 EXPECT_EQ(1, change_count());
625 const SyncError error = bridge()->MergeSyncData( 622 const ModelError error = bridge()->MergeSyncData(
626 bridge()->CreateMetadataChangeList(), EntityDataMap()); 623 bridge()->CreateMetadataChangeList(), EntityDataMap());
627 EXPECT_FALSE(error.IsSet()); 624 EXPECT_FALSE(error.IsSet());
628 EXPECT_EQ(1, change_count()); 625 EXPECT_EQ(1, change_count());
629 // TODO(skym): Stop sending local twice. The first of the two puts will 626 // TODO(skym): Stop sending local twice. The first of the two puts will
630 // probably happen before the processor is tracking metadata yet, and so there 627 // probably happen before the processor is tracking metadata yet, and so there
631 // should not be much overhead. 628 // should not be much overhead.
632 EXPECT_EQ(2u, processor()->put_multimap().size()); 629 EXPECT_EQ(2u, processor()->put_multimap().size());
633 EXPECT_EQ(2u, processor()->put_multimap().count( 630 EXPECT_EQ(2u, processor()->put_multimap().count(
634 local_device()->GetLocalDeviceInfo()->guid())); 631 local_device()->GetLocalDeviceInfo()->guid()));
635 EXPECT_EQ(0u, processor()->delete_set().size()); 632 EXPECT_EQ(0u, processor()->delete_set().size());
(...skipping 11 matching lines...) Expand all
647 644
648 WriteToStore({unique_local, conflict_local}); 645 WriteToStore({unique_local, conflict_local});
649 InitializeAndPump(); 646 InitializeAndPump();
650 EXPECT_EQ(1, change_count()); 647 EXPECT_EQ(1, change_count());
651 648
652 ModelTypeState state = StateWithEncryption("ekn"); 649 ModelTypeState state = StateWithEncryption("ekn");
653 std::unique_ptr<MetadataChangeList> metadata_changes = 650 std::unique_ptr<MetadataChangeList> metadata_changes =
654 bridge()->CreateMetadataChangeList(); 651 bridge()->CreateMetadataChangeList();
655 metadata_changes->UpdateModelTypeState(state); 652 metadata_changes->UpdateModelTypeState(state);
656 653
657 const SyncError error = bridge()->MergeSyncData( 654 const ModelError error = bridge()->MergeSyncData(
658 std::move(metadata_changes), 655 std::move(metadata_changes),
659 InlineEntityDataMap({conflict_remote, unique_remote})); 656 InlineEntityDataMap({conflict_remote, unique_remote}));
660 EXPECT_FALSE(error.IsSet()); 657 EXPECT_FALSE(error.IsSet());
661 EXPECT_EQ(2, change_count()); 658 EXPECT_EQ(2, change_count());
662 659
663 // The remote should beat the local in conflict. 660 // The remote should beat the local in conflict.
664 EXPECT_EQ(4u, bridge()->GetAllDeviceInfo().size()); 661 EXPECT_EQ(4u, bridge()->GetAllDeviceInfo().size());
665 VerifyEqual(unique_local, 662 VerifyEqual(unique_local,
666 *bridge()->GetDeviceInfo(unique_local.cache_guid()).get()); 663 *bridge()->GetDeviceInfo(unique_local.cache_guid()).get());
667 VerifyEqual(unique_remote, 664 VerifyEqual(unique_remote,
(...skipping 14 matching lines...) Expand all
682 } 679 }
683 680
684 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) { 681 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) {
685 // If not recent, then reconcile is going to try to send an updated version to 682 // If not recent, then reconcile is going to try to send an updated version to
686 // Sync, which makes interpreting change_count() more difficult. 683 // Sync, which makes interpreting change_count() more difficult.
687 const DeviceInfoSpecifics specifics = 684 const DeviceInfoSpecifics specifics =
688 CreateSpecifics(kDefaultLocalSuffix, Time::Now()); 685 CreateSpecifics(kDefaultLocalSuffix, Time::Now());
689 WriteToStore({specifics}); 686 WriteToStore({specifics});
690 InitializeAndPump(); 687 InitializeAndPump();
691 688
692 const SyncError error = bridge()->MergeSyncData( 689 const ModelError error = bridge()->MergeSyncData(
693 bridge()->CreateMetadataChangeList(), InlineEntityDataMap({specifics})); 690 bridge()->CreateMetadataChangeList(), InlineEntityDataMap({specifics}));
694 EXPECT_FALSE(error.IsSet()); 691 EXPECT_FALSE(error.IsSet());
695 EXPECT_EQ(0, change_count()); 692 EXPECT_EQ(0, change_count());
696 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 693 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
697 EXPECT_TRUE(processor()->delete_set().empty()); 694 EXPECT_TRUE(processor()->delete_set().empty());
698 EXPECT_TRUE(processor()->put_multimap().empty()); 695 EXPECT_TRUE(processor()->put_multimap().empty());
699 } 696 }
700 697
701 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuidBeforeReconcile) { 698 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuidBeforeReconcile) {
702 InitializeBridge(); 699 InitializeBridge();
703 700
704 // The message loop is never pumped, which means local data/metadata is never 701 // The message loop is never pumped, which means local data/metadata is never
705 // loaded, and thus reconcile is never called. The bridge should ignore this 702 // loaded, and thus reconcile is never called. The bridge should ignore this
706 // EntityData because its cache guid is the same the local device's. 703 // EntityData because its cache guid is the same the local device's.
707 const SyncError error = bridge()->MergeSyncData( 704 const ModelError error = bridge()->MergeSyncData(
708 bridge()->CreateMetadataChangeList(), 705 bridge()->CreateMetadataChangeList(),
709 InlineEntityDataMap({CreateSpecifics(kDefaultLocalSuffix)})); 706 InlineEntityDataMap({CreateSpecifics(kDefaultLocalSuffix)}));
710 EXPECT_FALSE(error.IsSet()); 707 EXPECT_FALSE(error.IsSet());
711 EXPECT_EQ(0, change_count()); 708 EXPECT_EQ(0, change_count());
712 EXPECT_EQ(0u, bridge()->GetAllDeviceInfo().size()); 709 EXPECT_EQ(0u, bridge()->GetAllDeviceInfo().size());
713 } 710 }
714 711
715 TEST_F(DeviceInfoSyncBridgeTest, ClearProviderAndMerge) { 712 TEST_F(DeviceInfoSyncBridgeTest, ClearProviderAndMerge) {
716 // This will initialize the provider a first time. 713 // This will initialize the provider a first time.
717 InitializeAndPump(); 714 InitializeAndPump();
718 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 715 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
719 716
720 const DeviceInfoSpecifics specifics = CreateSpecifics(1, Time::Now()); 717 const DeviceInfoSpecifics specifics = CreateSpecifics(1, Time::Now());
721 718
722 local_device()->Clear(); 719 local_device()->Clear();
723 SyncError error = bridge()->MergeSyncData( 720 ModelError error = bridge()->MergeSyncData(
724 bridge()->CreateMetadataChangeList(), InlineEntityDataMap({specifics})); 721 bridge()->CreateMetadataChangeList(), InlineEntityDataMap({specifics}));
725 EXPECT_FALSE(error.IsSet()); 722 EXPECT_FALSE(error.IsSet());
726 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 723 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
727 local_device()->Initialize(CreateModel(kDefaultLocalSuffix)); 724 local_device()->Initialize(CreateModel(kDefaultLocalSuffix));
728 error = bridge()->MergeSyncData(bridge()->CreateMetadataChangeList(), 725 error = bridge()->MergeSyncData(bridge()->CreateMetadataChangeList(),
729 InlineEntityDataMap({specifics})); 726 InlineEntityDataMap({specifics}));
730 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size()); 727 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size());
731 } 728 }
732 729
733 TEST_F(DeviceInfoSyncBridgeTest, CountActiveDevices) { 730 TEST_F(DeviceInfoSyncBridgeTest, CountActiveDevices) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 EXPECT_EQ(2, change_count()); 788 EXPECT_EQ(2, change_count());
792 EXPECT_EQ(2u, processor()->put_multimap().size()); 789 EXPECT_EQ(2u, processor()->put_multimap().size());
793 } 790 }
794 791
795 TEST_F(DeviceInfoSyncBridgeTest, DisableSync) { 792 TEST_F(DeviceInfoSyncBridgeTest, DisableSync) {
796 InitializeAndPump(); 793 InitializeAndPump();
797 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 794 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
798 EXPECT_EQ(1, change_count()); 795 EXPECT_EQ(1, change_count());
799 796
800 const DeviceInfoSpecifics specifics = CreateSpecifics(1); 797 const DeviceInfoSpecifics specifics = CreateSpecifics(1);
801 const SyncError error = bridge()->ApplySyncChanges( 798 const ModelError error = bridge()->ApplySyncChanges(
802 bridge()->CreateMetadataChangeList(), EntityAddList({specifics})); 799 bridge()->CreateMetadataChangeList(), EntityAddList({specifics}));
803 800
804 EXPECT_FALSE(error.IsSet()); 801 EXPECT_FALSE(error.IsSet());
805 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size()); 802 EXPECT_EQ(2u, bridge()->GetAllDeviceInfo().size());
806 EXPECT_EQ(2, change_count()); 803 EXPECT_EQ(2, change_count());
807 804
808 // Should clear out all local data and notify observers. 805 // Should clear out all local data and notify observers.
809 bridge()->DisableSync(); 806 bridge()->DisableSync();
810 EXPECT_EQ(0u, bridge()->GetAllDeviceInfo().size()); 807 EXPECT_EQ(0u, bridge()->GetAllDeviceInfo().size());
811 EXPECT_EQ(3, change_count()); 808 EXPECT_EQ(3, change_count());
812 809
813 // Reloading from storage shouldn't contain remote data. 810 // Reloading from storage shouldn't contain remote data.
814 RestartBridge(); 811 RestartBridge();
815 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 812 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
816 EXPECT_EQ(4, change_count()); 813 EXPECT_EQ(4, change_count());
817 } 814 }
818 815
819 } // namespace 816 } // namespace
820 817
821 } // namespace syncer 818 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/device_info/device_info_sync_bridge.cc ('k') | components/sync/model/fake_model_type_change_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698