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 "components/browser_sync/profile_sync_service.h" | 5 #include "components/browser_sync/profile_sync_service.h" |
6 | 6 |
7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 const char kGaiaId[] = "12345"; | 44 const char kGaiaId[] = "12345"; |
45 const char kEmail[] = "test_user@gmail.com"; | 45 const char kEmail[] = "test_user@gmail.com"; |
46 const char kDummyPassword[] = ""; | 46 const char kDummyPassword[] = ""; |
47 | 47 |
48 class SyncServiceObserverMock : public syncer::SyncServiceObserver { | 48 class SyncServiceObserverMock : public syncer::SyncServiceObserver { |
49 public: | 49 public: |
50 SyncServiceObserverMock(); | 50 SyncServiceObserverMock(); |
51 virtual ~SyncServiceObserverMock(); | 51 virtual ~SyncServiceObserverMock(); |
52 | 52 |
53 MOCK_METHOD0(OnStateChanged, void()); | 53 MOCK_METHOD1(OnStateChanged, void(syncer::SyncService*)); |
54 }; | 54 }; |
55 | 55 |
56 SyncServiceObserverMock::SyncServiceObserverMock() {} | 56 SyncServiceObserverMock::SyncServiceObserverMock() {} |
57 | 57 |
58 SyncServiceObserverMock::~SyncServiceObserverMock() {} | 58 SyncServiceObserverMock::~SyncServiceObserverMock() {} |
59 | 59 |
60 } // namespace | 60 } // namespace |
61 | 61 |
62 ACTION_P(InvokeOnConfigureStart, sync_service) { | 62 ACTION_P(InvokeOnConfigureStart, sync_service) { |
63 sync_service->OnConfigureStart(); | 63 sync_service->OnConfigureStart(); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { | 168 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { |
169 // We've never completed startup. | 169 // We've never completed startup. |
170 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 170 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
171 CreateSyncService(ProfileSyncService::MANUAL_START); | 171 CreateSyncService(ProfileSyncService::MANUAL_START); |
172 SetUpSyncEngine(); | 172 SetUpSyncEngine(); |
173 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 173 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
174 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 174 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
175 | 175 |
176 // Should not actually start, rather just clean things up and wait | 176 // Should not actually start, rather just clean things up and wait |
177 // to be enabled. | 177 // to be enabled. |
178 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 178 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
179 sync_service_->Initialize(); | 179 sync_service_->Initialize(); |
180 | 180 |
181 // Preferences should be back to defaults. | 181 // Preferences should be back to defaults. |
182 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); | 182 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
183 EXPECT_FALSE( | 183 EXPECT_FALSE( |
184 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); | 184 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
185 Mock::VerifyAndClearExpectations(data_type_manager); | 185 Mock::VerifyAndClearExpectations(data_type_manager); |
186 | 186 |
187 // Then start things up. | 187 // Then start things up. |
188 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); | 188 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); |
189 EXPECT_CALL(*data_type_manager, state()) | 189 EXPECT_CALL(*data_type_manager, state()) |
190 .WillOnce(Return(DataTypeManager::CONFIGURED)) | 190 .WillOnce(Return(DataTypeManager::CONFIGURED)) |
191 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 191 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
192 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 192 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
193 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 193 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
194 | 194 |
195 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 195 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
196 | 196 |
197 // Simulate successful signin as test_user. | 197 // Simulate successful signin as test_user. |
198 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 198 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
199 // Create some tokens in the token service. | 199 // Create some tokens in the token service. |
200 IssueTestTokens(account_id); | 200 IssueTestTokens(account_id); |
201 | 201 |
202 // Simulate the UI telling sync it has finished setting up. | 202 // Simulate the UI telling sync it has finished setting up. |
203 sync_blocker.reset(); | 203 sync_blocker.reset(); |
204 sync_service_->SetFirstSetupComplete(); | 204 sync_service_->SetFirstSetupComplete(); |
205 EXPECT_TRUE(sync_service_->IsSyncActive()); | 205 EXPECT_TRUE(sync_service_->IsSyncActive()); |
206 } | 206 } |
207 | 207 |
208 // TODO(pavely): Reenable test once android is switched to oauth2. | 208 // TODO(pavely): Reenable test once android is switched to oauth2. |
209 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { | 209 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { |
210 // We've never completed startup. | 210 // We've never completed startup. |
211 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 211 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
212 CreateSyncService(ProfileSyncService::MANUAL_START); | 212 CreateSyncService(ProfileSyncService::MANUAL_START); |
213 | 213 |
214 // Should not actually start, rather just clean things up and wait | 214 // Should not actually start, rather just clean things up and wait |
215 // to be enabled. | 215 // to be enabled. |
216 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) | 216 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) |
217 .Times(0); | 217 .Times(0); |
218 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 218 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
219 sync_service_->Initialize(); | 219 sync_service_->Initialize(); |
220 | 220 |
221 // Preferences should be back to defaults. | 221 // Preferences should be back to defaults. |
222 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); | 222 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
223 EXPECT_FALSE( | 223 EXPECT_FALSE( |
224 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); | 224 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
225 | 225 |
226 // Then start things up. | 226 // Then start things up. |
227 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 227 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
228 | 228 |
(...skipping 16 matching lines...) Expand all Loading... |
245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
246 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); | 246 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); |
247 | 247 |
248 // Tell the backend to stall while downloading control types (simulating an | 248 // Tell the backend to stall while downloading control types (simulating an |
249 // auth error). | 249 // auth error). |
250 mock_sbh->set_fail_initial_download(true); | 250 mock_sbh->set_fail_initial_download(true); |
251 | 251 |
252 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 252 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
253 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 253 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
254 | 254 |
255 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 255 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
256 sync_service_->Initialize(); | 256 sync_service_->Initialize(); |
257 EXPECT_FALSE(sync_service_->IsSyncActive()); | 257 EXPECT_FALSE(sync_service_->IsSyncActive()); |
258 Mock::VerifyAndClearExpectations(data_type_manager); | 258 Mock::VerifyAndClearExpectations(data_type_manager); |
259 | 259 |
260 // Update the credentials, unstalling the backend. | 260 // Update the credentials, unstalling the backend. |
261 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 261 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
262 EXPECT_CALL(*data_type_manager, state()) | 262 EXPECT_CALL(*data_type_manager, state()) |
263 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 263 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
264 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 264 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
265 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 265 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
266 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 266 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
267 | 267 |
268 // Simulate successful signin. | 268 // Simulate successful signin. |
269 SimulateTestUserSignin(sync_service_.get()); | 269 SimulateTestUserSignin(sync_service_.get()); |
270 | 270 |
271 sync_blocker.reset(); | 271 sync_blocker.reset(); |
272 | 272 |
273 // Verify we successfully finish startup and configuration. | 273 // Verify we successfully finish startup and configuration. |
274 EXPECT_TRUE(sync_service_->IsSyncActive()); | 274 EXPECT_TRUE(sync_service_->IsSyncActive()); |
275 } | 275 } |
276 | 276 |
277 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { | 277 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { |
278 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) | 278 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) |
279 .Times(0); | 279 .Times(0); |
280 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)).Times(0); | 280 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)).Times(0); |
281 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 281 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
282 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 282 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
283 | 283 |
284 sync_service_->Initialize(); | 284 sync_service_->Initialize(); |
285 // Sync should not start because there are no tokens yet. | 285 // Sync should not start because there are no tokens yet. |
286 EXPECT_FALSE(sync_service_->IsSyncActive()); | 286 EXPECT_FALSE(sync_service_->IsSyncActive()); |
287 sync_service_->SetFirstSetupComplete(); | 287 sync_service_->SetFirstSetupComplete(); |
288 | 288 |
289 // Sync should not start because there are still no tokens. | 289 // Sync should not start because there are still no tokens. |
290 EXPECT_FALSE(sync_service_->IsSyncActive()); | 290 EXPECT_FALSE(sync_service_->IsSyncActive()); |
291 } | 291 } |
292 | 292 |
293 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { | 293 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { |
294 SetUpSyncEngine(); | 294 SetUpSyncEngine(); |
295 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 295 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
296 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 296 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
297 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 297 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
298 EXPECT_CALL(*data_type_manager, state()) | 298 EXPECT_CALL(*data_type_manager, state()) |
299 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 299 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
300 EXPECT_CALL(*data_type_manager, Stop()); | 300 EXPECT_CALL(*data_type_manager, Stop()); |
301 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 301 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
302 | 302 |
303 IssueTestTokens( | 303 IssueTestTokens( |
304 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( | 304 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( |
305 "12345", kEmail)); | 305 "12345", kEmail)); |
306 sync_service_->Initialize(); | 306 sync_service_->Initialize(); |
307 EXPECT_TRUE(sync_service_->IsSyncActive()); | 307 EXPECT_TRUE(sync_service_->IsSyncActive()); |
308 } | 308 } |
309 | 309 |
310 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { | 310 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { |
311 // Pre load the tokens | 311 // Pre load the tokens |
312 CreateSyncService(ProfileSyncService::MANUAL_START); | 312 CreateSyncService(ProfileSyncService::MANUAL_START); |
313 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 313 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
314 sync_service_->SetFirstSetupComplete(); | 314 sync_service_->SetFirstSetupComplete(); |
315 SetUpSyncEngine(); | 315 SetUpSyncEngine(); |
316 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 316 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
317 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 317 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
318 EXPECT_CALL(*data_type_manager, state()) | 318 EXPECT_CALL(*data_type_manager, state()) |
319 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 319 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
320 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 320 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
321 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 321 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
322 | 322 |
323 IssueTestTokens(account_id); | 323 IssueTestTokens(account_id); |
324 | 324 |
325 sync_service_->Initialize(); | 325 sync_service_->Initialize(); |
326 } | 326 } |
327 | 327 |
328 // Test that we can recover from a case where a bug in the code resulted in | 328 // Test that we can recover from a case where a bug in the code resulted in |
329 // OnUserChoseDatatypes not being properly called and datatype preferences | 329 // OnUserChoseDatatypes not being properly called and datatype preferences |
330 // therefore being left unset. | 330 // therefore being left unset. |
331 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 331 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
332 // Clear the datatype preference fields (simulating bug 154940). | 332 // Clear the datatype preference fields (simulating bug 154940). |
333 pref_service()->ClearPref(syncer::prefs::kSyncKeepEverythingSynced); | 333 pref_service()->ClearPref(syncer::prefs::kSyncKeepEverythingSynced); |
334 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 334 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
335 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); | 335 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); |
336 iter.Inc()) { | 336 iter.Inc()) { |
337 pref_service()->ClearPref( | 337 pref_service()->ClearPref( |
338 syncer::SyncPrefs::GetPrefNameForDataType(iter.Get())); | 338 syncer::SyncPrefs::GetPrefNameForDataType(iter.Get())); |
339 } | 339 } |
340 | 340 |
341 // Pre load the tokens | 341 // Pre load the tokens |
342 CreateSyncService(ProfileSyncService::MANUAL_START); | 342 CreateSyncService(ProfileSyncService::MANUAL_START); |
343 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 343 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
344 sync_service_->SetFirstSetupComplete(); | 344 sync_service_->SetFirstSetupComplete(); |
345 SetUpSyncEngine(); | 345 SetUpSyncEngine(); |
346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
347 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 347 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
348 EXPECT_CALL(*data_type_manager, state()) | 348 EXPECT_CALL(*data_type_manager, state()) |
349 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 349 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
350 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 350 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
351 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 351 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
352 | 352 |
353 IssueTestTokens(account_id); | 353 IssueTestTokens(account_id); |
354 sync_service_->Initialize(); | 354 sync_service_->Initialize(); |
355 | 355 |
356 EXPECT_TRUE( | 356 EXPECT_TRUE( |
357 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 357 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
358 } | 358 } |
359 | 359 |
360 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 360 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
361 // case where only bookmarks are enabled. | 361 // case where only bookmarks are enabled. |
362 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 362 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
363 // Explicitly set Keep Everything Synced to false and have only bookmarks | 363 // Explicitly set Keep Everything Synced to false and have only bookmarks |
364 // enabled. | 364 // enabled. |
365 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); | 365 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); |
366 | 366 |
367 // Pre load the tokens | 367 // Pre load the tokens |
368 CreateSyncService(ProfileSyncService::MANUAL_START); | 368 CreateSyncService(ProfileSyncService::MANUAL_START); |
369 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 369 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
370 sync_service_->SetFirstSetupComplete(); | 370 sync_service_->SetFirstSetupComplete(); |
371 SetUpSyncEngine(); | 371 SetUpSyncEngine(); |
372 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 372 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
373 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 373 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
374 EXPECT_CALL(*data_type_manager, state()) | 374 EXPECT_CALL(*data_type_manager, state()) |
375 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 375 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
376 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 376 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
377 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 377 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
378 IssueTestTokens(account_id); | 378 IssueTestTokens(account_id); |
379 sync_service_->Initialize(); | 379 sync_service_->Initialize(); |
380 | 380 |
381 EXPECT_FALSE( | 381 EXPECT_FALSE( |
382 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 382 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
383 } | 383 } |
384 | 384 |
385 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 385 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
386 // Service should not be started by Initialize() since it's managed. | 386 // Service should not be started by Initialize() since it's managed. |
387 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); | 387 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); |
388 CreateSyncService(ProfileSyncService::MANUAL_START); | 388 CreateSyncService(ProfileSyncService::MANUAL_START); |
389 | 389 |
390 // Disable sync through policy. | 390 // Disable sync through policy. |
391 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); | 391 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); |
392 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) | 392 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) |
393 .Times(0); | 393 .Times(0); |
394 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 394 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
395 | 395 |
396 sync_service_->Initialize(); | 396 sync_service_->Initialize(); |
397 } | 397 } |
398 | 398 |
399 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 399 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
400 CreateSyncService(ProfileSyncService::MANUAL_START); | 400 CreateSyncService(ProfileSyncService::MANUAL_START); |
401 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 401 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
402 sync_service_->SetFirstSetupComplete(); | 402 sync_service_->SetFirstSetupComplete(); |
403 SetUpSyncEngine(); | 403 SetUpSyncEngine(); |
404 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 404 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
405 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 405 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
406 EXPECT_CALL(*data_type_manager, state()) | 406 EXPECT_CALL(*data_type_manager, state()) |
407 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 407 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 408 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
409 IssueTestTokens(account_id); | 409 IssueTestTokens(account_id); |
410 sync_service_->Initialize(); | 410 sync_service_->Initialize(); |
411 EXPECT_TRUE(sync_service_->IsEngineInitialized()); | 411 EXPECT_TRUE(sync_service_->IsEngineInitialized()); |
412 EXPECT_TRUE(sync_service_->IsSyncActive()); | 412 EXPECT_TRUE(sync_service_->IsSyncActive()); |
413 | 413 |
414 // The service should stop when switching to managed mode. | 414 // The service should stop when switching to managed mode. |
415 Mock::VerifyAndClearExpectations(data_type_manager); | 415 Mock::VerifyAndClearExpectations(data_type_manager); |
416 EXPECT_CALL(*data_type_manager, state()) | 416 EXPECT_CALL(*data_type_manager, state()) |
417 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 417 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
418 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 418 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
(...skipping 23 matching lines...) Expand all Loading... |
442 EXPECT_CALL(*data_type_manager, Configure(_, _)) | 442 EXPECT_CALL(*data_type_manager, Configure(_, _)) |
443 .WillRepeatedly( | 443 .WillRepeatedly( |
444 DoAll(InvokeOnConfigureStart(sync_service_.get()), | 444 DoAll(InvokeOnConfigureStart(sync_service_.get()), |
445 InvokeOnConfigureDone( | 445 InvokeOnConfigureDone( |
446 sync_service_.get(), | 446 sync_service_.get(), |
447 base::Bind(&ProfileSyncServiceStartupTest::SetError, | 447 base::Bind(&ProfileSyncServiceStartupTest::SetError, |
448 base::Unretained(this)), | 448 base::Unretained(this)), |
449 result))); | 449 result))); |
450 EXPECT_CALL(*data_type_manager, state()) | 450 EXPECT_CALL(*data_type_manager, state()) |
451 .WillOnce(Return(DataTypeManager::STOPPED)); | 451 .WillOnce(Return(DataTypeManager::STOPPED)); |
452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 452 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
453 IssueTestTokens(account_id); | 453 IssueTestTokens(account_id); |
454 sync_service_->Initialize(); | 454 sync_service_->Initialize(); |
455 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); | 455 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); |
456 } | 456 } |
457 | 457 |
458 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 458 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
459 // Pre load the tokens | 459 // Pre load the tokens |
460 CreateSyncService(ProfileSyncService::MANUAL_START); | 460 CreateSyncService(ProfileSyncService::MANUAL_START); |
461 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 461 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
462 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); | 462 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); |
463 mock_sbh->set_fail_initial_download(true); | 463 mock_sbh->set_fail_initial_download(true); |
464 | 464 |
465 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 465 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
466 | 466 |
467 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 467 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
468 sync_service_->Initialize(); | 468 sync_service_->Initialize(); |
469 | 469 |
470 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 470 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
471 IssueTestTokens(account_id); | 471 IssueTestTokens(account_id); |
472 sync_blocker.reset(); | 472 sync_blocker.reset(); |
473 EXPECT_FALSE(sync_service_->IsSyncActive()); | 473 EXPECT_FALSE(sync_service_->IsSyncActive()); |
474 } | 474 } |
475 | 475 |
476 } // namespace browser_sync | 476 } // namespace browser_sync |
OLD | NEW |