diff options
Diffstat (limited to 'chrome/browser/sync/profile_sync_service_unittest.cc')
-rw-r--r-- | chrome/browser/sync/profile_sync_service_unittest.cc | 184 |
1 files changed, 5 insertions, 179 deletions
diff --git a/chrome/browser/sync/profile_sync_service_unittest.cc b/chrome/browser/sync/profile_sync_service_unittest.cc index 3280634..6e7bbe7 100644 --- a/chrome/browser/sync/profile_sync_service_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_unittest.cc @@ -8,6 +8,7 @@ #include "base/memory/scoped_ptr.h" #include "base/message_loop.h" #include "base/values.h" +#include "chrome/browser/invalidation/invalidation_service_factory.h" #include "chrome/browser/signin/signin_manager.h" #include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/token_service.h" @@ -26,10 +27,6 @@ #include "sync/js/js_arg_list.h" #include "sync/js/js_event_details.h" #include "sync/js/js_test_util.h" -#include "sync/notifier/fake_invalidation_handler.h" -#include "sync/notifier/invalidator.h" -#include "sync/notifier/invalidator_test_template.h" -#include "sync/notifier/object_id_invalidation_map_test_util.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -64,6 +61,8 @@ class ProfileSyncServiceTestHarness { io_thread_.StartIOThread(); profile.reset(new TestingProfile()); profile->CreateRequestContext(); + invalidation::InvalidationServiceFactory::GetInstance()-> + SetBuildOnlyFakeInvalidatorsForTest(true); } void TearDown() { @@ -357,7 +356,7 @@ TEST_F(ProfileSyncServiceTest, JsControllerProcessJsMessageBasic) { StrictMock<syncer::MockJsReplyHandler> reply_handler; ListValue arg_list1; - arg_list1.Append(Value::CreateStringValue("TRANSIENT_INVALIDATION_ERROR")); + arg_list1.Append(Value::CreateStringValue("INVALIDATIONS_ENABLED")); syncer::JsArgList args1(&arg_list1); EXPECT_CALL(reply_handler, HandleJsReply("getNotificationState", HasArgs(args1))); @@ -381,7 +380,7 @@ TEST_F(ProfileSyncServiceTest, StrictMock<syncer::MockJsReplyHandler> reply_handler; ListValue arg_list1; - arg_list1.Append(Value::CreateStringValue("TRANSIENT_INVALIDATION_ERROR")); + arg_list1.Append(Value::CreateStringValue("INVALIDATIONS_ENABLED")); syncer::JsArgList args1(&arg_list1); EXPECT_CALL(reply_handler, HandleJsReply("getNotificationState", HasArgs(args1))); @@ -467,178 +466,5 @@ TEST_F(ProfileSyncServiceTest, FailToDownloadControlTypes) { EXPECT_FALSE(harness_.service->sync_initialized()); } -// Register a handler with the ProfileSyncService, and disable and -// reenable sync. The handler should get notified of the state -// changes. -// Flaky on all platforms. http://crbug.com/154491 -TEST_F(ProfileSyncServiceTest, DISABLED_DisableInvalidationsOnStop) { - harness_.StartSyncServiceAndSetInitialSyncEnded( - true, true, true, true, syncer::STORAGE_IN_MEMORY); - - syncer::FakeInvalidationHandler handler; - harness_.service->RegisterInvalidationHandler(&handler); - - SyncBackendHostForProfileSyncTest* const backend = - harness_.service->GetBackendForTest(); - - backend->EmitOnInvalidatorStateChange(syncer::INVALIDATIONS_ENABLED); - EXPECT_EQ(syncer::INVALIDATIONS_ENABLED, handler.GetInvalidatorState()); - - harness_.service->StopAndSuppress(); - EXPECT_EQ(syncer::TRANSIENT_INVALIDATION_ERROR, - handler.GetInvalidatorState()); - - harness_.service->UnsuppressAndStart(); - EXPECT_EQ(syncer::INVALIDATIONS_ENABLED, handler.GetInvalidatorState()); - - harness_.service->UnregisterInvalidationHandler(&handler); -} - -// Register for some IDs with the ProfileSyncService, restart sync, -// and trigger some invalidation messages. They should still be -// received by the handler. -TEST_F(ProfileSyncServiceTest, UpdateRegisteredInvalidationIdsPersistence) { - harness_.StartSyncService(); - - syncer::ObjectIdSet ids; - ids.insert(invalidation::ObjectId(3, "id3")); - const syncer::ObjectIdInvalidationMap& states = - syncer::ObjectIdSetToInvalidationMap(ids, "payload"); - - syncer::FakeInvalidationHandler handler; - - harness_.service->RegisterInvalidationHandler(&handler); - harness_.service->UpdateRegisteredInvalidationIds(&handler, ids); - - harness_.service->StopAndSuppress(); - harness_.service->UnsuppressAndStart(); - - SyncBackendHostForProfileSyncTest* const backend = - harness_.service->GetBackendForTest(); - - backend->EmitOnInvalidatorStateChange(syncer::INVALIDATIONS_ENABLED); - EXPECT_EQ(syncer::INVALIDATIONS_ENABLED, handler.GetInvalidatorState()); - - backend->EmitOnIncomingInvalidation(states); - EXPECT_THAT(states, Eq(handler.GetLastInvalidationMap())); - - backend->EmitOnInvalidatorStateChange(syncer::TRANSIENT_INVALIDATION_ERROR); - EXPECT_EQ(syncer::TRANSIENT_INVALIDATION_ERROR, - handler.GetInvalidatorState()); - - harness_.service->UnregisterInvalidationHandler(&handler); -} - -// Thin Invalidator wrapper around ProfileSyncService. -class ProfileSyncServiceInvalidator : public syncer::Invalidator { - public: - explicit ProfileSyncServiceInvalidator(ProfileSyncService* service) - : service_(service) {} - - virtual ~ProfileSyncServiceInvalidator() {} - - // Invalidator implementation. - virtual void RegisterHandler(syncer::InvalidationHandler* handler) OVERRIDE { - service_->RegisterInvalidationHandler(handler); - } - - virtual void UpdateRegisteredIds(syncer::InvalidationHandler* handler, - const syncer::ObjectIdSet& ids) OVERRIDE { - service_->UpdateRegisteredInvalidationIds(handler, ids); - } - - virtual void UnregisterHandler( - syncer::InvalidationHandler* handler) OVERRIDE { - service_->UnregisterInvalidationHandler(handler); - } - - virtual void Acknowledge(const invalidation::ObjectId& id, - const syncer::AckHandle& ack_handle) OVERRIDE { - // Do nothing. - } - - virtual syncer::InvalidatorState GetInvalidatorState() const OVERRIDE { - return service_->GetInvalidatorState(); - } - - virtual void UpdateCredentials( - const std::string& email, const std::string& token) OVERRIDE { - // Do nothing. - } - - virtual void SendInvalidation( - const syncer::ObjectIdInvalidationMap& invalidation_map) OVERRIDE { - // Do nothing. - } - - private: - ProfileSyncService* const service_; - - DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceInvalidator); -}; - } // namespace - - -// ProfileSyncServiceInvalidatorTestDelegate has to be visible from -// the syncer namespace (where InvalidatorTest lives). -class ProfileSyncServiceInvalidatorTestDelegate { - public: - ProfileSyncServiceInvalidatorTestDelegate() {} - - ~ProfileSyncServiceInvalidatorTestDelegate() { - DestroyInvalidator(); - } - - void CreateInvalidator( - const std::string& invalidation_client_id, - const std::string& initial_state, - const base::WeakPtr<syncer::InvalidationStateTracker>& - invalidation_state_tracker) { - DCHECK(!invalidator_.get()); - harness_.SetUp(); - harness_.StartSyncService(); - invalidator_.reset( - new ProfileSyncServiceInvalidator(harness_.service.get())); - } - - ProfileSyncServiceInvalidator* GetInvalidator() { - return invalidator_.get(); - } - - void DestroyInvalidator() { - invalidator_.reset(); - harness_.TearDown(); - } - - void WaitForInvalidator() { - // Do nothing. - } - - void TriggerOnInvalidatorStateChange(syncer::InvalidatorState state) { - harness_.service->GetBackendForTest()->EmitOnInvalidatorStateChange(state); - } - - void TriggerOnIncomingInvalidation( - const syncer::ObjectIdInvalidationMap& invalidation_map) { - harness_.service->GetBackendForTest()->EmitOnIncomingInvalidation( - invalidation_map); - } - - private: - ProfileSyncServiceTestHarness harness_; - scoped_ptr<ProfileSyncServiceInvalidator> invalidator_; -}; - } // namespace browser_sync - -namespace syncer { -namespace { - -// ProfileSyncService should behave just like an invalidator. -INSTANTIATE_TYPED_TEST_CASE_P( - ProfileSyncServiceInvalidatorTest, InvalidatorTest, - ::browser_sync::ProfileSyncServiceInvalidatorTestDelegate); - -} // namespace -} // namespace syncer |