OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/sync/glue/sync_backend_host_impl.h" | 5 #include "chrome/browser/sync/glue/sync_backend_host_impl.h" |
6 | 6 |
7 #include <cstddef> | 7 #include <cstddef> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 credentials_.scope_set.insert(GaiaConstants::kChromeSyncOAuth2Scope); | 169 credentials_.scope_set.insert(GaiaConstants::kChromeSyncOAuth2Scope); |
170 | 170 |
171 fake_manager_factory_.reset(new FakeSyncManagerFactory(&fake_manager_)); | 171 fake_manager_factory_.reset(new FakeSyncManagerFactory(&fake_manager_)); |
172 | 172 |
173 // These types are always implicitly enabled. | 173 // These types are always implicitly enabled. |
174 enabled_types_.PutAll(syncer::ControlTypes()); | 174 enabled_types_.PutAll(syncer::ControlTypes()); |
175 | 175 |
176 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend | 176 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend |
177 // Registrar removing them if it can't find their model workers. | 177 // Registrar removing them if it can't find their model workers. |
178 enabled_types_.Put(syncer::BOOKMARKS); | 178 enabled_types_.Put(syncer::BOOKMARKS); |
179 enabled_types_.Put(syncer::NIGORI); | |
180 enabled_types_.Put(syncer::DEVICE_INFO); | |
181 enabled_types_.Put(syncer::PREFERENCES); | 179 enabled_types_.Put(syncer::PREFERENCES); |
182 enabled_types_.Put(syncer::SESSIONS); | 180 enabled_types_.Put(syncer::SESSIONS); |
183 enabled_types_.Put(syncer::SEARCH_ENGINES); | 181 enabled_types_.Put(syncer::SEARCH_ENGINES); |
184 enabled_types_.Put(syncer::AUTOFILL); | 182 enabled_types_.Put(syncer::AUTOFILL); |
185 enabled_types_.Put(syncer::EXPERIMENTS); | |
186 | 183 |
187 network_resources_.reset(new syncer::HttpBridgeNetworkResources()); | 184 network_resources_.reset(new syncer::HttpBridgeNetworkResources()); |
188 } | 185 } |
189 | 186 |
190 virtual void TearDown() override { | 187 virtual void TearDown() override { |
191 if (backend_) { | 188 if (backend_) { |
192 backend_->StopSyncingForShutdown(); | 189 backend_->StopSyncingForShutdown(); |
193 backend_->Shutdown(syncer::STOP_SYNC); | 190 backend_->Shutdown(syncer::STOP_SYNC); |
194 } | 191 } |
195 backend_.reset(); | 192 backend_.reset(); |
(...skipping 28 matching lines...) Expand all Loading... |
224 run_loop.QuitClosure(), | 221 run_loop.QuitClosure(), |
225 TestTimeouts::action_timeout()); | 222 TestTimeouts::action_timeout()); |
226 run_loop.Run(); | 223 run_loop.Run(); |
227 // |fake_manager_factory_|'s fake_manager() is set on the sync | 224 // |fake_manager_factory_|'s fake_manager() is set on the sync |
228 // thread, but we can rely on the message loop barriers to | 225 // thread, but we can rely on the message loop barriers to |
229 // guarantee that we see the updated value. | 226 // guarantee that we see the updated value. |
230 DCHECK(fake_manager_); | 227 DCHECK(fake_manager_); |
231 } | 228 } |
232 | 229 |
233 // Synchronously configures the backend's datatypes. | 230 // Synchronously configures the backend's datatypes. |
234 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, | 231 syncer::ModelTypeSet ConfigureDataTypes( |
235 syncer::ModelTypeSet types_to_remove, | 232 syncer::ModelTypeSet types_to_add, |
236 syncer::ModelTypeSet types_to_unapply) { | 233 syncer::ModelTypeSet types_to_remove, |
| 234 syncer::ModelTypeSet types_to_unapply) { |
237 sync_driver::BackendDataTypeConfigurer::DataTypeConfigStateMap | 235 sync_driver::BackendDataTypeConfigurer::DataTypeConfigStateMap |
238 config_state_map; | 236 config_state_map; |
239 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( | 237 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( |
240 sync_driver::BackendDataTypeConfigurer::CONFIGURE_ACTIVE, | 238 sync_driver::BackendDataTypeConfigurer::CONFIGURE_ACTIVE, |
241 types_to_add, | 239 types_to_add, |
242 &config_state_map); | 240 &config_state_map); |
243 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( | 241 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( |
244 sync_driver::BackendDataTypeConfigurer::DISABLED, | 242 sync_driver::BackendDataTypeConfigurer::DISABLED, |
245 types_to_remove, &config_state_map); | 243 types_to_remove, &config_state_map); |
246 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( | 244 sync_driver::BackendDataTypeConfigurer::SetDataTypesState( |
247 sync_driver::BackendDataTypeConfigurer::UNREADY, | 245 sync_driver::BackendDataTypeConfigurer::UNREADY, |
248 types_to_unapply, &config_state_map); | 246 types_to_unapply, &config_state_map); |
249 | 247 |
250 types_to_add.PutAll(syncer::ControlTypes()); | 248 types_to_add.PutAll(syncer::ControlTypes()); |
251 backend_->ConfigureDataTypes( | 249 syncer::ModelTypeSet ready_types = backend_->ConfigureDataTypes( |
252 syncer::CONFIGURE_REASON_RECONFIGURATION, | 250 syncer::CONFIGURE_REASON_RECONFIGURATION, config_state_map, |
253 config_state_map, | 251 base::Bind(&SyncBackendHostTest::DownloadReady, base::Unretained(this)), |
254 base::Bind(&SyncBackendHostTest::DownloadReady, | |
255 base::Unretained(this)), | |
256 base::Bind(&SyncBackendHostTest::OnDownloadRetry, | 252 base::Bind(&SyncBackendHostTest::OnDownloadRetry, |
257 base::Unretained(this))); | 253 base::Unretained(this))); |
258 base::RunLoop run_loop; | 254 base::RunLoop run_loop; |
259 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE, | 255 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE, |
260 run_loop.QuitClosure(), | 256 run_loop.QuitClosure(), |
261 TestTimeouts::action_timeout()); | 257 TestTimeouts::action_timeout()); |
262 run_loop.Run(); | 258 run_loop.Run(); |
| 259 return ready_types; |
263 } | 260 } |
264 | 261 |
265 void IssueRefreshRequest(syncer::ModelTypeSet types) { | 262 void IssueRefreshRequest(syncer::ModelTypeSet types) { |
266 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 263 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
267 | 264 |
268 content::NotificationService::current()->Notify( | 265 content::NotificationService::current()->Notify( |
269 chrome::NOTIFICATION_SYNC_REFRESH_LOCAL, | 266 chrome::NOTIFICATION_SYNC_REFRESH_LOCAL, |
270 content::Source<Profile>(profile_), | 267 content::Source<Profile>(profile_), |
271 content::Details<syncer::ModelTypeSet>(&types)); | 268 content::Details<syncer::ModelTypeSet>(&types)); |
272 } | 269 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 // Test first time sync scenario. All types should be properly configured. | 306 // Test first time sync scenario. All types should be properly configured. |
310 TEST_F(SyncBackendHostTest, FirstTimeSync) { | 307 TEST_F(SyncBackendHostTest, FirstTimeSync) { |
311 InitializeBackend(true); | 308 InitializeBackend(true); |
312 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 309 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
313 syncer::ControlTypes())); | 310 syncer::ControlTypes())); |
314 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 311 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
315 syncer::ControlTypes())); | 312 syncer::ControlTypes())); |
316 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 313 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
317 syncer::ControlTypes()).Empty()); | 314 syncer::ControlTypes()).Empty()); |
318 | 315 |
319 ConfigureDataTypes(enabled_types_, | 316 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
320 Difference(syncer::ModelTypeSet::All(), | 317 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
321 enabled_types_), | 318 syncer::ModelTypeSet()); |
322 syncer::ModelTypeSet()); | 319 // Nigori is always downloaded so won't be ready. |
| 320 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 321 syncer::ControlTypes(), |
| 322 syncer::ModelTypeSet(syncer::NIGORI)))); |
323 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 323 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
324 Difference(enabled_types_, syncer::ControlTypes()))); | 324 Difference(enabled_types_, syncer::ControlTypes()))); |
325 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 325 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
326 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 326 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
327 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 327 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
328 enabled_types_).Empty()); | 328 enabled_types_).Empty()); |
329 } | 329 } |
330 | 330 |
331 // Test the restart after setting up sync scenario. No enabled types should be | 331 // Test the restart after setting up sync scenario. No enabled types should be |
332 // downloaded or cleaned. | 332 // downloaded or cleaned. |
333 TEST_F(SyncBackendHostTest, Restart) { | 333 TEST_F(SyncBackendHostTest, Restart) { |
334 sync_prefs_->SetSyncSetupCompleted(); | 334 sync_prefs_->SetSyncSetupCompleted(); |
335 syncer::ModelTypeSet all_but_nigori = enabled_types_; | 335 syncer::ModelTypeSet all_but_nigori = enabled_types_; |
336 fake_manager_factory_->set_progress_marker_types(enabled_types_); | 336 fake_manager_factory_->set_progress_marker_types(enabled_types_); |
337 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_); | 337 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_); |
338 InitializeBackend(true); | 338 InitializeBackend(true); |
339 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 339 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
340 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 340 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
341 enabled_types_).Empty()); | 341 enabled_types_).Empty()); |
342 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 342 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
343 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 343 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
344 enabled_types_).Empty()); | 344 enabled_types_).Empty()); |
345 | 345 |
346 ConfigureDataTypes(enabled_types_, | 346 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
347 Difference(syncer::ModelTypeSet::All(), | 347 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
348 enabled_types_), | 348 syncer::ModelTypeSet()); |
349 syncer::ModelTypeSet()); | 349 EXPECT_TRUE(ready_types.Equals(enabled_types_)); |
350 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 350 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
351 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 351 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
352 enabled_types_).Empty()); | 352 enabled_types_).Empty()); |
353 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 353 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
354 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 354 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
355 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 355 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
356 enabled_types_).Empty()); | 356 enabled_types_).Empty()); |
357 } | 357 } |
358 | 358 |
359 // Test a sync restart scenario where some types had never finished configuring. | 359 // Test a sync restart scenario where some types had never finished configuring. |
(...skipping 14 matching lines...) Expand all Loading... |
374 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 374 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
375 syncer::ModelTypeSet(syncer::NIGORI))); | 375 syncer::ModelTypeSet(syncer::NIGORI))); |
376 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); | 376 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
377 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 377 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
378 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 378 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
379 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 379 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
380 enabled_types_).Equals( | 380 enabled_types_).Equals( |
381 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 381 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
382 | 382 |
383 // Now do the actual configuration, which should download and apply bookmarks. | 383 // Now do the actual configuration, which should download and apply bookmarks. |
384 ConfigureDataTypes(enabled_types_, | 384 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
385 Difference(syncer::ModelTypeSet::All(), | 385 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
386 enabled_types_), | 386 syncer::ModelTypeSet()); |
387 syncer::ModelTypeSet()); | 387 EXPECT_TRUE(ready_types.Equals(full_types)); |
388 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 388 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
389 enabled_types_).Empty()); | 389 enabled_types_).Empty()); |
390 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 390 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
391 partial_types)); | 391 partial_types)); |
392 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 392 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
393 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 393 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
394 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 394 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
395 enabled_types_).Empty()); | 395 enabled_types_).Empty()); |
396 } | 396 } |
397 | 397 |
(...skipping 10 matching lines...) Expand all Loading... |
408 syncer::ModelTypeSet(syncer::ControlTypes()))); | 408 syncer::ModelTypeSet(syncer::ControlTypes()))); |
409 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 409 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
410 enabled_types_).Equals( | 410 enabled_types_).Equals( |
411 Difference(enabled_types_, syncer::ControlTypes()))); | 411 Difference(enabled_types_, syncer::ControlTypes()))); |
412 | 412 |
413 // The database was empty, so any cleaning is entirely optional. We want to | 413 // The database was empty, so any cleaning is entirely optional. We want to |
414 // reset this value before running the next part of the test, though. | 414 // reset this value before running the next part of the test, though. |
415 fake_manager_->GetAndResetCleanedTypes(); | 415 fake_manager_->GetAndResetCleanedTypes(); |
416 | 416 |
417 // The actual configuration should redownload and apply all the enabled types. | 417 // The actual configuration should redownload and apply all the enabled types. |
418 ConfigureDataTypes(enabled_types_, | 418 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
419 Difference(syncer::ModelTypeSet::All(), | 419 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
420 enabled_types_), | 420 syncer::ModelTypeSet()); |
421 syncer::ModelTypeSet()); | 421 // Nigori is always downloaded so won't be ready. |
| 422 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 423 syncer::ControlTypes(), |
| 424 syncer::ModelTypeSet(syncer::NIGORI)))); |
422 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 425 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
423 Difference(enabled_types_, syncer::ControlTypes()))); | 426 Difference(enabled_types_, syncer::ControlTypes()))); |
424 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 427 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
425 enabled_types_).Empty()); | 428 enabled_types_).Empty()); |
426 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 429 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
427 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 430 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
428 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 431 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
429 enabled_types_).Empty()); | 432 enabled_types_).Empty()); |
430 } | 433 } |
431 | 434 |
432 TEST_F(SyncBackendHostTest, DisableTypes) { | 435 TEST_F(SyncBackendHostTest, DisableTypes) { |
433 // Simulate first time sync. | 436 // Simulate first time sync. |
434 InitializeBackend(true); | 437 InitializeBackend(true); |
435 fake_manager_->GetAndResetCleanedTypes(); | 438 fake_manager_->GetAndResetCleanedTypes(); |
436 ConfigureDataTypes(enabled_types_, | 439 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
437 Difference(syncer::ModelTypeSet::All(), | 440 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
438 enabled_types_), | 441 syncer::ModelTypeSet()); |
439 syncer::ModelTypeSet()); | 442 // Nigori is always downloaded so won't be ready. |
| 443 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 444 syncer::ControlTypes(), |
| 445 syncer::ModelTypeSet(syncer::NIGORI)))); |
440 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 446 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
441 enabled_types_)); | 447 enabled_types_)); |
442 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 448 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
443 enabled_types_).Empty()); | 449 enabled_types_).Empty()); |
444 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 450 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
445 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 451 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
446 enabled_types_).Empty()); | 452 enabled_types_).Empty()); |
447 | 453 |
448 // Then disable two datatypes. | 454 // Then disable two datatypes. |
449 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 455 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
450 syncer::SEARCH_ENGINES); | 456 syncer::SEARCH_ENGINES); |
451 syncer::ModelTypeSet old_types = enabled_types_; | 457 syncer::ModelTypeSet old_types = enabled_types_; |
452 enabled_types_.RemoveAll(disabled_types); | 458 enabled_types_.RemoveAll(disabled_types); |
453 ConfigureDataTypes(enabled_types_, | 459 ready_types = ConfigureDataTypes( |
454 Difference(syncer::ModelTypeSet::All(), | 460 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
455 enabled_types_), | 461 syncer::ModelTypeSet()); |
456 syncer::ModelTypeSet()); | |
457 | 462 |
458 // Only those datatypes disabled should be cleaned. Nothing should be | 463 // Only those datatypes disabled should be cleaned. Nothing should be |
459 // downloaded. | 464 // downloaded. |
| 465 EXPECT_TRUE(ready_types.Equals(enabled_types_)); |
460 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 466 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
461 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 467 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
462 old_types).Equals(disabled_types)); | 468 old_types).Equals(disabled_types)); |
463 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 469 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
464 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 470 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
465 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 471 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
466 enabled_types_).Empty()); | 472 enabled_types_).Empty()); |
467 } | 473 } |
468 | 474 |
469 TEST_F(SyncBackendHostTest, AddTypes) { | 475 TEST_F(SyncBackendHostTest, AddTypes) { |
470 // Simulate first time sync. | 476 // Simulate first time sync. |
471 InitializeBackend(true); | 477 InitializeBackend(true); |
472 fake_manager_->GetAndResetCleanedTypes(); | 478 fake_manager_->GetAndResetCleanedTypes(); |
473 ConfigureDataTypes(enabled_types_, | 479 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
474 Difference(syncer::ModelTypeSet::All(), | 480 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
475 enabled_types_), | 481 syncer::ModelTypeSet()); |
476 syncer::ModelTypeSet()); | 482 // Nigori is always downloaded so won't be ready. |
| 483 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 484 syncer::ControlTypes(), |
| 485 syncer::ModelTypeSet(syncer::NIGORI)))); |
477 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 486 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
478 enabled_types_)); | 487 enabled_types_)); |
479 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 488 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
480 enabled_types_).Empty()); | 489 enabled_types_).Empty()); |
481 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 490 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
482 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 491 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
483 enabled_types_).Empty()); | 492 enabled_types_).Empty()); |
484 | 493 |
485 // Then add two datatypes. | 494 // Then add two datatypes. |
486 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 495 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
487 syncer::APPS); | 496 syncer::APPS); |
488 enabled_types_.PutAll(new_types); | 497 enabled_types_.PutAll(new_types); |
489 ConfigureDataTypes(enabled_types_, | 498 ready_types = ConfigureDataTypes( |
490 Difference(syncer::ModelTypeSet::All(), | 499 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
491 enabled_types_), | 500 syncer::ModelTypeSet()); |
492 syncer::ModelTypeSet()); | |
493 | 501 |
494 // Only those datatypes added should be downloaded (plus nigori). Nothing | 502 // Only those datatypes added should be downloaded (plus nigori). Nothing |
495 // should be cleaned aside from the disabled types. | 503 // should be cleaned aside from the disabled types. |
496 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 504 new_types.Put(syncer::NIGORI); |
497 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 505 EXPECT_TRUE( |
| 506 ready_types.Equals(syncer::Difference(enabled_types_, new_types))); |
| 507 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
498 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 508 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
499 enabled_types_).Empty()); | 509 enabled_types_).Empty()); |
500 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 510 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
501 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 511 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
502 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 512 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
503 enabled_types_).Empty()); | 513 enabled_types_).Empty()); |
504 } | 514 } |
505 | 515 |
506 // And and disable in the same configuration. | 516 // And and disable in the same configuration. |
507 TEST_F(SyncBackendHostTest, AddDisableTypes) { | 517 TEST_F(SyncBackendHostTest, AddDisableTypes) { |
508 // Simulate first time sync. | 518 // Simulate first time sync. |
509 InitializeBackend(true); | 519 InitializeBackend(true); |
510 fake_manager_->GetAndResetCleanedTypes(); | 520 fake_manager_->GetAndResetCleanedTypes(); |
511 ConfigureDataTypes(enabled_types_, | 521 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
512 Difference(syncer::ModelTypeSet::All(), | 522 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
513 enabled_types_), | 523 syncer::ModelTypeSet()); |
514 syncer::ModelTypeSet()); | 524 // Nigori is always downloaded so won't be ready. |
| 525 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 526 syncer::ControlTypes(), |
| 527 syncer::ModelTypeSet(syncer::NIGORI)))); |
515 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 528 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
516 enabled_types_)); | 529 enabled_types_)); |
517 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 530 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
518 enabled_types_).Empty()); | 531 enabled_types_).Empty()); |
519 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 532 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
520 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 533 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
521 enabled_types_).Empty()); | 534 enabled_types_).Empty()); |
522 | 535 |
523 // Then add two datatypes. | 536 // Then add two datatypes. |
524 syncer::ModelTypeSet old_types = enabled_types_; | 537 syncer::ModelTypeSet old_types = enabled_types_; |
525 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 538 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
526 syncer::SEARCH_ENGINES); | 539 syncer::SEARCH_ENGINES); |
527 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 540 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
528 syncer::APPS); | 541 syncer::APPS); |
529 enabled_types_.PutAll(new_types); | 542 enabled_types_.PutAll(new_types); |
530 enabled_types_.RemoveAll(disabled_types); | 543 enabled_types_.RemoveAll(disabled_types); |
531 ConfigureDataTypes(enabled_types_, | 544 ready_types = ConfigureDataTypes( |
532 Difference(syncer::ModelTypeSet::All(), | 545 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
533 enabled_types_), | 546 syncer::ModelTypeSet()); |
534 syncer::ModelTypeSet()); | |
535 | 547 |
536 // Only those datatypes added should be downloaded (plus nigori). Nothing | 548 // Only those datatypes added should be downloaded (plus nigori). Nothing |
537 // should be cleaned aside from the disabled types. | 549 // should be cleaned aside from the disabled types. |
538 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 550 new_types.Put(syncer::NIGORI); |
539 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 551 EXPECT_TRUE( |
| 552 ready_types.Equals(syncer::Difference(enabled_types_, new_types))); |
| 553 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
540 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 554 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
541 old_types).Equals(disabled_types)); | 555 old_types).Equals(disabled_types)); |
542 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 556 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
543 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 557 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
544 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 558 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
545 old_types).Equals(disabled_types)); | 559 old_types).Equals(disabled_types)); |
546 } | 560 } |
547 | 561 |
548 // Test restarting the browser to newly supported datatypes. The new datatypes | 562 // Test restarting the browser to newly supported datatypes. The new datatypes |
549 // should be downloaded on the configuration after backend initialization. | 563 // should be downloaded on the configuration after backend initialization. |
(...skipping 10 matching lines...) Expand all Loading... |
560 | 574 |
561 // Does nothing. | 575 // Does nothing. |
562 InitializeBackend(true); | 576 InitializeBackend(true); |
563 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 577 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
564 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 578 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
565 old_types).Empty()); | 579 old_types).Empty()); |
566 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); | 580 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); |
567 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 581 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
568 enabled_types_).Equals(new_types)); | 582 enabled_types_).Equals(new_types)); |
569 | 583 |
570 // Downloads and applies the new types. | 584 // Downloads and applies the new types (plus nigori). |
571 ConfigureDataTypes(enabled_types_, | 585 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
572 Difference(syncer::ModelTypeSet::All(), | 586 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
573 enabled_types_), | 587 syncer::ModelTypeSet()); |
574 syncer::ModelTypeSet()); | 588 |
575 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 589 new_types.Put(syncer::NIGORI); |
576 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 590 EXPECT_TRUE(ready_types.Equals( |
| 591 syncer::Difference(old_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 592 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
577 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 593 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
578 enabled_types_).Empty()); | 594 enabled_types_).Empty()); |
579 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 595 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
580 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 596 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
581 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 597 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
582 enabled_types_).Empty()); | 598 enabled_types_).Empty()); |
583 } | 599 } |
584 | 600 |
585 // Test the newly supported types scenario, but with the presence of partial | 601 // Test the newly supported types scenario, but with the presence of partial |
586 // types as well. Both partial and newly supported types should be downloaded | 602 // types as well. Both partial and newly supported types should be downloaded |
(...skipping 19 matching lines...) Expand all Loading... |
606 syncer::ModelTypeSet(syncer::NIGORI))); | 622 syncer::ModelTypeSet(syncer::NIGORI))); |
607 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); | 623 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
608 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 624 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
609 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 625 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
610 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 626 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
611 enabled_types_).Equals(Union(new_types, Difference( | 627 enabled_types_).Equals(Union(new_types, Difference( |
612 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); | 628 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); |
613 | 629 |
614 // Downloads and applies the new types and partial types (which includes | 630 // Downloads and applies the new types and partial types (which includes |
615 // nigori anyways). | 631 // nigori anyways). |
616 ConfigureDataTypes(enabled_types_, | 632 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
617 Difference(syncer::ModelTypeSet::All(), | 633 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
618 enabled_types_), | 634 syncer::ModelTypeSet()); |
619 syncer::ModelTypeSet()); | 635 EXPECT_TRUE(ready_types.Equals(full_types)); |
620 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 636 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
621 Union(new_types, partial_types))); | 637 Union(new_types, partial_types))); |
622 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 638 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
623 enabled_types_).Empty()); | 639 enabled_types_).Empty()); |
624 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 640 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
625 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 641 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
626 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 642 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
627 enabled_types_).Empty()); | 643 enabled_types_).Empty()); |
628 } | 644 } |
629 | 645 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 // If bookmarks encounter an error that results in disabling without purging | 756 // If bookmarks encounter an error that results in disabling without purging |
741 // (such as when the type is unready), and then is explicitly disabled, the | 757 // (such as when the type is unready), and then is explicitly disabled, the |
742 // SyncBackendHost needs to tell the manager to purge the type, even though | 758 // SyncBackendHost needs to tell the manager to purge the type, even though |
743 // it's already disabled (crbug.com/386778). | 759 // it's already disabled (crbug.com/386778). |
744 TEST_F(SyncBackendHostTest, DisableThenPurgeType) { | 760 TEST_F(SyncBackendHostTest, DisableThenPurgeType) { |
745 syncer::ModelTypeSet error_types(syncer::BOOKMARKS); | 761 syncer::ModelTypeSet error_types(syncer::BOOKMARKS); |
746 | 762 |
747 InitializeBackend(true); | 763 InitializeBackend(true); |
748 | 764 |
749 // First enable the types. | 765 // First enable the types. |
750 ConfigureDataTypes(enabled_types_, | 766 syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
751 Difference(syncer::ModelTypeSet::All(), | 767 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
752 enabled_types_), | 768 syncer::ModelTypeSet()); |
753 syncer::ModelTypeSet()); | 769 |
| 770 // Nigori is always downloaded so won't be ready. |
| 771 EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
| 772 syncer::ControlTypes(), |
| 773 syncer::ModelTypeSet(syncer::NIGORI)))); |
754 | 774 |
755 // Then mark the error types as unready (disables without purging). | 775 // Then mark the error types as unready (disables without purging). |
756 ConfigureDataTypes(enabled_types_, | 776 ready_types = ConfigureDataTypes( |
757 Difference(syncer::ModelTypeSet::All(), | 777 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
758 enabled_types_), | 778 error_types); |
759 error_types); | 779 EXPECT_TRUE( |
| 780 ready_types.Equals(syncer::Difference(enabled_types_, error_types))); |
760 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 781 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
761 error_types).Empty()); | 782 error_types).Empty()); |
762 | 783 |
763 // Lastly explicitly disable the error types, which should result in a purge. | 784 // Lastly explicitly disable the error types, which should result in a purge. |
764 enabled_types_.RemoveAll(error_types); | 785 enabled_types_.RemoveAll(error_types); |
765 ConfigureDataTypes(enabled_types_, | 786 ready_types = ConfigureDataTypes( |
766 Difference(syncer::ModelTypeSet::All(), | 787 enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
767 enabled_types_), | 788 syncer::ModelTypeSet()); |
768 syncer::ModelTypeSet()); | 789 EXPECT_TRUE( |
| 790 ready_types.Equals(syncer::Difference(enabled_types_, error_types))); |
769 EXPECT_FALSE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 791 EXPECT_FALSE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
770 error_types).Empty()); | 792 error_types).Empty()); |
771 } | 793 } |
772 | 794 |
773 } // namespace | 795 } // namespace |
774 | 796 |
775 } // namespace browser_sync | 797 } // namespace browser_sync |
OLD | NEW |