Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2320)

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc

Issue 1081413003: [Sync] Have configuration specify which datatypes are ready to sync (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix components_unittests Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host_impl.cc ('k') | chrome/browser/sync/glue/sync_backend_host_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698