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

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host_unittest.cc

Issue 17911005: Merge 208347 "Revert 208315 "Make use of InvalidationService"" (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1547/src/
Patch Set: Created 7 years, 5 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 "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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 io_thread_(BrowserThread::IO), 139 io_thread_(BrowserThread::IO),
140 fake_manager_(NULL) {} 140 fake_manager_(NULL) {}
141 141
142 virtual ~SyncBackendHostTest() {} 142 virtual ~SyncBackendHostTest() {}
143 143
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 invalidation::InvalidatorStorage(
150 profile_->GetPrefs()));
149 backend_.reset(new SyncBackendHost( 151 backend_.reset(new SyncBackendHost(
150 profile_->GetDebugName(), 152 profile_->GetDebugName(),
151 profile_.get(), 153 profile_.get(),
152 sync_prefs_->AsWeakPtr())); 154 sync_prefs_->AsWeakPtr(),
155 invalidator_storage_->AsWeakPtr()));
153 credentials_.email = "user@example.com"; 156 credentials_.email = "user@example.com";
154 credentials_.sync_token = "sync_token"; 157 credentials_.sync_token = "sync_token";
155 158
156 // These types are always implicitly enabled. 159 // These types are always implicitly enabled.
157 enabled_types_.PutAll(syncer::ControlTypes()); 160 enabled_types_.PutAll(syncer::ControlTypes());
158 161
159 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend 162 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend
160 // Registrar removing them if it can't find their model workers. 163 // Registrar removing them if it can't find their model workers.
161 enabled_types_.Put(syncer::BOOKMARKS); 164 enabled_types_.Put(syncer::BOOKMARKS);
162 enabled_types_.Put(syncer::NIGORI); 165 enabled_types_.Put(syncer::NIGORI);
163 enabled_types_.Put(syncer::DEVICE_INFO); 166 enabled_types_.Put(syncer::DEVICE_INFO);
164 enabled_types_.Put(syncer::PREFERENCES); 167 enabled_types_.Put(syncer::PREFERENCES);
165 enabled_types_.Put(syncer::SESSIONS); 168 enabled_types_.Put(syncer::SESSIONS);
166 enabled_types_.Put(syncer::SEARCH_ENGINES); 169 enabled_types_.Put(syncer::SEARCH_ENGINES);
167 enabled_types_.Put(syncer::AUTOFILL); 170 enabled_types_.Put(syncer::AUTOFILL);
168 enabled_types_.Put(syncer::EXPERIMENTS); 171 enabled_types_.Put(syncer::EXPERIMENTS);
169 } 172 }
170 173
171 virtual void TearDown() OVERRIDE { 174 virtual void TearDown() OVERRIDE {
172 if (backend_) { 175 if (backend_) {
173 backend_->StopSyncingForShutdown(); 176 backend_->StopSyncingForShutdown();
174 backend_->Shutdown(false); 177 backend_->Shutdown(false);
175 } 178 }
176 backend_.reset(); 179 backend_.reset();
177 sync_prefs_.reset(); 180 sync_prefs_.reset();
181 invalidator_storage_.reset();
178 profile_.reset(); 182 profile_.reset();
179 // Pump messages posted by the sync thread (which may end up 183 // Pump messages posted by the sync thread (which may end up
180 // posting on the IO thread). 184 // posting on the IO thread).
181 ui_loop_.RunUntilIdle(); 185 ui_loop_.RunUntilIdle();
182 io_thread_.Stop(); 186 io_thread_.Stop();
183 // Pump any messages posted by the IO thread. 187 // Pump any messages posted by the IO thread.
184 ui_loop_.RunUntilIdle(); 188 ui_loop_.RunUntilIdle();
185 } 189 }
186 190
187 // Synchronously initializes the backend. 191 // Synchronously initializes the backend.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 259 }
256 260
257 base::MessageLoop ui_loop_; 261 base::MessageLoop ui_loop_;
258 content::TestBrowserThread ui_thread_; 262 content::TestBrowserThread ui_thread_;
259 content::TestBrowserThread io_thread_; 263 content::TestBrowserThread io_thread_;
260 StrictMock<MockSyncFrontend> mock_frontend_; 264 StrictMock<MockSyncFrontend> mock_frontend_;
261 syncer::SyncCredentials credentials_; 265 syncer::SyncCredentials credentials_;
262 syncer::TestUnrecoverableErrorHandler handler_; 266 syncer::TestUnrecoverableErrorHandler handler_;
263 scoped_ptr<TestingProfile> profile_; 267 scoped_ptr<TestingProfile> profile_;
264 scoped_ptr<SyncPrefs> sync_prefs_; 268 scoped_ptr<SyncPrefs> sync_prefs_;
269 scoped_ptr<invalidation::InvalidatorStorage> invalidator_storage_;
265 scoped_ptr<SyncBackendHost> backend_; 270 scoped_ptr<SyncBackendHost> backend_;
266 FakeSyncManager* fake_manager_; 271 FakeSyncManager* fake_manager_;
267 FakeSyncManagerFactory fake_manager_factory_; 272 FakeSyncManagerFactory fake_manager_factory_;
268 syncer::ModelTypeSet enabled_types_; 273 syncer::ModelTypeSet enabled_types_;
269 }; 274 };
270 275
271 // Test basic initialization with no initial types (first time initialization). 276 // Test basic initialization with no initial types (first time initialization).
272 // Only the nigori should be configured. 277 // Only the nigori should be configured.
273 TEST_F(SyncBackendHostTest, InitShutdown) { 278 TEST_F(SyncBackendHostTest, InitShutdown) {
274 InitializeBackend(true); 279 InitializeBackend(true);
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 587 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
583 Union(new_types, partial_types))); 588 Union(new_types, partial_types)));
584 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 589 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
585 enabled_types_).Empty()); 590 enabled_types_).Empty());
586 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 591 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
587 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 592 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
588 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 593 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
589 enabled_types_).Empty()); 594 enabled_types_).Empty());
590 } 595 }
591 596
597 // Register for some IDs and trigger an invalidation. This should
598 // propagate all the way to the frontend.
599 TEST_F(SyncBackendHostTest, Invalidate) {
600 InitializeBackend(true);
601
602 syncer::ObjectIdSet ids;
603 ids.insert(invalidation::ObjectId(1, "id1"));
604 ids.insert(invalidation::ObjectId(2, "id2"));
605 const syncer::ObjectIdInvalidationMap& invalidation_map =
606 syncer::ObjectIdSetToInvalidationMap(ids, "payload");
607
608 EXPECT_CALL(
609 mock_frontend_,
610 OnIncomingInvalidation(invalidation_map))
611 .WillOnce(InvokeWithoutArgs(QuitMessageLoop));
612
613 backend_->UpdateRegisteredInvalidationIds(ids);
614 fake_manager_->Invalidate(invalidation_map);
615 ui_loop_.PostDelayedTask(
616 FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout());
617 ui_loop_.Run();
618 }
619
620 // Register for some IDs and update the invalidator state. This
621 // should propagate all the way to the frontend.
622 TEST_F(SyncBackendHostTest, UpdateInvalidatorState) {
623 InitializeBackend(true);
624
625 EXPECT_CALL(mock_frontend_,
626 OnInvalidatorStateChange(syncer::INVALIDATIONS_ENABLED))
627 .WillOnce(InvokeWithoutArgs(QuitMessageLoop));
628
629 syncer::ObjectIdSet ids;
630 ids.insert(invalidation::ObjectId(3, "id3"));
631 backend_->UpdateRegisteredInvalidationIds(ids);
632 fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
633 ui_loop_.PostDelayedTask(
634 FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout());
635 ui_loop_.Run();
636 }
637
638 // Call StopSyncingForShutdown() on the backend and fire some invalidations
639 // before calling Shutdown(). Then start up and shut down the backend again.
640 // Those notifications shouldn't propagate to the frontend.
641 TEST_F(SyncBackendHostTest, InvalidationsAfterStopSyncingForShutdown) {
642 InitializeBackend(true);
643
644 syncer::ObjectIdSet ids;
645 ids.insert(invalidation::ObjectId(5, "id5"));
646 backend_->UpdateRegisteredInvalidationIds(ids);
647
648 backend_->StopSyncingForShutdown();
649
650 // Should not trigger anything.
651 fake_manager_->UpdateInvalidatorState(syncer::TRANSIENT_INVALIDATION_ERROR);
652 fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
653 const syncer::ObjectIdInvalidationMap& invalidation_map =
654 syncer::ObjectIdSetToInvalidationMap(ids, "payload");
655 fake_manager_->Invalidate(invalidation_map);
656
657 // Make sure the above calls take effect before we continue.
658 fake_manager_->WaitForSyncThread();
659
660 backend_->Shutdown(false);
661 backend_.reset();
662
663 TearDown();
664 SetUp();
665 }
666
592 // Ensure the device info tracker is initialized properly on startup. 667 // Ensure the device info tracker is initialized properly on startup.
593 TEST_F(SyncBackendHostTest, InitializeDeviceInfo) { 668 TEST_F(SyncBackendHostTest, InitializeDeviceInfo) {
594 ASSERT_EQ(NULL, backend_->GetSyncedDeviceTracker()); 669 ASSERT_EQ(NULL, backend_->GetSyncedDeviceTracker());
595 670
596 InitializeBackend(true); 671 InitializeBackend(true);
597 const SyncedDeviceTracker* device_tracker = 672 const SyncedDeviceTracker* device_tracker =
598 backend_->GetSyncedDeviceTracker(); 673 backend_->GetSyncedDeviceTracker();
599 ASSERT_TRUE(device_tracker->ReadLocalDeviceInfo()); 674 ASSERT_TRUE(device_tracker->ReadLocalDeviceInfo());
600 } 675 }
601 676
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 TEST_F(SyncBackendHostTest, DownloadControlTypesRestart) { 763 TEST_F(SyncBackendHostTest, DownloadControlTypesRestart) {
689 sync_prefs_->SetSyncSetupCompleted(); 764 sync_prefs_->SetSyncSetupCompleted();
690 InitializeBackend(true); 765 InitializeBackend(true);
691 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, 766 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE,
692 fake_manager_->GetAndResetConfigureReason()); 767 fake_manager_->GetAndResetConfigureReason());
693 } 768 }
694 769
695 } // namespace 770 } // namespace
696 771
697 } // namespace browser_sync 772 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host.cc ('k') | chrome/browser/sync/profile_sync_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698