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 "chrome/browser/sync/glue/sync_backend_host.h" | 5 #include "chrome/browser/sync/glue/sync_backend_host.h" |
6 | 6 |
7 #include <cstddef> | 7 #include <cstddef> |
8 | 8 |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 virtual void SetUp() OVERRIDE { | 144 virtual void SetUp() OVERRIDE { |
145 io_thread_.StartIOThread(); | 145 io_thread_.StartIOThread(); |
146 profile_.reset(new TestingProfile()); | 146 profile_.reset(new TestingProfile()); |
147 profile_->CreateRequestContext(); | 147 profile_->CreateRequestContext(); |
148 sync_prefs_.reset(new SyncPrefs(profile_->GetPrefs())); | 148 sync_prefs_.reset(new SyncPrefs(profile_->GetPrefs())); |
149 invalidator_storage_.reset(new InvalidatorStorage( | 149 invalidator_storage_.reset(new InvalidatorStorage( |
150 profile_->GetPrefs())); | 150 profile_->GetPrefs())); |
151 backend_.reset(new SyncBackendHost( | 151 backend_.reset(new SyncBackendHost( |
152 profile_->GetDebugName(), | 152 profile_->GetDebugName(), |
153 profile_.get(), | 153 profile_.get(), |
154 sync_prefs_->AsWeakPtr(), | 154 sync_prefs_->AsWeakPtr())); |
155 invalidator_storage_->AsWeakPtr())); | |
156 credentials_.email = "user@example.com"; | 155 credentials_.email = "user@example.com"; |
157 credentials_.sync_token = "sync_token"; | 156 credentials_.sync_token = "sync_token"; |
158 | 157 |
159 // These types are always implicitly enabled. | 158 // These types are always implicitly enabled. |
160 enabled_types_.PutAll(syncer::ControlTypes()); | 159 enabled_types_.PutAll(syncer::ControlTypes()); |
161 | 160 |
162 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend | 161 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend |
163 // Registrar removing them if it can't find their model workers. | 162 // Registrar removing them if it can't find their model workers. |
164 enabled_types_.Put(syncer::BOOKMARKS); | 163 enabled_types_.Put(syncer::BOOKMARKS); |
165 enabled_types_.Put(syncer::NIGORI); | 164 enabled_types_.Put(syncer::NIGORI); |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 583 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
585 Union(new_types, partial_types))); | 584 Union(new_types, partial_types))); |
586 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 585 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
587 enabled_types_).Empty()); | 586 enabled_types_).Empty()); |
588 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 587 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
589 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 588 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
590 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 589 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
591 enabled_types_).Empty()); | 590 enabled_types_).Empty()); |
592 } | 591 } |
593 | 592 |
594 // Register for some IDs and trigger an invalidation. This should | |
595 // propagate all the way to the frontend. | |
596 TEST_F(SyncBackendHostTest, Invalidate) { | |
597 InitializeBackend(true); | |
598 | |
599 syncer::ObjectIdSet ids; | |
600 ids.insert(invalidation::ObjectId(1, "id1")); | |
601 ids.insert(invalidation::ObjectId(2, "id2")); | |
602 const syncer::ObjectIdInvalidationMap& invalidation_map = | |
603 syncer::ObjectIdSetToInvalidationMap(ids, "payload"); | |
604 | |
605 EXPECT_CALL( | |
606 mock_frontend_, | |
607 OnIncomingInvalidation(invalidation_map)) | |
608 .WillOnce(InvokeWithoutArgs(QuitMessageLoop)); | |
609 | |
610 backend_->UpdateRegisteredInvalidationIds(ids); | |
611 fake_manager_->Invalidate(invalidation_map); | |
612 ui_loop_.PostDelayedTask( | |
613 FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); | |
614 ui_loop_.Run(); | |
615 } | |
616 | |
617 // Register for some IDs and update the invalidator state. This | |
618 // should propagate all the way to the frontend. | |
619 TEST_F(SyncBackendHostTest, UpdateInvalidatorState) { | |
620 InitializeBackend(true); | |
621 | |
622 EXPECT_CALL(mock_frontend_, | |
623 OnInvalidatorStateChange(syncer::INVALIDATIONS_ENABLED)) | |
624 .WillOnce(InvokeWithoutArgs(QuitMessageLoop)); | |
625 | |
626 syncer::ObjectIdSet ids; | |
627 ids.insert(invalidation::ObjectId(3, "id3")); | |
628 backend_->UpdateRegisteredInvalidationIds(ids); | |
629 fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED); | |
630 ui_loop_.PostDelayedTask( | |
631 FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); | |
632 ui_loop_.Run(); | |
633 } | |
634 | |
635 // Call StopSyncingForShutdown() on the backend and fire some invalidations | |
636 // before calling Shutdown(). Then start up and shut down the backend again. | |
637 // Those notifications shouldn't propagate to the frontend. | |
638 TEST_F(SyncBackendHostTest, InvalidationsAfterStopSyncingForShutdown) { | |
639 InitializeBackend(true); | |
640 | |
641 syncer::ObjectIdSet ids; | |
642 ids.insert(invalidation::ObjectId(5, "id5")); | |
643 backend_->UpdateRegisteredInvalidationIds(ids); | |
644 | |
645 backend_->StopSyncingForShutdown(); | |
646 | |
647 // Should not trigger anything. | |
648 fake_manager_->UpdateInvalidatorState(syncer::TRANSIENT_INVALIDATION_ERROR); | |
649 fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED); | |
650 const syncer::ObjectIdInvalidationMap& invalidation_map = | |
651 syncer::ObjectIdSetToInvalidationMap(ids, "payload"); | |
652 fake_manager_->Invalidate(invalidation_map); | |
653 | |
654 // Make sure the above calls take effect before we continue. | |
655 fake_manager_->WaitForSyncThread(); | |
656 | |
657 backend_->Shutdown(false); | |
658 backend_.reset(); | |
659 | |
660 TearDown(); | |
661 SetUp(); | |
662 } | |
663 | |
664 // Ensure the device info tracker is initialized properly on startup. | 593 // Ensure the device info tracker is initialized properly on startup. |
665 TEST_F(SyncBackendHostTest, InitializeDeviceInfo) { | 594 TEST_F(SyncBackendHostTest, InitializeDeviceInfo) { |
666 ASSERT_EQ(NULL, backend_->GetSyncedDeviceTracker()); | 595 ASSERT_EQ(NULL, backend_->GetSyncedDeviceTracker()); |
667 | 596 |
668 InitializeBackend(true); | 597 InitializeBackend(true); |
669 const SyncedDeviceTracker* device_tracker = | 598 const SyncedDeviceTracker* device_tracker = |
670 backend_->GetSyncedDeviceTracker(); | 599 backend_->GetSyncedDeviceTracker(); |
671 ASSERT_TRUE(device_tracker->ReadLocalDeviceInfo()); | 600 ASSERT_TRUE(device_tracker->ReadLocalDeviceInfo()); |
672 } | 601 } |
673 | 602 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
744 fake_manager_->WaitForSyncThread(); | 673 fake_manager_->WaitForSyncThread(); |
745 EXPECT_FALSE(types.Equals(fake_manager_->GetLastRefreshRequestTypes())); | 674 EXPECT_FALSE(types.Equals(fake_manager_->GetLastRefreshRequestTypes())); |
746 | 675 |
747 backend_->Shutdown(false); | 676 backend_->Shutdown(false); |
748 backend_.reset(); | 677 backend_.reset(); |
749 } | 678 } |
750 | 679 |
751 } // namespace | 680 } // namespace |
752 | 681 |
753 } // namespace browser_sync | 682 } // namespace browser_sync |
OLD | NEW |