| 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
| 10 #include "chrome/browser/signin/signin_manager.h" | 10 #include "chrome/browser/signin/signin_manager.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 using browser_sync::DataTypeManager; | 28 using browser_sync::DataTypeManager; |
| 29 using browser_sync::DataTypeManagerMock; | 29 using browser_sync::DataTypeManagerMock; |
| 30 using content::BrowserThread; | 30 using content::BrowserThread; |
| 31 using testing::_; | 31 using testing::_; |
| 32 using testing::AnyNumber; | 32 using testing::AnyNumber; |
| 33 using testing::DoAll; | 33 using testing::DoAll; |
| 34 using testing::InvokeArgument; | 34 using testing::InvokeArgument; |
| 35 using testing::Mock; | 35 using testing::Mock; |
| 36 using testing::Return; | 36 using testing::Return; |
| 37 using testing::ReturnRef; |
| 38 |
| 39 ACTION_P(InvokeOnConfigureStart, pss) { |
| 40 TestProfileSyncService* service = static_cast<TestProfileSyncService*>(pss); |
| 41 service->OnConfigureStart(); |
| 42 } |
| 43 |
| 44 ACTION_P(InvokeOnConfigureDone, pss) { |
| 45 TestProfileSyncService* service = static_cast<TestProfileSyncService*>(pss); |
| 46 service->OnConfigureDone(); |
| 47 } |
| 37 | 48 |
| 38 // TODO(chron): Test not using cros_user flag and use signin_ | 49 // TODO(chron): Test not using cros_user flag and use signin_ |
| 39 class ProfileSyncServiceStartupTest : public testing::Test { | 50 class ProfileSyncServiceStartupTest : public testing::Test { |
| 40 public: | 51 public: |
| 41 ProfileSyncServiceStartupTest() | 52 ProfileSyncServiceStartupTest() |
| 42 : ui_thread_(BrowserThread::UI, &ui_loop_), | 53 : ui_thread_(BrowserThread::UI, &ui_loop_), |
| 43 db_thread_(BrowserThread::DB), | 54 db_thread_(BrowserThread::DB), |
| 44 file_thread_(BrowserThread::FILE), | 55 file_thread_(BrowserThread::FILE), |
| 45 io_thread_(BrowserThread::IO), | 56 io_thread_(BrowserThread::IO), |
| 46 profile_(new TestingProfile) {} | 57 profile_(new TestingProfile) {} |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 signin, | 94 signin, |
| 84 ProfileSyncService::MANUAL_START, | 95 ProfileSyncService::MANUAL_START, |
| 85 true, | 96 true, |
| 86 base::Closure())); | 97 base::Closure())); |
| 87 } | 98 } |
| 88 | 99 |
| 89 DataTypeManagerMock* SetUpDataTypeManager() { | 100 DataTypeManagerMock* SetUpDataTypeManager() { |
| 90 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); | 101 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); |
| 91 EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)). | 102 EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)). |
| 92 WillOnce(Return(data_type_manager)); | 103 WillOnce(Return(data_type_manager)); |
| 104 EXPECT_CALL(*data_type_manager, AddObserver(_)).Times(AnyNumber()); |
| 105 EXPECT_CALL(*data_type_manager, RemoveObserver(_)).Times(AnyNumber()); |
| 106 EXPECT_CALL(*data_type_manager, HasObserver(_)).Times(AnyNumber()); |
| 93 return data_type_manager; | 107 return data_type_manager; |
| 94 } | 108 } |
| 95 | 109 |
| 96 ProfileSyncComponentsFactoryMock* factory_mock() { | 110 ProfileSyncComponentsFactoryMock* factory_mock() { |
| 97 return static_cast<ProfileSyncComponentsFactoryMock*>(service_->factory()); | 111 return static_cast<ProfileSyncComponentsFactoryMock*>(service_->factory()); |
| 98 } | 112 } |
| 99 | 113 |
| 100 MessageLoop ui_loop_; | 114 MessageLoop ui_loop_; |
| 101 content::TestBrowserThread ui_thread_; | 115 content::TestBrowserThread ui_thread_; |
| 102 content::TestBrowserThread db_thread_; | 116 content::TestBrowserThread db_thread_; |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); | 309 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); |
| 296 } | 310 } |
| 297 | 311 |
| 298 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { | 312 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { |
| 299 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 313 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 300 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; | 314 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; |
| 301 syncer::SyncError error( | 315 syncer::SyncError error( |
| 302 FROM_HERE, "Association failed.", syncer::BOOKMARKS); | 316 FROM_HERE, "Association failed.", syncer::BOOKMARKS); |
| 303 std::list<syncer::SyncError> errors; | 317 std::list<syncer::SyncError> errors; |
| 304 errors.push_back(error); | 318 errors.push_back(error); |
| 305 browser_sync::DataTypeManager::ConfigureResult result( | 319 const browser_sync::DataTypeManager::ConfigureResult result( |
| 306 status, | 320 status, |
| 307 syncer::ModelTypeSet(), | 321 syncer::ModelTypeSet(), |
| 308 errors, | 322 errors, |
| 309 syncer::ModelTypeSet()); | 323 syncer::ModelTypeSet()); |
| 310 EXPECT_CALL(*data_type_manager, Configure(_, _)). | 324 EXPECT_CALL(*data_type_manager, Configure(_, _)). |
| 311 WillRepeatedly( | 325 WillRepeatedly( |
| 312 DoAll( | 326 DoAll(InvokeOnConfigureStart(service_.get()), |
| 313 NotifyFromDataTypeManager(data_type_manager, | 327 InvokeOnConfigureDone(service_.get()))); |
| 314 static_cast<int>(chrome::NOTIFICATION_SYNC_CONFIGURE_START)), | |
| 315 NotifyFromDataTypeManagerWithResult(data_type_manager, | |
| 316 static_cast<int>(chrome::NOTIFICATION_SYNC_CONFIGURE_DONE), | |
| 317 &result))); | |
| 318 EXPECT_CALL(*data_type_manager, state()). | 328 EXPECT_CALL(*data_type_manager, state()). |
| 319 WillOnce(Return(DataTypeManager::STOPPED)); | 329 WillOnce(Return(DataTypeManager::STOPPED)); |
| 330 EXPECT_CALL(*data_type_manager, last_configure_result()). |
| 331 WillRepeatedly(ReturnRef(result)); |
| 320 | 332 |
| 321 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 333 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 322 | 334 |
| 323 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 335 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 324 GaiaConstants::kSyncService, "sync_token"); | 336 GaiaConstants::kSyncService, "sync_token"); |
| 325 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 337 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
| 326 service_->Initialize(); | 338 service_->Initialize(); |
| 327 EXPECT_TRUE(service_->HasUnrecoverableError()); | 339 EXPECT_TRUE(service_->HasUnrecoverableError()); |
| 328 } | 340 } |
| 329 | 341 |
| 330 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 342 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
| 331 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 343 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 332 | 344 |
| 333 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 345 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 334 | 346 |
| 335 // Preload the tokens. | 347 // Preload the tokens. |
| 336 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 348 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 337 GaiaConstants::kSyncService, "sync_token"); | 349 GaiaConstants::kSyncService, "sync_token"); |
| 338 service_->fail_initial_download(); | 350 service_->fail_initial_download(); |
| 339 | 351 |
| 340 service_->Initialize(); | 352 service_->Initialize(); |
| 341 EXPECT_FALSE(service_->sync_initialized()); | 353 EXPECT_FALSE(service_->sync_initialized()); |
| 342 EXPECT_FALSE(service_->GetBackendForTest()); | 354 EXPECT_FALSE(service_->GetBackendForTest()); |
| 343 } | 355 } |
| OLD | NEW |