| OLD | NEW |
| 1 // Copyright (c) 2011 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/net/gaia/token_service.h" | 9 #include "chrome/browser/net/gaia/token_service.h" |
| 10 #include "chrome/browser/prefs/pref_service.h" | 10 #include "chrome/browser/prefs/pref_service.h" |
| 11 #include "chrome/browser/sync/glue/data_type_manager.h" | 11 #include "chrome/browser/sync/glue/data_type_manager.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 // posting on the IO thread). | 62 // posting on the IO thread). |
| 63 ui_loop_.RunAllPending(); | 63 ui_loop_.RunAllPending(); |
| 64 io_thread_.Stop(); | 64 io_thread_.Stop(); |
| 65 file_thread_.Stop(); | 65 file_thread_.Stop(); |
| 66 ui_loop_.RunAllPending(); | 66 ui_loop_.RunAllPending(); |
| 67 } | 67 } |
| 68 | 68 |
| 69 protected: | 69 protected: |
| 70 // Overridden below by ProfileSyncServiceStartupCrosTest. | 70 // Overridden below by ProfileSyncServiceStartupCrosTest. |
| 71 virtual void CreateSyncService() { | 71 virtual void CreateSyncService() { |
| 72 service_.reset(new TestProfileSyncService(&factory_, | 72 service_.reset(new TestProfileSyncService( |
| 73 profile_.get(), | 73 new ProfileSyncComponentsFactoryMock(), |
| 74 new FakeSigninManager(), | 74 profile_.get(), |
| 75 ProfileSyncService::MANUAL_START, | 75 new FakeSigninManager(), |
| 76 true, | 76 ProfileSyncService::MANUAL_START, |
| 77 base::Closure())); | 77 true, |
| 78 base::Closure())); |
| 78 } | 79 } |
| 79 | 80 |
| 80 DataTypeManagerMock* SetUpDataTypeManager() { | 81 DataTypeManagerMock* SetUpDataTypeManager() { |
| 81 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); | 82 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); |
| 82 EXPECT_CALL(factory_, CreateDataTypeManager(_, _)). | 83 EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)). |
| 83 WillOnce(Return(data_type_manager)); | 84 WillOnce(Return(data_type_manager)); |
| 84 return data_type_manager; | 85 return data_type_manager; |
| 85 } | 86 } |
| 86 | 87 |
| 88 ProfileSyncComponentsFactoryMock* factory_mock() { |
| 89 return static_cast<ProfileSyncComponentsFactoryMock*>(service_->factory()); |
| 90 } |
| 91 |
| 87 MessageLoop ui_loop_; | 92 MessageLoop ui_loop_; |
| 88 content::TestBrowserThread ui_thread_; | 93 content::TestBrowserThread ui_thread_; |
| 89 content::TestBrowserThread file_thread_; | 94 content::TestBrowserThread file_thread_; |
| 90 content::TestBrowserThread io_thread_; | 95 content::TestBrowserThread io_thread_; |
| 91 scoped_ptr<TestingProfile> profile_; | 96 scoped_ptr<TestingProfile> profile_; |
| 92 ProfileSyncComponentsFactoryMock factory_; | |
| 93 scoped_ptr<TestProfileSyncService> service_; | 97 scoped_ptr<TestProfileSyncService> service_; |
| 94 ProfileSyncServiceObserverMock observer_; | 98 ProfileSyncServiceObserverMock observer_; |
| 95 }; | 99 }; |
| 96 | 100 |
| 97 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { | 101 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { |
| 98 protected: | 102 protected: |
| 99 virtual void CreateSyncService() { | 103 virtual void CreateSyncService() { |
| 100 SigninManager* signin = new SigninManager(); | 104 SigninManager* signin = new SigninManager(); |
| 101 signin->SetAuthenticatedUsername("test_user"); | 105 signin->SetAuthenticatedUsername("test_user"); |
| 102 service_.reset(new TestProfileSyncService(&factory_, | 106 service_.reset(new TestProfileSyncService( |
| 103 profile_.get(), | 107 new ProfileSyncComponentsFactoryMock(), |
| 104 signin, | 108 profile_.get(), |
| 105 ProfileSyncService::AUTO_START, | 109 signin, |
| 106 true, | 110 ProfileSyncService::AUTO_START, |
| 107 base::Closure())); | 111 true, |
| 112 base::Closure())); |
| 108 } | 113 } |
| 109 }; | 114 }; |
| 110 | 115 |
| 111 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { | 116 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { |
| 112 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 117 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 113 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 118 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
| 114 | 119 |
| 115 // We've never completed startup. | 120 // We've never completed startup. |
| 116 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 121 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 117 | 122 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 profile_->GetTokenService()->IssueAuthTokenForTest( | 179 profile_->GetTokenService()->IssueAuthTokenForTest( |
| 175 GaiaConstants::kSyncService, "sync_token"); | 180 GaiaConstants::kSyncService, "sync_token"); |
| 176 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 181 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
| 177 service_->Initialize(); | 182 service_->Initialize(); |
| 178 } | 183 } |
| 179 | 184 |
| 180 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 185 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
| 181 // Disable sync through policy. | 186 // Disable sync through policy. |
| 182 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 187 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
| 183 | 188 |
| 184 EXPECT_CALL(factory_, CreateDataTypeManager(_, _)).Times(0); | 189 EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)).Times(0); |
| 185 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 190 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 186 | 191 |
| 187 // Service should not be started by Initialize() since it's managed. | 192 // Service should not be started by Initialize() since it's managed. |
| 188 profile_->GetTokenService()->IssueAuthTokenForTest( | 193 profile_->GetTokenService()->IssueAuthTokenForTest( |
| 189 GaiaConstants::kSyncService, "sync_token"); | 194 GaiaConstants::kSyncService, "sync_token"); |
| 190 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 195 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
| 191 service_->Initialize(); | 196 service_->Initialize(); |
| 192 } | 197 } |
| 193 | 198 |
| 194 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 199 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 205 Mock::VerifyAndClearExpectations(data_type_manager); | 210 Mock::VerifyAndClearExpectations(data_type_manager); |
| 206 EXPECT_CALL(*data_type_manager, state()). | 211 EXPECT_CALL(*data_type_manager, state()). |
| 207 WillOnce(Return(DataTypeManager::CONFIGURED)); | 212 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 208 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 213 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 209 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 214 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 210 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 215 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
| 211 | 216 |
| 212 // When switching back to unmanaged, the state should change, but the service | 217 // When switching back to unmanaged, the state should change, but the service |
| 213 // should not start up automatically (kSyncSetupCompleted will be false). | 218 // should not start up automatically (kSyncSetupCompleted will be false). |
| 214 Mock::VerifyAndClearExpectations(data_type_manager); | 219 Mock::VerifyAndClearExpectations(data_type_manager); |
| 215 EXPECT_CALL(factory_, CreateDataTypeManager(_, _)).Times(0); | 220 EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)).Times(0); |
| 216 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 221 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 217 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); | 222 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); |
| 218 } | 223 } |
| 219 | 224 |
| 220 TEST_F(ProfileSyncServiceStartupTest, ClearServerData) { | 225 TEST_F(ProfileSyncServiceStartupTest, ClearServerData) { |
| 221 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 226 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 222 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); | 227 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); |
| 223 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 228 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 224 | 229 |
| 225 profile_->GetTokenService()->IssueAuthTokenForTest( | 230 profile_->GetTokenService()->IssueAuthTokenForTest( |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 | 325 |
| 321 // Preload the tokens. | 326 // Preload the tokens. |
| 322 profile_->GetTokenService()->IssueAuthTokenForTest( | 327 profile_->GetTokenService()->IssueAuthTokenForTest( |
| 323 GaiaConstants::kSyncService, "sync_token"); | 328 GaiaConstants::kSyncService, "sync_token"); |
| 324 service_->fail_initial_download(); | 329 service_->fail_initial_download(); |
| 325 | 330 |
| 326 service_->Initialize(); | 331 service_->Initialize(); |
| 327 EXPECT_FALSE(service_->sync_initialized()); | 332 EXPECT_FALSE(service_->sync_initialized()); |
| 328 EXPECT_FALSE(service_->GetBackendForTest()); | 333 EXPECT_FALSE(service_->GetBackendForTest()); |
| 329 } | 334 } |
| OLD | NEW |