| Index: components/browser_sync/browser/profile_sync_service_startup_unittest.cc
|
| diff --git a/components/browser_sync/browser/profile_sync_service_startup_unittest.cc b/components/browser_sync/browser/profile_sync_service_startup_unittest.cc
|
| deleted file mode 100644
|
| index 51f605eb6081b2f2e03ba0aee979e078a36db873..0000000000000000000000000000000000000000
|
| --- a/components/browser_sync/browser/profile_sync_service_startup_unittest.cc
|
| +++ /dev/null
|
| @@ -1,486 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <memory>
|
| -#include <utility>
|
| -
|
| -#include "base/files/file_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "build/build_config.h"
|
| -#include "components/browser_sync/browser/profile_sync_service.h"
|
| -#include "components/browser_sync/browser/profile_sync_test_util.h"
|
| -#include "components/prefs/pref_service.h"
|
| -#include "components/signin/core/browser/account_tracker_service.h"
|
| -#include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
|
| -#include "components/signin/core/browser/profile_oauth2_token_service.h"
|
| -#include "components/signin/core/browser/signin_manager.h"
|
| -#include "components/signin/core/common/signin_pref_names.h"
|
| -#include "components/sync/driver/data_type_manager.h"
|
| -#include "components/sync/driver/data_type_manager_mock.h"
|
| -#include "components/sync/driver/fake_data_type_controller.h"
|
| -#include "components/sync/driver/glue/sync_backend_host_mock.h"
|
| -#include "components/sync/driver/pref_names.h"
|
| -#include "components/sync/driver/sync_api_component_factory_mock.h"
|
| -#include "components/sync/driver/sync_prefs.h"
|
| -#include "components/sync/driver/sync_service_observer.h"
|
| -#include "components/syncable_prefs/pref_service_syncable.h"
|
| -#include "google_apis/gaia/gaia_auth_consumer.h"
|
| -#include "google_apis/gaia/gaia_constants.h"
|
| -#include "google_apis/gaia/oauth2_token_service.h"
|
| -#include "net/url_request/url_request_test_util.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using browser_sync::SyncBackendHostMock;
|
| -using sync_driver::DataTypeManager;
|
| -using sync_driver::DataTypeManagerMock;
|
| -using testing::_;
|
| -using testing::AnyNumber;
|
| -using testing::DoAll;
|
| -using testing::Mock;
|
| -using testing::Return;
|
| -
|
| -namespace {
|
| -
|
| -const char kGaiaId[] = "12345";
|
| -const char kEmail[] = "test_user@gmail.com";
|
| -const char kDummyPassword[] = "";
|
| -
|
| -class SyncServiceObserverMock : public sync_driver::SyncServiceObserver {
|
| - public:
|
| - SyncServiceObserverMock();
|
| - virtual ~SyncServiceObserverMock();
|
| -
|
| - MOCK_METHOD0(OnStateChanged, void());
|
| -};
|
| -
|
| -SyncServiceObserverMock::SyncServiceObserverMock() {}
|
| -
|
| -SyncServiceObserverMock::~SyncServiceObserverMock() {}
|
| -
|
| -} // namespace
|
| -
|
| -ACTION_P(InvokeOnConfigureStart, sync_service) {
|
| - sync_service->OnConfigureStart();
|
| -}
|
| -
|
| -ACTION_P3(InvokeOnConfigureDone, sync_service, error_callback, result) {
|
| - DataTypeManager::ConfigureResult configure_result =
|
| - static_cast<DataTypeManager::ConfigureResult>(result);
|
| - if (result.status == sync_driver::DataTypeManager::ABORTED)
|
| - error_callback.Run(&configure_result);
|
| - sync_service->OnConfigureDone(configure_result);
|
| -}
|
| -
|
| -class ProfileSyncServiceStartupTest : public testing::Test {
|
| - public:
|
| - ProfileSyncServiceStartupTest() {
|
| - profile_sync_service_bundle_.auth_service()
|
| - ->set_auto_post_fetch_response_on_message_loop(true);
|
| - }
|
| -
|
| - ~ProfileSyncServiceStartupTest() override {
|
| - sync_service_->RemoveObserver(&observer_);
|
| - sync_service_->Shutdown();
|
| - }
|
| -
|
| - void CreateSyncService(
|
| - ProfileSyncService::StartBehavior start_behavior) {
|
| - component_factory_ = profile_sync_service_bundle_.component_factory();
|
| - browser_sync::ProfileSyncServiceBundle::SyncClientBuilder builder(
|
| - &profile_sync_service_bundle_);
|
| - ProfileSyncService::InitParams init_params =
|
| - profile_sync_service_bundle_.CreateBasicInitParams(start_behavior,
|
| - builder.Build());
|
| -
|
| - sync_service_.reset(new ProfileSyncService(std::move(init_params)));
|
| - sync_service_->RegisterDataTypeController(
|
| - base::MakeUnique<sync_driver::FakeDataTypeController>(
|
| - syncer::BOOKMARKS));
|
| - sync_service_->AddObserver(&observer_);
|
| - }
|
| -
|
| - void IssueTestTokens(const std::string& account_id) {
|
| - profile_sync_service_bundle_.auth_service()->UpdateCredentials(
|
| - account_id, "oauth2_login_token");
|
| - }
|
| -
|
| - void SetError(DataTypeManager::ConfigureResult* result) {
|
| - sync_driver::DataTypeStatusTable::TypeErrorMap errors;
|
| - errors[syncer::BOOKMARKS] =
|
| - syncer::SyncError(FROM_HERE,
|
| - syncer::SyncError::UNRECOVERABLE_ERROR,
|
| - "Error",
|
| - syncer::BOOKMARKS);
|
| - result->data_type_status_table.UpdateFailedDataTypes(errors);
|
| - }
|
| -
|
| - protected:
|
| - std::string SimulateTestUserSignin(ProfileSyncService* sync_service) {
|
| - std::string account_id =
|
| - profile_sync_service_bundle_.account_tracker()->SeedAccountInfo(kGaiaId,
|
| - kEmail);
|
| - pref_service()->SetString(prefs::kGoogleServicesAccountId, account_id);
|
| -#if !defined(OS_CHROMEOS)
|
| - profile_sync_service_bundle_.signin_manager()->SignIn(kGaiaId, kEmail,
|
| - kDummyPassword);
|
| -#else
|
| - profile_sync_service_bundle_.signin_manager()->SetAuthenticatedAccountInfo(
|
| - kGaiaId, kEmail);
|
| - if (sync_service)
|
| - sync_service->GoogleSigninSucceeded(account_id, kEmail, kDummyPassword);
|
| -#endif
|
| - return account_id;
|
| - }
|
| -
|
| - DataTypeManagerMock* SetUpDataTypeManager() {
|
| - DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
|
| - EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _))
|
| - .WillOnce(Return(data_type_manager));
|
| - return data_type_manager;
|
| - }
|
| -
|
| - browser_sync::SyncBackendHostMock* SetUpSyncBackendHost() {
|
| - browser_sync::SyncBackendHostMock* sync_backend_host =
|
| - new browser_sync::SyncBackendHostMock();
|
| - EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _))
|
| - .WillOnce(Return(sync_backend_host));
|
| - return sync_backend_host;
|
| - }
|
| -
|
| - PrefService* pref_service() {
|
| - return profile_sync_service_bundle_.pref_service();
|
| - }
|
| -
|
| - base::MessageLoop message_loop_;
|
| - browser_sync::ProfileSyncServiceBundle profile_sync_service_bundle_;
|
| - std::unique_ptr<ProfileSyncService> sync_service_;
|
| - SyncServiceObserverMock observer_;
|
| - sync_driver::DataTypeStatusTable data_type_status_table_;
|
| - SyncApiComponentFactoryMock* component_factory_ = nullptr;
|
| -};
|
| -
|
| -class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest {
|
| - public:
|
| - ProfileSyncServiceStartupCrosTest() {
|
| - CreateSyncService(ProfileSyncService::AUTO_START);
|
| - SimulateTestUserSignin(nullptr);
|
| - EXPECT_TRUE(
|
| - profile_sync_service_bundle_.signin_manager()->IsAuthenticated());
|
| - }
|
| -};
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) {
|
| - // We've never completed startup.
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete);
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
|
| -
|
| - // Should not actually start, rather just clean things up and wait
|
| - // to be enabled.
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - sync_service_->Initialize();
|
| -
|
| - // Preferences should be back to defaults.
|
| - EXPECT_EQ(0,
|
| - pref_service()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime));
|
| - EXPECT_FALSE(
|
| - pref_service()->GetBoolean(sync_driver::prefs::kSyncFirstSetupComplete));
|
| - Mock::VerifyAndClearExpectations(data_type_manager);
|
| -
|
| - // Then start things up.
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1);
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillOnce(Return(DataTypeManager::CONFIGURED)).
|
| - WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - auto sync_blocker = sync_service_->GetSetupInProgressHandle();
|
| -
|
| - // Simulate successful signin as test_user.
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - // Create some tokens in the token service.
|
| - IssueTestTokens(account_id);
|
| -
|
| - // Simulate the UI telling sync it has finished setting up.
|
| - sync_blocker.reset();
|
| - sync_service_->SetFirstSetupComplete();
|
| - EXPECT_TRUE(sync_service_->IsSyncActive());
|
| -}
|
| -
|
| -// TODO(pavely): Reenable test once android is switched to oauth2.
|
| -TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
|
| - // We've never completed startup.
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete);
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| -
|
| - // Should not actually start, rather just clean things up and wait
|
| - // to be enabled.
|
| - EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _))
|
| - .Times(0);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - sync_service_->Initialize();
|
| -
|
| - // Preferences should be back to defaults.
|
| - EXPECT_EQ(0,
|
| - pref_service()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime));
|
| - EXPECT_FALSE(
|
| - pref_service()->GetBoolean(sync_driver::prefs::kSyncFirstSetupComplete));
|
| -
|
| - // Then start things up.
|
| - auto sync_blocker = sync_service_->GetSetupInProgressHandle();
|
| -
|
| - // Simulate successful signin as test_user.
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| -
|
| - profile_sync_service_bundle_.auth_service()->LoadCredentials(account_id);
|
| -
|
| - sync_blocker.reset();
|
| - // ProfileSyncService should try to start by requesting access token.
|
| - // This request should fail as login token was not issued.
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| - EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP,
|
| - sync_service_->GetAuthError().state());
|
| -}
|
| -
|
| -// TODO(pavely): Reenable test once android is switched to oauth2.
|
| -TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) {
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
|
| -
|
| - // Tell the backend to stall while downloading control types (simulating an
|
| - // auth error).
|
| - mock_sbh->set_fail_initial_download(true);
|
| -
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
|
| -
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - sync_service_->Initialize();
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| - Mock::VerifyAndClearExpectations(data_type_manager);
|
| -
|
| - // Update the credentials, unstalling the backend.
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - auto sync_blocker = sync_service_->GetSetupInProgressHandle();
|
| -
|
| - // Simulate successful signin.
|
| - SimulateTestUserSignin(sync_service_.get());
|
| -
|
| - sync_blocker.reset();
|
| -
|
| - // Verify we successfully finish startup and configuration.
|
| - EXPECT_TRUE(sync_service_->IsSyncActive());
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) {
|
| - EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _))
|
| - .Times(0);
|
| - EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _)).Times(0);
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - sync_service_->Initialize();
|
| - // Sync should not start because there are no tokens yet.
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| - sync_service_->SetFirstSetupComplete();
|
| -
|
| - // Sync should not start because there are still no tokens.
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete);
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop());
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - IssueTestTokens(
|
| - profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount(
|
| - "12345", kEmail));
|
| - sync_service_->Initialize();
|
| - EXPECT_TRUE(sync_service_->IsSyncActive());
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
|
| - // Pre load the tokens
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - sync_service_->SetFirstSetupComplete();
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - IssueTestTokens(account_id);
|
| -
|
| - sync_service_->Initialize();
|
| -}
|
| -
|
| -// Test that we can recover from a case where a bug in the code resulted in
|
| -// OnUserChoseDatatypes not being properly called and datatype preferences
|
| -// therefore being left unset.
|
| -TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
|
| - // Clear the datatype preference fields (simulating bug 154940).
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncKeepEverythingSynced);
|
| - syncer::ModelTypeSet user_types = syncer::UserTypes();
|
| - for (syncer::ModelTypeSet::Iterator iter = user_types.First();
|
| - iter.Good(); iter.Inc()) {
|
| - pref_service()->ClearPref(
|
| - sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get()));
|
| - }
|
| -
|
| - // Pre load the tokens
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - sync_service_->SetFirstSetupComplete();
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - IssueTestTokens(account_id);
|
| - sync_service_->Initialize();
|
| -
|
| - EXPECT_TRUE(pref_service()->GetBoolean(
|
| - sync_driver::prefs::kSyncKeepEverythingSynced));
|
| -}
|
| -
|
| -// Verify that the recovery of datatype preferences doesn't overwrite a valid
|
| -// case where only bookmarks are enabled.
|
| -TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
|
| - // Explicitly set Keep Everything Synced to false and have only bookmarks
|
| - // enabled.
|
| - pref_service()->SetBoolean(sync_driver::prefs::kSyncKeepEverythingSynced,
|
| - false);
|
| -
|
| - // Pre load the tokens
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - sync_service_->SetFirstSetupComplete();
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - IssueTestTokens(account_id);
|
| - sync_service_->Initialize();
|
| -
|
| - EXPECT_FALSE(pref_service()->GetBoolean(
|
| - sync_driver::prefs::kSyncKeepEverythingSynced));
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
|
| - // Service should not be started by Initialize() since it's managed.
|
| - pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail);
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| -
|
| - // Disable sync through policy.
|
| - pref_service()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
|
| - EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _))
|
| - .Times(0);
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| -
|
| - sync_service_->Initialize();
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - sync_service_->SetFirstSetupComplete();
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _));
|
| - EXPECT_CALL(*data_type_manager, state())
|
| - .WillRepeatedly(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - IssueTestTokens(account_id);
|
| - sync_service_->Initialize();
|
| - EXPECT_TRUE(sync_service_->IsBackendInitialized());
|
| - EXPECT_TRUE(sync_service_->IsSyncActive());
|
| -
|
| - // The service should stop when switching to managed mode.
|
| - Mock::VerifyAndClearExpectations(data_type_manager);
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| - pref_service()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
|
| - EXPECT_FALSE(sync_service_->IsBackendInitialized());
|
| - // Note that PSS no longer references |data_type_manager| after stopping.
|
| -
|
| - // When switching back to unmanaged, the state should change but sync should
|
| - // not start automatically because IsFirstSetupComplete() will be false.
|
| - // A new DataTypeManager should not be created.
|
| - Mock::VerifyAndClearExpectations(data_type_manager);
|
| - EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _))
|
| - .Times(0);
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncManaged);
|
| - EXPECT_FALSE(sync_service_->IsBackendInitialized());
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, StartFailure) {
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - sync_service_->SetFirstSetupComplete();
|
| - SetUpSyncBackendHost();
|
| - DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| - DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED;
|
| - DataTypeManager::ConfigureResult result(
|
| - status,
|
| - syncer::ModelTypeSet());
|
| - EXPECT_CALL(*data_type_manager, Configure(_, _))
|
| - .WillRepeatedly(
|
| - DoAll(InvokeOnConfigureStart(sync_service_.get()),
|
| - InvokeOnConfigureDone(
|
| - sync_service_.get(),
|
| - base::Bind(&ProfileSyncServiceStartupTest::SetError,
|
| - base::Unretained(this)),
|
| - result)));
|
| - EXPECT_CALL(*data_type_manager, state()).
|
| - WillOnce(Return(DataTypeManager::STOPPED));
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - IssueTestTokens(account_id);
|
| - sync_service_->Initialize();
|
| - EXPECT_TRUE(sync_service_->HasUnrecoverableError());
|
| -}
|
| -
|
| -TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
|
| - // Pre load the tokens
|
| - CreateSyncService(ProfileSyncService::MANUAL_START);
|
| - std::string account_id = SimulateTestUserSignin(sync_service_.get());
|
| - SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
|
| - mock_sbh->set_fail_initial_download(true);
|
| -
|
| - pref_service()->ClearPref(sync_driver::prefs::kSyncFirstSetupComplete);
|
| -
|
| - EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| - sync_service_->Initialize();
|
| -
|
| - auto sync_blocker = sync_service_->GetSetupInProgressHandle();
|
| - IssueTestTokens(account_id);
|
| - sync_blocker.reset();
|
| - EXPECT_FALSE(sync_service_->IsSyncActive());
|
| -}
|
|
|