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