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

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

Issue 10817023: [Sync] Pass the correct set of enabled types to the sync notifier (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 5 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 | Annotate | Revision Log
OLDNEW
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 "chrome/browser/sync/glue/sync_backend_host.h" 5 #include "chrome/browser/sync/glue/sync_backend_host.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 }; 209 };
210 210
211 // Test basic initialization with no initial types (first time initialization). 211 // Test basic initialization with no initial types (first time initialization).
212 // Only the nigori should be configured. 212 // Only the nigori should be configured.
213 TEST_F(SyncBackendHostTest, InitShutdown) { 213 TEST_F(SyncBackendHostTest, InitShutdown) {
214 InitializeBackend(syncer::ModelTypeSet()); 214 InitializeBackend(syncer::ModelTypeSet());
215 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 215 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
216 syncer::ModelTypeSet(syncer::NIGORI))); 216 syncer::ModelTypeSet(syncer::NIGORI)));
217 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 217 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
218 syncer::ModelTypeSet(syncer::NIGORI))); 218 syncer::ModelTypeSet(syncer::NIGORI)));
219 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(
220 syncer::ModelTypeSet(syncer::NIGORI)));
219 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 221 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
220 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); 222 syncer::ModelTypeSet(syncer::NIGORI)).Empty());
221 } 223 }
222 224
223 // Test first time sync scenario. All types should be properly configured. 225 // Test first time sync scenario. All types should be properly configured.
224 TEST_F(SyncBackendHostTest, FirstTimeSync) { 226 TEST_F(SyncBackendHostTest, FirstTimeSync) {
225 InitializeBackend(syncer::ModelTypeSet()); 227 InitializeBackend(syncer::ModelTypeSet());
226 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 228 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
227 syncer::ModelTypeSet(syncer::NIGORI))); 229 syncer::ModelTypeSet(syncer::NIGORI)));
228 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 230 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
229 syncer::ModelTypeSet(syncer::NIGORI))); 231 syncer::ModelTypeSet(syncer::NIGORI)));
232 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(
233 syncer::ModelTypeSet(syncer::NIGORI)));
230 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 234 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
231 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); 235 syncer::ModelTypeSet(syncer::NIGORI)).Empty());
232 236
233 ConfigureDataTypes(enabled_types_, 237 ConfigureDataTypes(enabled_types_,
234 Difference(syncer::ModelTypeSet::All(), 238 Difference(syncer::ModelTypeSet::All(),
235 enabled_types_), 239 enabled_types_),
236 BackendDataTypeConfigurer::WITH_NIGORI); 240 BackendDataTypeConfigurer::WITH_NIGORI);
237 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 241 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
238 enabled_types_)); 242 enabled_types_));
239 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 243 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
244 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
240 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 245 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
241 enabled_types_).Empty()); 246 enabled_types_).Empty());
242 } 247 }
243 248
244 // Test the restart after setting up sync scenario. No enabled types should be 249 // Test the restart after setting up sync scenario. No enabled types should be
245 // downloaded or cleaned. 250 // downloaded or cleaned.
246 TEST_F(SyncBackendHostTest, Restart) { 251 TEST_F(SyncBackendHostTest, Restart) {
247 sync_prefs_->SetSyncSetupCompleted(); 252 sync_prefs_->SetSyncSetupCompleted();
248 syncer::ModelTypeSet all_but_nigori = enabled_types_; 253 syncer::ModelTypeSet all_but_nigori = enabled_types_;
249 fake_manager_->set_progress_marker_types( 254 fake_manager_->set_progress_marker_types(enabled_types_);
250 enabled_types_);
251 fake_manager_->set_initial_sync_ended_types(enabled_types_); 255 fake_manager_->set_initial_sync_ended_types(enabled_types_);
252 InitializeBackend(enabled_types_); 256 InitializeBackend(enabled_types_);
253 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 257 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
254 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 258 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
255 enabled_types_).Empty()); 259 enabled_types_).Empty());
256 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 260 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
261 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty());
257 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 262 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
258 enabled_types_).Empty()); 263 enabled_types_).Empty());
259 264
260 ConfigureDataTypes(enabled_types_, 265 ConfigureDataTypes(enabled_types_,
261 Difference(syncer::ModelTypeSet::All(), 266 Difference(syncer::ModelTypeSet::All(),
262 enabled_types_), 267 enabled_types_),
263 BackendDataTypeConfigurer::WITH_NIGORI); 268 BackendDataTypeConfigurer::WITH_NIGORI);
264 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 269 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
265 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 270 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
266 enabled_types_).Empty()); 271 enabled_types_).Empty());
267 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 272 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
273 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
268 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 274 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
269 enabled_types_).Empty()); 275 enabled_types_).Empty());
270 } 276 }
271 277
272 // Test a sync restart scenario where some types had never finished configuring. 278 // Test a sync restart scenario where some types had never finished configuring.
273 // The partial types should be purged, then reconfigured properly. 279 // The partial types should be purged, then reconfigured properly.
274 TEST_F(SyncBackendHostTest, PartialTypes) { 280 TEST_F(SyncBackendHostTest, PartialTypes) {
275 sync_prefs_->SetSyncSetupCompleted(); 281 sync_prefs_->SetSyncSetupCompleted();
276 // Set sync manager behavior before passing it down. All types have progress 282 // Set sync manager behavior before passing it down. All types have progress
277 // markers, but nigori and bookmarks are missing initial sync ended. 283 // markers, but nigori and bookmarks are missing initial sync ended.
278 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); 284 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS);
279 syncer::ModelTypeSet full_types = 285 syncer::ModelTypeSet full_types =
280 Difference(enabled_types_, partial_types); 286 Difference(enabled_types_, partial_types);
281 fake_manager_->set_progress_marker_types(enabled_types_); 287 fake_manager_->set_progress_marker_types(enabled_types_);
282 fake_manager_->set_initial_sync_ended_types(full_types); 288 fake_manager_->set_initial_sync_ended_types(full_types);
283 289
284 // All partial types should have been purged with nothing downloaded as part 290 // All partial types should have been purged with nothing downloaded as part
285 // of bringing up the backend. 291 // of bringing up the backend.
286 InitializeBackend(enabled_types_); 292 InitializeBackend(enabled_types_);
287 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 293 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
288 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 294 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
289 enabled_types_).Empty()); 295 enabled_types_).Empty());
290 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 296 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
291 full_types)); 297 full_types));
298 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty());
292 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 299 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
293 enabled_types_).Equals(partial_types)); 300 enabled_types_).Equals(partial_types));
294 301
295 // Now do the actual configuration, which should download and apply both 302 // Now do the actual configuration, which should download and apply both
296 // nigori and bookmarks. 303 // nigori and bookmarks.
297 ConfigureDataTypes(enabled_types_, 304 ConfigureDataTypes(enabled_types_,
298 Difference(syncer::ModelTypeSet::All(), 305 Difference(syncer::ModelTypeSet::All(),
299 enabled_types_), 306 enabled_types_),
300 BackendDataTypeConfigurer::WITH_NIGORI); 307 BackendDataTypeConfigurer::WITH_NIGORI);
301 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 308 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
302 enabled_types_).Empty()); 309 enabled_types_).Empty());
303 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 310 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
304 partial_types)); 311 partial_types));
305 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 312 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
313 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
306 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 314 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
307 enabled_types_).Empty()); 315 enabled_types_).Empty());
308 } 316 }
309 317
310 // Test the behavior when we lose the sync db. Although we already have types 318 // Test the behavior when we lose the sync db. Although we already have types
311 // enabled, we should re-download all of them because we lost their data. 319 // enabled, we should re-download all of them because we lost their data.
312 TEST_F(SyncBackendHostTest, LostDB) { 320 TEST_F(SyncBackendHostTest, LostDB) {
313 sync_prefs_->SetSyncSetupCompleted(); 321 sync_prefs_->SetSyncSetupCompleted();
314 // Don't set any progress marker or initial_sync_ended types before 322 // Don't set any progress marker or initial_sync_ended types before
315 // initializing. Initialization should not affect the datatypes. 323 // initializing. Initialization should not affect the datatypes.
316 InitializeBackend(enabled_types_); 324 InitializeBackend(enabled_types_);
317 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 325 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
318 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 326 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
319 enabled_types_).Empty()); 327 enabled_types_).Empty());
320 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Empty()); 328 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Empty());
329 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty());
321 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 330 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
322 enabled_types_).Equals(enabled_types_)); 331 enabled_types_).Equals(enabled_types_));
323 332
324 // The actual configuration should redownload and apply all the enabled types. 333 // The actual configuration should redownload and apply all the enabled types.
325 ConfigureDataTypes(enabled_types_, 334 ConfigureDataTypes(enabled_types_,
326 Difference(syncer::ModelTypeSet::All(), 335 Difference(syncer::ModelTypeSet::All(),
327 enabled_types_), 336 enabled_types_),
328 BackendDataTypeConfigurer::WITH_NIGORI); 337 BackendDataTypeConfigurer::WITH_NIGORI);
329 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 338 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
330 enabled_types_)); 339 enabled_types_));
331 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 340 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
332 enabled_types_).Empty()); 341 enabled_types_).Empty());
333 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 342 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
343 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
334 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 344 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
335 enabled_types_).Empty()); 345 enabled_types_).Empty());
336 } 346 }
337 347
338 TEST_F(SyncBackendHostTest, DisableTypes) { 348 TEST_F(SyncBackendHostTest, DisableTypes) {
339 // Simulate first time sync. 349 // Simulate first time sync.
340 InitializeBackend(syncer::ModelTypeSet()); 350 InitializeBackend(syncer::ModelTypeSet());
341 fake_manager_->GetAndResetCleanedTypes(); 351 fake_manager_->GetAndResetCleanedTypes();
342 ConfigureDataTypes(enabled_types_, 352 ConfigureDataTypes(enabled_types_,
343 Difference(syncer::ModelTypeSet::All(), 353 Difference(syncer::ModelTypeSet::All(),
344 enabled_types_), 354 enabled_types_),
345 BackendDataTypeConfigurer::WITH_NIGORI); 355 BackendDataTypeConfigurer::WITH_NIGORI);
346 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 356 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
347 enabled_types_)); 357 enabled_types_));
348 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 358 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
349 enabled_types_).Empty()); 359 enabled_types_).Empty());
350 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 360 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
361 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
351 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 362 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
352 enabled_types_).Empty()); 363 enabled_types_).Empty());
353 364
354 // Then disable two datatypes. 365 // Then disable two datatypes.
355 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, 366 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS,
356 syncer::SEARCH_ENGINES); 367 syncer::SEARCH_ENGINES);
357 syncer::ModelTypeSet old_types = enabled_types_; 368 syncer::ModelTypeSet old_types = enabled_types_;
358 enabled_types_.RemoveAll(disabled_types); 369 enabled_types_.RemoveAll(disabled_types);
359 ConfigureDataTypes(enabled_types_, 370 ConfigureDataTypes(enabled_types_,
360 Difference(syncer::ModelTypeSet::All(), 371 Difference(syncer::ModelTypeSet::All(),
361 enabled_types_), 372 enabled_types_),
362 BackendDataTypeConfigurer::WITH_NIGORI); 373 BackendDataTypeConfigurer::WITH_NIGORI);
363 374
364 // Only those datatypes disabled should be cleaned. Nothing should be 375 // Only those datatypes disabled should be cleaned. Nothing should be
365 // downloaded. 376 // downloaded.
366 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 377 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
367 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 378 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
368 old_types).Equals(disabled_types)); 379 old_types).Equals(disabled_types));
369 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 380 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
381 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
370 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 382 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
371 enabled_types_).Empty()); 383 enabled_types_).Empty());
372 } 384 }
373 385
374 TEST_F(SyncBackendHostTest, AddTypes) { 386 TEST_F(SyncBackendHostTest, AddTypes) {
375 // Simulate first time sync. 387 // Simulate first time sync.
376 InitializeBackend(syncer::ModelTypeSet()); 388 InitializeBackend(syncer::ModelTypeSet());
377 fake_manager_->GetAndResetCleanedTypes(); 389 fake_manager_->GetAndResetCleanedTypes();
378 ConfigureDataTypes(enabled_types_, 390 ConfigureDataTypes(enabled_types_,
379 Difference(syncer::ModelTypeSet::All(), 391 Difference(syncer::ModelTypeSet::All(),
380 enabled_types_), 392 enabled_types_),
381 BackendDataTypeConfigurer::WITH_NIGORI); 393 BackendDataTypeConfigurer::WITH_NIGORI);
382 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 394 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
383 enabled_types_)); 395 enabled_types_));
384 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 396 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
385 enabled_types_).Empty()); 397 enabled_types_).Empty());
386 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 398 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
399 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
387 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 400 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
388 enabled_types_).Empty()); 401 enabled_types_).Empty());
389 402
390 // Then add two datatypes. 403 // Then add two datatypes.
391 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, 404 syncer::ModelTypeSet new_types(syncer::EXTENSIONS,
392 syncer::APPS); 405 syncer::APPS);
393 enabled_types_.PutAll(new_types); 406 enabled_types_.PutAll(new_types);
394 ConfigureDataTypes(enabled_types_, 407 ConfigureDataTypes(enabled_types_,
395 Difference(syncer::ModelTypeSet::All(), 408 Difference(syncer::ModelTypeSet::All(),
396 enabled_types_), 409 enabled_types_),
397 BackendDataTypeConfigurer::WITH_NIGORI); 410 BackendDataTypeConfigurer::WITH_NIGORI);
398 411
399 // Only those datatypes added should be downloaded (plus nigori). Nothing 412 // Only those datatypes added should be downloaded (plus nigori). Nothing
400 // should be cleaned aside from the disabled types. 413 // should be cleaned aside from the disabled types.
401 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 414 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
402 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 415 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
403 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 416 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
404 enabled_types_).Empty()); 417 enabled_types_).Empty());
405 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 418 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
419 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
406 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 420 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
407 enabled_types_).Empty()); 421 enabled_types_).Empty());
408 } 422 }
409 423
410 // And and disable in the same configuration. 424 // And and disable in the same configuration.
411 TEST_F(SyncBackendHostTest, AddDisableTypes) { 425 TEST_F(SyncBackendHostTest, AddDisableTypes) {
412 // Simulate first time sync. 426 // Simulate first time sync.
413 InitializeBackend(syncer::ModelTypeSet()); 427 InitializeBackend(syncer::ModelTypeSet());
414 fake_manager_->GetAndResetCleanedTypes(); 428 fake_manager_->GetAndResetCleanedTypes();
415 ConfigureDataTypes(enabled_types_, 429 ConfigureDataTypes(enabled_types_,
416 Difference(syncer::ModelTypeSet::All(), 430 Difference(syncer::ModelTypeSet::All(),
417 enabled_types_), 431 enabled_types_),
418 BackendDataTypeConfigurer::WITH_NIGORI); 432 BackendDataTypeConfigurer::WITH_NIGORI);
419 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 433 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
420 enabled_types_)); 434 enabled_types_));
421 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 435 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
422 enabled_types_).Empty()); 436 enabled_types_).Empty());
423 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 437 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
438 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
424 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 439 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
425 enabled_types_).Empty()); 440 enabled_types_).Empty());
426 441
427 // Then add two datatypes. 442 // Then add two datatypes.
428 syncer::ModelTypeSet old_types = enabled_types_; 443 syncer::ModelTypeSet old_types = enabled_types_;
429 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, 444 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS,
430 syncer::SEARCH_ENGINES); 445 syncer::SEARCH_ENGINES);
431 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, 446 syncer::ModelTypeSet new_types(syncer::EXTENSIONS,
432 syncer::APPS); 447 syncer::APPS);
433 enabled_types_.PutAll(new_types); 448 enabled_types_.PutAll(new_types);
434 enabled_types_.RemoveAll(disabled_types); 449 enabled_types_.RemoveAll(disabled_types);
435 ConfigureDataTypes(enabled_types_, 450 ConfigureDataTypes(enabled_types_,
436 Difference(syncer::ModelTypeSet::All(), 451 Difference(syncer::ModelTypeSet::All(),
437 enabled_types_), 452 enabled_types_),
438 BackendDataTypeConfigurer::WITH_NIGORI); 453 BackendDataTypeConfigurer::WITH_NIGORI);
439 454
440 // Only those datatypes added should be downloaded (plus nigori). Nothing 455 // Only those datatypes added should be downloaded (plus nigori). Nothing
441 // should be cleaned aside from the disabled types. 456 // should be cleaned aside from the disabled types.
442 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 457 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
443 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 458 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
444 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 459 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
445 old_types).Equals(disabled_types)); 460 old_types).Equals(disabled_types));
446 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 461 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
462 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
447 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 463 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
448 old_types).Equals(disabled_types)); 464 old_types).Equals(disabled_types));
449 } 465 }
450 466
451 // Test restarting the browser to newly supported datatypes. The new datatypes 467 // Test restarting the browser to newly supported datatypes. The new datatypes
452 // should be downloaded on the configuration after backend initialization. 468 // should be downloaded on the configuration after backend initialization.
453 TEST_F(SyncBackendHostTest, NewlySupportedTypes) { 469 TEST_F(SyncBackendHostTest, NewlySupportedTypes) {
454 sync_prefs_->SetSyncSetupCompleted(); 470 sync_prefs_->SetSyncSetupCompleted();
455 // Set sync manager behavior before passing it down. All types have progress 471 // Set sync manager behavior before passing it down. All types have progress
456 // markers and initial sync ended except the new types. 472 // markers and initial sync ended except the new types.
457 syncer::ModelTypeSet old_types = enabled_types_; 473 syncer::ModelTypeSet old_types = enabled_types_;
458 fake_manager_->set_progress_marker_types(old_types); 474 fake_manager_->set_progress_marker_types(old_types);
459 fake_manager_->set_initial_sync_ended_types(old_types); 475 fake_manager_->set_initial_sync_ended_types(old_types);
460 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, 476 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS,
461 syncer::EXTENSION_SETTINGS); 477 syncer::EXTENSION_SETTINGS);
462 enabled_types_.PutAll(new_types); 478 enabled_types_.PutAll(new_types);
463 479
464 // Does nothing. 480 // Does nothing.
465 InitializeBackend(enabled_types_); 481 InitializeBackend(enabled_types_);
466 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 482 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
467 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 483 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
468 enabled_types_).Empty()); 484 enabled_types_).Empty());
469 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); 485 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types));
486 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty());
470 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 487 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
471 enabled_types_).Equals(new_types)); 488 enabled_types_).Equals(new_types));
472 489
473 // Downloads and applies the new types. 490 // Downloads and applies the new types.
474 ConfigureDataTypes(enabled_types_, 491 ConfigureDataTypes(enabled_types_,
475 Difference(syncer::ModelTypeSet::All(), 492 Difference(syncer::ModelTypeSet::All(),
476 enabled_types_), 493 enabled_types_),
477 BackendDataTypeConfigurer::WITH_NIGORI); 494 BackendDataTypeConfigurer::WITH_NIGORI);
478 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 495 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
479 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 496 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
480 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 497 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
481 enabled_types_).Empty()); 498 enabled_types_).Empty());
482 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 499 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
500 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
483 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 501 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
484 enabled_types_).Empty()); 502 enabled_types_).Empty());
485 } 503 }
486 504
487 // Test the newly supported types scenario, but with the presence of partial 505 // Test the newly supported types scenario, but with the presence of partial
488 // types as well. Both partial and newly supported types should be downloaded 506 // types as well. Both partial and newly supported types should be downloaded
489 // the configuration. 507 // the configuration.
490 TEST_F(SyncBackendHostTest, NewlySupportedTypesWithPartialTypes) { 508 TEST_F(SyncBackendHostTest, NewlySupportedTypesWithPartialTypes) {
491 sync_prefs_->SetSyncSetupCompleted(); 509 sync_prefs_->SetSyncSetupCompleted();
492 // Set sync manager behavior before passing it down. All types have progress 510 // Set sync manager behavior before passing it down. All types have progress
493 // markers and initial sync ended except the new types. 511 // markers and initial sync ended except the new types.
494 syncer::ModelTypeSet old_types = enabled_types_; 512 syncer::ModelTypeSet old_types = enabled_types_;
495 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); 513 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS);
496 syncer::ModelTypeSet full_types = 514 syncer::ModelTypeSet full_types =
497 Difference(enabled_types_, partial_types); 515 Difference(enabled_types_, partial_types);
498 fake_manager_->set_progress_marker_types(old_types); 516 fake_manager_->set_progress_marker_types(old_types);
499 fake_manager_->set_initial_sync_ended_types(full_types); 517 fake_manager_->set_initial_sync_ended_types(full_types);
500 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, 518 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS,
501 syncer::EXTENSION_SETTINGS); 519 syncer::EXTENSION_SETTINGS);
502 enabled_types_.PutAll(new_types); 520 enabled_types_.PutAll(new_types);
503 521
504 // Purge the partial types. 522 // Purge the partial types.
505 InitializeBackend(enabled_types_); 523 InitializeBackend(enabled_types_);
506 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 524 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
507 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 525 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
508 enabled_types_).Empty()); 526 enabled_types_).Empty());
509 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(full_types)); 527 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(full_types));
528 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty());
510 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 529 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
511 enabled_types_).Equals(Union(new_types, partial_types))); 530 enabled_types_).Equals(Union(new_types, partial_types)));
512 531
513 // Downloads and applies the new types and partial types (which includes 532 // Downloads and applies the new types and partial types (which includes
514 // nigori anyways). 533 // nigori anyways).
515 ConfigureDataTypes(enabled_types_, 534 ConfigureDataTypes(enabled_types_,
516 Difference(syncer::ModelTypeSet::All(), 535 Difference(syncer::ModelTypeSet::All(),
517 enabled_types_), 536 enabled_types_),
518 BackendDataTypeConfigurer::WITH_NIGORI); 537 BackendDataTypeConfigurer::WITH_NIGORI);
519 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 538 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
520 Union(new_types, partial_types))); 539 Union(new_types, partial_types)));
521 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 540 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
522 enabled_types_).Empty()); 541 enabled_types_).Empty());
523 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 542 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
543 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
524 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 544 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
525 enabled_types_).Empty()); 545 enabled_types_).Empty());
526 } 546 }
527 547
528 } // namespace 548 } // namespace
529 549
530 } // namespace browser_sync 550 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host.cc ('k') | chrome/browser/sync/test_profile_sync_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698