| 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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 |
| OLD | NEW |