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

Unified 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, 6 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/glue/sync_backend_host_unittest.cc
===================================================================
--- chrome/browser/sync/glue/sync_backend_host_unittest.cc (revision 208727)
+++ chrome/browser/sync/glue/sync_backend_host_unittest.cc (working copy)
@@ -146,10 +146,13 @@
profile_.reset(new TestingProfile());
profile_->CreateRequestContext();
sync_prefs_.reset(new SyncPrefs(profile_->GetPrefs()));
+ invalidator_storage_.reset(new invalidation::InvalidatorStorage(
+ profile_->GetPrefs()));
backend_.reset(new SyncBackendHost(
profile_->GetDebugName(),
profile_.get(),
- sync_prefs_->AsWeakPtr()));
+ sync_prefs_->AsWeakPtr(),
+ invalidator_storage_->AsWeakPtr()));
credentials_.email = "user@example.com";
credentials_.sync_token = "sync_token";
@@ -175,6 +178,7 @@
}
backend_.reset();
sync_prefs_.reset();
+ invalidator_storage_.reset();
profile_.reset();
// Pump messages posted by the sync thread (which may end up
// posting on the IO thread).
@@ -262,6 +266,7 @@
syncer::TestUnrecoverableErrorHandler handler_;
scoped_ptr<TestingProfile> profile_;
scoped_ptr<SyncPrefs> sync_prefs_;
+ scoped_ptr<invalidation::InvalidatorStorage> invalidator_storage_;
scoped_ptr<SyncBackendHost> backend_;
FakeSyncManager* fake_manager_;
FakeSyncManagerFactory fake_manager_factory_;
@@ -589,6 +594,76 @@
enabled_types_).Empty());
}
+// Register for some IDs and trigger an invalidation. This should
+// propagate all the way to the frontend.
+TEST_F(SyncBackendHostTest, Invalidate) {
+ InitializeBackend(true);
+
+ syncer::ObjectIdSet ids;
+ ids.insert(invalidation::ObjectId(1, "id1"));
+ ids.insert(invalidation::ObjectId(2, "id2"));
+ const syncer::ObjectIdInvalidationMap& invalidation_map =
+ syncer::ObjectIdSetToInvalidationMap(ids, "payload");
+
+ EXPECT_CALL(
+ mock_frontend_,
+ OnIncomingInvalidation(invalidation_map))
+ .WillOnce(InvokeWithoutArgs(QuitMessageLoop));
+
+ backend_->UpdateRegisteredInvalidationIds(ids);
+ fake_manager_->Invalidate(invalidation_map);
+ ui_loop_.PostDelayedTask(
+ FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout());
+ ui_loop_.Run();
+}
+
+// Register for some IDs and update the invalidator state. This
+// should propagate all the way to the frontend.
+TEST_F(SyncBackendHostTest, UpdateInvalidatorState) {
+ InitializeBackend(true);
+
+ EXPECT_CALL(mock_frontend_,
+ OnInvalidatorStateChange(syncer::INVALIDATIONS_ENABLED))
+ .WillOnce(InvokeWithoutArgs(QuitMessageLoop));
+
+ syncer::ObjectIdSet ids;
+ ids.insert(invalidation::ObjectId(3, "id3"));
+ backend_->UpdateRegisteredInvalidationIds(ids);
+ fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
+ ui_loop_.PostDelayedTask(
+ FROM_HERE, ui_loop_.QuitClosure(), TestTimeouts::action_timeout());
+ ui_loop_.Run();
+}
+
+// Call StopSyncingForShutdown() on the backend and fire some invalidations
+// before calling Shutdown(). Then start up and shut down the backend again.
+// Those notifications shouldn't propagate to the frontend.
+TEST_F(SyncBackendHostTest, InvalidationsAfterStopSyncingForShutdown) {
+ InitializeBackend(true);
+
+ syncer::ObjectIdSet ids;
+ ids.insert(invalidation::ObjectId(5, "id5"));
+ backend_->UpdateRegisteredInvalidationIds(ids);
+
+ backend_->StopSyncingForShutdown();
+
+ // Should not trigger anything.
+ fake_manager_->UpdateInvalidatorState(syncer::TRANSIENT_INVALIDATION_ERROR);
+ fake_manager_->UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
+ const syncer::ObjectIdInvalidationMap& invalidation_map =
+ syncer::ObjectIdSetToInvalidationMap(ids, "payload");
+ fake_manager_->Invalidate(invalidation_map);
+
+ // Make sure the above calls take effect before we continue.
+ fake_manager_->WaitForSyncThread();
+
+ backend_->Shutdown(false);
+ backend_.reset();
+
+ TearDown();
+ SetUp();
+}
+
// Ensure the device info tracker is initialized properly on startup.
TEST_F(SyncBackendHostTest, InitializeDeviceInfo) {
ASSERT_EQ(NULL, backend_->GetSyncedDeviceTracker());
« 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