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 |