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 "base/files/file_util.h" | 5 #include "base/files/file_util.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/prefs/pref_service_syncable.h" | 9 #include "chrome/browser/prefs/pref_service_syncable.h" |
10 #include "chrome/browser/signin/account_tracker_service_factory.h" | |
10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" | 11 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" |
11 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" | 12 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" |
12 #include "chrome/browser/signin/fake_signin_manager.h" | 13 #include "chrome/browser/signin/fake_signin_manager.h" |
13 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" | 14 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
14 #include "chrome/browser/signin/signin_manager_factory.h" | 15 #include "chrome/browser/signin/signin_manager_factory.h" |
15 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" | 16 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" |
16 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" | 17 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" |
17 #include "chrome/browser/sync/profile_sync_service_factory.h" | 18 #include "chrome/browser/sync/profile_sync_service_factory.h" |
18 #include "chrome/browser/sync/profile_sync_test_util.h" | 19 #include "chrome/browser/sync/profile_sync_test_util.h" |
19 #include "chrome/browser/sync/supervised_user_signin_manager_wrapper.h" | 20 #include "chrome/browser/sync/supervised_user_signin_manager_wrapper.h" |
20 #include "chrome/common/pref_names.h" | 21 #include "chrome/common/pref_names.h" |
21 #include "chrome/test/base/testing_browser_process.h" | 22 #include "chrome/test/base/testing_browser_process.h" |
22 #include "chrome/test/base/testing_profile.h" | 23 #include "chrome/test/base/testing_profile.h" |
23 #include "chrome/test/base/testing_profile_manager.h" | 24 #include "chrome/test/base/testing_profile_manager.h" |
25 #include "components/signin/core/browser/account_tracker_service.h" | |
24 #include "components/signin/core/browser/profile_oauth2_token_service.h" | 26 #include "components/signin/core/browser/profile_oauth2_token_service.h" |
25 #include "components/signin/core/browser/signin_manager.h" | 27 #include "components/signin/core/browser/signin_manager.h" |
26 #include "components/sync_driver/data_type_manager.h" | 28 #include "components/sync_driver/data_type_manager.h" |
27 #include "components/sync_driver/data_type_manager_mock.h" | 29 #include "components/sync_driver/data_type_manager_mock.h" |
28 #include "components/sync_driver/pref_names.h" | 30 #include "components/sync_driver/pref_names.h" |
29 #include "components/sync_driver/sync_prefs.h" | 31 #include "components/sync_driver/sync_prefs.h" |
30 #include "content/public/test/test_browser_thread_bundle.h" | 32 #include "content/public/test/test_browser_thread_bundle.h" |
31 #include "content/public/test/test_utils.h" | 33 #include "content/public/test/test_utils.h" |
32 #include "google_apis/gaia/gaia_auth_consumer.h" | 34 #include "google_apis/gaia/gaia_auth_consumer.h" |
33 #include "google_apis/gaia/gaia_constants.h" | 35 #include "google_apis/gaia/gaia_constants.h" |
34 #include "google_apis/gaia/oauth2_token_service.h" | 36 #include "google_apis/gaia/oauth2_token_service.h" |
35 #include "testing/gmock/include/gmock/gmock.h" | 37 #include "testing/gmock/include/gmock/gmock.h" |
36 #include "testing/gtest/include/gtest/gtest.h" | 38 #include "testing/gtest/include/gtest/gtest.h" |
37 | 39 |
38 using browser_sync::SyncBackendHostMock; | 40 using browser_sync::SyncBackendHostMock; |
39 using content::BrowserThread; | 41 using content::BrowserThread; |
40 using sync_driver::DataTypeManager; | 42 using sync_driver::DataTypeManager; |
41 using sync_driver::DataTypeManagerMock; | 43 using sync_driver::DataTypeManagerMock; |
42 using testing::_; | 44 using testing::_; |
43 using testing::AnyNumber; | 45 using testing::AnyNumber; |
44 using testing::DoAll; | 46 using testing::DoAll; |
45 using testing::InvokeArgument; | 47 using testing::InvokeArgument; |
46 using testing::Mock; | 48 using testing::Mock; |
47 using testing::Return; | 49 using testing::Return; |
48 using testing::SaveArg; | 50 using testing::SaveArg; |
49 | 51 |
52 namespace { | |
53 | |
54 const char kGaiaId[] = "12345"; | |
55 const char kEmail[] = "test_user@gmail.com"; | |
56 const char kDummyPassword[] = ""; | |
57 | |
58 } // namespace | |
59 | |
50 ACTION_P(InvokeOnConfigureStart, pss) { | 60 ACTION_P(InvokeOnConfigureStart, pss) { |
51 ProfileSyncService* service = | 61 ProfileSyncService* service = |
52 static_cast<ProfileSyncService*>(pss); | 62 static_cast<ProfileSyncService*>(pss); |
53 service->OnConfigureStart(); | 63 service->OnConfigureStart(); |
54 } | 64 } |
55 | 65 |
56 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) { | 66 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) { |
57 ProfileSyncService* service = | 67 ProfileSyncService* service = |
58 static_cast<ProfileSyncService*>(pss); | 68 static_cast<ProfileSyncService*>(pss); |
59 DataTypeManager::ConfigureResult configure_result = | 69 DataTypeManager::ConfigureResult configure_result = |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 ProfileOAuth2TokenServiceFactory::GetForProfile(profile), | 132 ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
123 browser_sync::MANUAL_START); | 133 browser_sync::MANUAL_START); |
124 } | 134 } |
125 | 135 |
126 void CreateSyncService() { | 136 void CreateSyncService() { |
127 sync_ = static_cast<ProfileSyncService*>( | 137 sync_ = static_cast<ProfileSyncService*>( |
128 ProfileSyncServiceFactory::GetForProfile(profile_)); | 138 ProfileSyncServiceFactory::GetForProfile(profile_)); |
129 sync_->AddObserver(&observer_); | 139 sync_->AddObserver(&observer_); |
130 } | 140 } |
131 | 141 |
132 void IssueTestTokens() { | 142 void IssueTestTokens(const std::string& account_id) { |
133 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_) | 143 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_) |
134 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token"); | 144 ->UpdateCredentials(account_id, "oauth2_login_token"); |
135 } | 145 } |
136 | 146 |
137 ProfileSyncComponentsFactoryMock* components_factory_mock() { | 147 ProfileSyncComponentsFactoryMock* components_factory_mock() { |
138 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory()); | 148 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory()); |
139 } | 149 } |
140 | 150 |
141 FakeSigninManagerForTesting* fake_signin() { | 151 FakeSigninManagerForTesting* fake_signin() { |
142 return static_cast<FakeSigninManagerForTesting*>(sync_->signin()); | 152 return static_cast<FakeSigninManagerForTesting*>(sync_->signin()); |
143 } | 153 } |
144 | 154 |
145 void SetError(DataTypeManager::ConfigureResult* result) { | 155 void SetError(DataTypeManager::ConfigureResult* result) { |
146 sync_driver::DataTypeStatusTable::TypeErrorMap errors; | 156 sync_driver::DataTypeStatusTable::TypeErrorMap errors; |
147 errors[syncer::BOOKMARKS] = | 157 errors[syncer::BOOKMARKS] = |
148 syncer::SyncError(FROM_HERE, | 158 syncer::SyncError(FROM_HERE, |
149 syncer::SyncError::UNRECOVERABLE_ERROR, | 159 syncer::SyncError::UNRECOVERABLE_ERROR, |
150 "Error", | 160 "Error", |
151 syncer::BOOKMARKS); | 161 syncer::BOOKMARKS); |
152 result->data_type_status_table.UpdateFailedDataTypes(errors); | 162 result->data_type_status_table.UpdateFailedDataTypes(errors); |
153 } | 163 } |
154 | 164 |
155 protected: | 165 protected: |
156 void SimulateTestUserSignin() { | 166 static std::string SimulateTestUserSignin( |
167 Profile* profile, | |
168 FakeSigninManagerForTesting* fake_signin, | |
169 ProfileSyncService* sync) { | |
170 std::string account_id = | |
171 AccountTrackerServiceFactory::GetForProfile(profile) | |
172 ->SeedAccountInfo(kGaiaId, kEmail); | |
173 profile->GetPrefs()->SetString(prefs::kGoogleServicesAccountId, | |
174 account_id); | |
157 #if !defined(OS_CHROMEOS) | 175 #if !defined(OS_CHROMEOS) |
158 fake_signin()->SignIn("test_user@gmail.com", ""); | 176 fake_signin->SignIn(kGaiaId, kEmail, kDummyPassword); |
159 #else | 177 #else |
160 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com"); | 178 fake_signin->SetAuthenticatedAccountInfo(kGaiaId, kEmail); |
161 sync_->GoogleSigninSucceeded("test_user@gmail.com", | 179 if (sync) |
162 "test_user@gmail.com", | 180 sync->GoogleSigninSucceeded(account_id, kEmail, kDummyPassword); |
163 ""); | |
164 #endif | 181 #endif |
182 return account_id; | |
165 } | 183 } |
166 | 184 |
167 DataTypeManagerMock* SetUpDataTypeManager() { | 185 DataTypeManagerMock* SetUpDataTypeManager() { |
168 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); | 186 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); |
169 EXPECT_CALL(*components_factory_mock(), | 187 EXPECT_CALL(*components_factory_mock(), |
170 CreateDataTypeManager(_, _, _, _, _)). | 188 CreateDataTypeManager(_, _, _, _, _)). |
171 WillOnce(Return(data_type_manager)); | 189 WillOnce(Return(data_type_manager)); |
172 return data_type_manager; | 190 return data_type_manager; |
173 } | 191 } |
174 | 192 |
(...skipping 17 matching lines...) Expand all Loading... | |
192 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { | 210 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { |
193 public: | 211 public: |
194 void SetUp() override { | 212 void SetUp() override { |
195 ProfileSyncServiceStartupTest::SetUp(); | 213 ProfileSyncServiceStartupTest::SetUp(); |
196 sync_ = static_cast<ProfileSyncService*>( | 214 sync_ = static_cast<ProfileSyncService*>( |
197 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 215 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
198 profile_, BuildCrosService)); | 216 profile_, BuildCrosService)); |
199 sync_->AddObserver(&observer_); | 217 sync_->AddObserver(&observer_); |
200 } | 218 } |
201 | 219 |
202 static KeyedService* BuildCrosService(content::BrowserContext* context) { | 220 static KeyedService* BuildCrosService( |
221 content::BrowserContext* context) { | |
Nicolas Zea
2015/04/10 20:15:28
nit: fit on previous line?
Roger Tawa OOO till Jul 10th
2015/04/11 00:23:08
Done.
| |
203 Profile* profile = static_cast<Profile*>(context); | 222 Profile* profile = static_cast<Profile*>(context); |
204 SigninManagerBase* signin = | 223 FakeSigninManagerForTesting* signin = |
205 SigninManagerFactory::GetForProfile(profile); | 224 static_cast<FakeSigninManagerForTesting*>( |
206 signin->SetAuthenticatedUsername("test_user@gmail.com"); | 225 SigninManagerFactory::GetForProfile(profile)); |
226 SimulateTestUserSignin(profile, signin, nullptr); | |
207 ProfileOAuth2TokenService* oauth2_token_service = | 227 ProfileOAuth2TokenService* oauth2_token_service = |
208 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); | 228 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
209 EXPECT_TRUE(signin->IsAuthenticated()); | 229 EXPECT_TRUE(signin->IsAuthenticated()); |
210 return new TestProfileSyncServiceNoBackup( | 230 return new TestProfileSyncServiceNoBackup( |
211 scoped_ptr<ProfileSyncComponentsFactory>( | 231 scoped_ptr<ProfileSyncComponentsFactory>( |
212 new ProfileSyncComponentsFactoryMock()), | 232 new ProfileSyncComponentsFactoryMock()), |
213 profile, | 233 profile, |
214 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile, | 234 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile, |
215 signin)), | 235 signin)), |
216 oauth2_token_service, | 236 oauth2_token_service, |
(...skipping 26 matching lines...) Expand all Loading... | |
243 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); | 263 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); |
244 EXPECT_CALL(*data_type_manager, state()). | 264 EXPECT_CALL(*data_type_manager, state()). |
245 WillOnce(Return(DataTypeManager::CONFIGURED)). | 265 WillOnce(Return(DataTypeManager::CONFIGURED)). |
246 WillOnce(Return(DataTypeManager::CONFIGURED)); | 266 WillOnce(Return(DataTypeManager::CONFIGURED)); |
247 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 267 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
248 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 268 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
249 | 269 |
250 sync_->SetSetupInProgress(true); | 270 sync_->SetSetupInProgress(true); |
251 | 271 |
252 // Simulate successful signin as test_user. | 272 // Simulate successful signin as test_user. |
253 SimulateTestUserSignin(); | 273 std::string account_id = |
274 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
254 // Create some tokens in the token service. | 275 // Create some tokens in the token service. |
255 IssueTestTokens(); | 276 IssueTestTokens(account_id); |
256 | 277 |
257 // Simulate the UI telling sync it has finished setting up. | 278 // Simulate the UI telling sync it has finished setting up. |
258 sync_->SetSetupInProgress(false); | 279 sync_->SetSetupInProgress(false); |
259 EXPECT_TRUE(sync_->SyncActive()); | 280 EXPECT_TRUE(sync_->SyncActive()); |
260 } | 281 } |
261 | 282 |
262 // TODO(pavely): Reenable test once android is switched to oauth2. | 283 // TODO(pavely): Reenable test once android is switched to oauth2. |
263 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { | 284 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { |
264 // We've never completed startup. | 285 // We've never completed startup. |
265 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); | 286 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); |
(...skipping 10 matching lines...) Expand all Loading... | |
276 EXPECT_EQ( | 297 EXPECT_EQ( |
277 0, | 298 0, |
278 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); | 299 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); |
279 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( | 300 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( |
280 sync_driver::prefs::kSyncHasSetupCompleted)); | 301 sync_driver::prefs::kSyncHasSetupCompleted)); |
281 | 302 |
282 // Then start things up. | 303 // Then start things up. |
283 sync_->SetSetupInProgress(true); | 304 sync_->SetSetupInProgress(true); |
284 | 305 |
285 // Simulate successful signin as test_user. | 306 // Simulate successful signin as test_user. |
286 SimulateTestUserSignin(); | 307 std::string account_id = |
308 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
287 | 309 |
288 ProfileOAuth2TokenService* token_service = | 310 ProfileOAuth2TokenService* token_service = |
289 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); | 311 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); |
290 token_service->LoadCredentials("test_user@gmail.com"); | 312 token_service->LoadCredentials(kEmail); |
Nicolas Zea
2015/04/10 20:15:28
isn't this supposed to be an account id now?
Roger Tawa OOO till Jul 10th
2015/04/11 00:23:08
Good catch! Fixed.
| |
291 | 313 |
292 sync_->SetSetupInProgress(false); | 314 sync_->SetSetupInProgress(false); |
293 // ProfileSyncService should try to start by requesting access token. | 315 // ProfileSyncService should try to start by requesting access token. |
294 // This request should fail as login token was not issued. | 316 // This request should fail as login token was not issued. |
295 EXPECT_FALSE(sync_->SyncActive()); | 317 EXPECT_FALSE(sync_->SyncActive()); |
296 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, | 318 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, |
297 sync_->GetAuthError().state()); | 319 sync_->GetAuthError().state()); |
298 } | 320 } |
299 | 321 |
300 // TODO(pavely): Reenable test once android is switched to oauth2. | 322 // TODO(pavely): Reenable test once android is switched to oauth2. |
301 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { | 323 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { |
302 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); | |
303 CreateSyncService(); | 324 CreateSyncService(); |
325 std::string account_id = | |
326 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
304 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); | 327 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); |
305 | 328 |
306 // Tell the backend to stall while downloading control types (simulating an | 329 // Tell the backend to stall while downloading control types (simulating an |
307 // auth error). | 330 // auth error). |
308 mock_sbh->set_fail_initial_download(true); | 331 mock_sbh->set_fail_initial_download(true); |
309 | 332 |
310 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 333 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
311 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 334 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
312 | 335 |
313 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 336 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
314 sync_->Initialize(); | 337 sync_->Initialize(); |
315 EXPECT_FALSE(sync_->SyncActive()); | 338 EXPECT_FALSE(sync_->SyncActive()); |
316 Mock::VerifyAndClearExpectations(data_type_manager); | 339 Mock::VerifyAndClearExpectations(data_type_manager); |
317 | 340 |
318 // Update the credentials, unstalling the backend. | 341 // Update the credentials, unstalling the backend. |
319 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 342 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
320 EXPECT_CALL(*data_type_manager, state()). | 343 EXPECT_CALL(*data_type_manager, state()). |
321 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 344 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
322 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 345 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
323 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 346 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
324 sync_->SetSetupInProgress(true); | 347 sync_->SetSetupInProgress(true); |
325 | 348 |
326 // Simulate successful signin. | 349 // Simulate successful signin. |
327 SimulateTestUserSignin(); | 350 SimulateTestUserSignin(profile_, fake_signin(), sync_); |
328 | 351 |
329 sync_->SetSetupInProgress(false); | 352 sync_->SetSetupInProgress(false); |
330 | 353 |
331 // Verify we successfully finish startup and configuration. | 354 // Verify we successfully finish startup and configuration. |
332 EXPECT_TRUE(sync_->SyncActive()); | 355 EXPECT_TRUE(sync_->SyncActive()); |
333 } | 356 } |
334 | 357 |
335 #if defined(OS_WIN) | 358 #if defined(OS_WIN) |
336 // http://crbug.com/396402 | 359 // http://crbug.com/396402 |
337 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials | 360 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials |
(...skipping 20 matching lines...) Expand all Loading... | |
358 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { | 381 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { |
359 SetUpSyncBackendHost(); | 382 SetUpSyncBackendHost(); |
360 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 383 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
361 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); | 384 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); |
362 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 385 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
363 EXPECT_CALL(*data_type_manager, state()). | 386 EXPECT_CALL(*data_type_manager, state()). |
364 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 387 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
365 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 388 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
366 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 389 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
367 | 390 |
368 IssueTestTokens(); | 391 IssueTestTokens( |
392 AccountTrackerServiceFactory::GetForProfile(profile_) | |
393 ->PickAccountIdForAccount("12345", kEmail)); | |
369 sync_->Initialize(); | 394 sync_->Initialize(); |
370 EXPECT_TRUE(sync_->SyncActive()); | 395 EXPECT_TRUE(sync_->SyncActive()); |
371 } | 396 } |
372 | 397 |
373 #if defined(OS_WIN) | 398 #if defined(OS_WIN) |
374 // http://crbug.com/396402 | 399 // http://crbug.com/396402 |
375 #define MAYBE_StartNormal DISABLED_StartNormal | 400 #define MAYBE_StartNormal DISABLED_StartNormal |
376 #else | 401 #else |
377 #define MAYBE_StartNormal StartNormal | 402 #define MAYBE_StartNormal StartNormal |
378 #endif | 403 #endif |
379 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) { | 404 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) { |
380 // Pre load the tokens | 405 // Pre load the tokens |
381 SigninManagerFactory::GetForProfile(profile_) | |
382 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
383 CreateSyncService(); | 406 CreateSyncService(); |
407 std::string account_id = | |
408 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
384 sync_->SetSyncSetupCompleted(); | 409 sync_->SetSyncSetupCompleted(); |
385 SetUpSyncBackendHost(); | 410 SetUpSyncBackendHost(); |
386 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 411 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
387 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 412 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
388 EXPECT_CALL(*data_type_manager, state()). | 413 EXPECT_CALL(*data_type_manager, state()). |
389 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 414 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
390 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 415 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
391 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 416 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
392 | 417 |
393 IssueTestTokens(); | 418 IssueTestTokens(account_id); |
394 | 419 |
395 sync_->Initialize(); | 420 sync_->Initialize(); |
396 } | 421 } |
397 | 422 |
398 // Test that we can recover from a case where a bug in the code resulted in | 423 // Test that we can recover from a case where a bug in the code resulted in |
399 // OnUserChoseDatatypes not being properly called and datatype preferences | 424 // OnUserChoseDatatypes not being properly called and datatype preferences |
400 // therefore being left unset. | 425 // therefore being left unset. |
401 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 426 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
402 // Clear the datatype preference fields (simulating bug 154940). | 427 // Clear the datatype preference fields (simulating bug 154940). |
403 profile_->GetPrefs()->ClearPref( | 428 profile_->GetPrefs()->ClearPref( |
404 sync_driver::prefs::kSyncKeepEverythingSynced); | 429 sync_driver::prefs::kSyncKeepEverythingSynced); |
405 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 430 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
406 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); | 431 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); |
407 iter.Good(); iter.Inc()) { | 432 iter.Good(); iter.Inc()) { |
408 profile_->GetPrefs()->ClearPref( | 433 profile_->GetPrefs()->ClearPref( |
409 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get())); | 434 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get())); |
410 } | 435 } |
411 | 436 |
412 // Pre load the tokens | 437 // Pre load the tokens |
413 SigninManagerFactory::GetForProfile(profile_) | |
414 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
415 CreateSyncService(); | 438 CreateSyncService(); |
439 std::string account_id = | |
440 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
416 sync_->SetSyncSetupCompleted(); | 441 sync_->SetSyncSetupCompleted(); |
417 SetUpSyncBackendHost(); | 442 SetUpSyncBackendHost(); |
418 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 443 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
419 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 444 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
420 EXPECT_CALL(*data_type_manager, state()). | 445 EXPECT_CALL(*data_type_manager, state()). |
421 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 446 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
422 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 447 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
423 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 448 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
424 | 449 |
425 IssueTestTokens(); | 450 IssueTestTokens(account_id); |
426 sync_->Initialize(); | 451 sync_->Initialize(); |
427 | 452 |
428 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( | 453 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( |
429 sync_driver::prefs::kSyncKeepEverythingSynced)); | 454 sync_driver::prefs::kSyncKeepEverythingSynced)); |
430 } | 455 } |
431 | 456 |
432 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 457 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
433 // case where only bookmarks are enabled. | 458 // case where only bookmarks are enabled. |
434 #if defined(OS_WIN) | 459 #if defined(OS_WIN) |
435 // http://crbug.com/396402 | 460 // http://crbug.com/396402 |
436 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs | 461 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs |
437 #else | 462 #else |
438 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs | 463 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs |
439 #endif | 464 #endif |
440 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) { | 465 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) { |
441 // Explicitly set Keep Everything Synced to false and have only bookmarks | 466 // Explicitly set Keep Everything Synced to false and have only bookmarks |
442 // enabled. | 467 // enabled. |
443 profile_->GetPrefs()->SetBoolean( | 468 profile_->GetPrefs()->SetBoolean( |
444 sync_driver::prefs::kSyncKeepEverythingSynced, false); | 469 sync_driver::prefs::kSyncKeepEverythingSynced, false); |
445 | 470 |
446 // Pre load the tokens | 471 // Pre load the tokens |
447 SigninManagerFactory::GetForProfile(profile_) | |
448 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
449 CreateSyncService(); | 472 CreateSyncService(); |
473 std::string account_id = | |
474 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
450 sync_->SetSyncSetupCompleted(); | 475 sync_->SetSyncSetupCompleted(); |
451 SetUpSyncBackendHost(); | 476 SetUpSyncBackendHost(); |
452 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 477 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
453 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 478 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
454 EXPECT_CALL(*data_type_manager, state()). | 479 EXPECT_CALL(*data_type_manager, state()). |
455 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 480 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
456 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 481 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
457 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 482 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
458 IssueTestTokens(); | 483 IssueTestTokens(account_id); |
459 sync_->Initialize(); | 484 sync_->Initialize(); |
460 | 485 |
461 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( | 486 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( |
462 sync_driver::prefs::kSyncKeepEverythingSynced)); | 487 sync_driver::prefs::kSyncKeepEverythingSynced)); |
463 } | 488 } |
464 | 489 |
465 #if defined(OS_WIN) | 490 #if defined(OS_WIN) |
466 // http://crbug.com/396402 | 491 // http://crbug.com/396402 |
467 #define MAYBE_ManagedStartup DISABLED_ManagedStartup | 492 #define MAYBE_ManagedStartup DISABLED_ManagedStartup |
468 #else | 493 #else |
469 #define MAYBE_ManagedStartup ManagedStartup | 494 #define MAYBE_ManagedStartup ManagedStartup |
470 #endif | 495 #endif |
471 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) { | 496 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) { |
472 // Service should not be started by Initialize() since it's managed. | 497 // Service should not be started by Initialize() since it's managed. |
473 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 498 profile_->GetPrefs()->SetString(prefs::kGoogleServicesAccountId, |
474 "test_user@gmail.com"); | 499 kEmail); |
475 CreateSyncService(); | 500 CreateSyncService(); |
476 | 501 |
477 // Disable sync through policy. | 502 // Disable sync through policy. |
478 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); | 503 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); |
479 EXPECT_CALL(*components_factory_mock(), | 504 EXPECT_CALL(*components_factory_mock(), |
480 CreateDataTypeManager(_, _, _, _, _)).Times(0); | 505 CreateDataTypeManager(_, _, _, _, _)).Times(0); |
481 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 506 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
482 | 507 |
483 sync_->Initialize(); | 508 sync_->Initialize(); |
484 } | 509 } |
485 | 510 |
486 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 511 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
487 SigninManagerFactory::GetForProfile(profile_) | |
488 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
489 CreateSyncService(); | 512 CreateSyncService(); |
513 std::string account_id = | |
514 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
490 sync_->SetSyncSetupCompleted(); | 515 sync_->SetSyncSetupCompleted(); |
491 SetUpSyncBackendHost(); | 516 SetUpSyncBackendHost(); |
492 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 517 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
493 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 518 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
494 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 519 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
495 IssueTestTokens(); | 520 IssueTestTokens(account_id); |
496 sync_->Initialize(); | 521 sync_->Initialize(); |
497 | 522 |
498 // The service should stop when switching to managed mode. | 523 // The service should stop when switching to managed mode. |
499 Mock::VerifyAndClearExpectations(data_type_manager); | 524 Mock::VerifyAndClearExpectations(data_type_manager); |
500 EXPECT_CALL(*data_type_manager, state()). | 525 EXPECT_CALL(*data_type_manager, state()). |
501 WillOnce(Return(DataTypeManager::CONFIGURED)); | 526 WillOnce(Return(DataTypeManager::CONFIGURED)); |
502 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 527 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
503 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 528 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
504 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); | 529 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); |
505 | 530 |
506 // When switching back to unmanaged, the state should change, but the service | 531 // When switching back to unmanaged, the state should change, but the service |
507 // should not start up automatically (kSyncSetupCompleted will be false). | 532 // should not start up automatically (kSyncSetupCompleted will be false). |
508 Mock::VerifyAndClearExpectations(data_type_manager); | 533 Mock::VerifyAndClearExpectations(data_type_manager); |
509 EXPECT_CALL(*components_factory_mock(), | 534 EXPECT_CALL(*components_factory_mock(), |
510 CreateDataTypeManager(_, _, _, _, _)).Times(0); | 535 CreateDataTypeManager(_, _, _, _, _)).Times(0); |
511 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 536 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
512 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged); | 537 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged); |
513 } | 538 } |
514 | 539 |
515 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { | 540 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { |
516 SigninManagerFactory::GetForProfile(profile_) | |
517 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
518 CreateSyncService(); | 541 CreateSyncService(); |
542 std::string account_id = | |
543 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
519 sync_->SetSyncSetupCompleted(); | 544 sync_->SetSyncSetupCompleted(); |
520 SetUpSyncBackendHost(); | 545 SetUpSyncBackendHost(); |
521 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 546 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
522 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; | 547 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; |
523 DataTypeManager::ConfigureResult result( | 548 DataTypeManager::ConfigureResult result( |
524 status, | 549 status, |
525 syncer::ModelTypeSet()); | 550 syncer::ModelTypeSet()); |
526 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly( | 551 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly( |
527 DoAll(InvokeOnConfigureStart(sync_), | 552 DoAll(InvokeOnConfigureStart(sync_), |
528 InvokeOnConfigureDone( | 553 InvokeOnConfigureDone( |
529 sync_, | 554 sync_, |
530 base::Bind(&ProfileSyncServiceStartupTest::SetError, | 555 base::Bind(&ProfileSyncServiceStartupTest::SetError, |
531 base::Unretained(this)), | 556 base::Unretained(this)), |
532 result))); | 557 result))); |
533 EXPECT_CALL(*data_type_manager, state()). | 558 EXPECT_CALL(*data_type_manager, state()). |
534 WillOnce(Return(DataTypeManager::STOPPED)); | 559 WillOnce(Return(DataTypeManager::STOPPED)); |
535 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 560 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
536 IssueTestTokens(); | 561 IssueTestTokens(account_id); |
537 sync_->Initialize(); | 562 sync_->Initialize(); |
538 EXPECT_TRUE(sync_->HasUnrecoverableError()); | 563 EXPECT_TRUE(sync_->HasUnrecoverableError()); |
539 } | 564 } |
540 | 565 |
541 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 566 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
542 // Pre load the tokens | 567 // Pre load the tokens |
543 SigninManagerFactory::GetForProfile(profile_) | |
544 ->SetAuthenticatedUsername("test_user@gmail.com"); | |
545 CreateSyncService(); | 568 CreateSyncService(); |
569 std::string account_id = | |
570 SimulateTestUserSignin(profile_, fake_signin(), sync_); | |
546 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); | 571 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); |
547 mock_sbh->set_fail_initial_download(true); | 572 mock_sbh->set_fail_initial_download(true); |
548 | 573 |
549 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); | 574 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); |
550 | 575 |
551 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 576 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
552 sync_->Initialize(); | 577 sync_->Initialize(); |
553 | 578 |
554 sync_->SetSetupInProgress(true); | 579 sync_->SetSetupInProgress(true); |
555 IssueTestTokens(); | 580 IssueTestTokens(account_id); |
556 sync_->SetSetupInProgress(false); | 581 sync_->SetSetupInProgress(false); |
557 EXPECT_FALSE(sync_->SyncActive()); | 582 EXPECT_FALSE(sync_->SyncActive()); |
558 } | 583 } |
OLD | NEW |