| 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/location.h" | 9 #include "base/location.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 profile_.get(), | 149 profile_.get(), |
| 150 sync_prefs_->AsWeakPtr(), | 150 sync_prefs_->AsWeakPtr(), |
| 151 invalidator_storage_->AsWeakPtr())); | 151 invalidator_storage_->AsWeakPtr())); |
| 152 credentials_.email = "user@example.com"; | 152 credentials_.email = "user@example.com"; |
| 153 credentials_.sync_token = "sync_token"; | 153 credentials_.sync_token = "sync_token"; |
| 154 | 154 |
| 155 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend | 155 // NOTE: We can't include Passwords or Typed URLs due to the Sync Backend |
| 156 // Registrar removing them if it can't find their model workers. | 156 // Registrar removing them if it can't find their model workers. |
| 157 enabled_types_.Put(syncer::BOOKMARKS); | 157 enabled_types_.Put(syncer::BOOKMARKS); |
| 158 enabled_types_.Put(syncer::NIGORI); | 158 enabled_types_.Put(syncer::NIGORI); |
| 159 enabled_types_.Put(syncer::PER_DEVICE_METADATA); |
| 160 enabled_types_.Put(syncer::PER_USER_METADATA); |
| 159 enabled_types_.Put(syncer::PREFERENCES); | 161 enabled_types_.Put(syncer::PREFERENCES); |
| 160 enabled_types_.Put(syncer::SESSIONS); | 162 enabled_types_.Put(syncer::SESSIONS); |
| 161 enabled_types_.Put(syncer::SEARCH_ENGINES); | 163 enabled_types_.Put(syncer::SEARCH_ENGINES); |
| 162 enabled_types_.Put(syncer::AUTOFILL); | 164 enabled_types_.Put(syncer::AUTOFILL); |
| 163 } | 165 } |
| 164 | 166 |
| 165 virtual void TearDown() OVERRIDE { | 167 virtual void TearDown() OVERRIDE { |
| 166 if (backend_.get()) { | 168 if (backend_.get()) { |
| 167 backend_->StopSyncingForShutdown(); | 169 backend_->StopSyncingForShutdown(); |
| 168 backend_->Shutdown(false); | 170 backend_->Shutdown(false); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 196 ui_loop_.Run(); | 198 ui_loop_.Run(); |
| 197 // |fake_manager_factory_|'s fake_manager() is set on the sync | 199 // |fake_manager_factory_|'s fake_manager() is set on the sync |
| 198 // thread, but we can rely on the message loop barriers to | 200 // thread, but we can rely on the message loop barriers to |
| 199 // guarantee that we see the updated value. | 201 // guarantee that we see the updated value. |
| 200 fake_manager_ = fake_manager_factory_.fake_manager(); | 202 fake_manager_ = fake_manager_factory_.fake_manager(); |
| 201 DCHECK(fake_manager_); | 203 DCHECK(fake_manager_); |
| 202 } | 204 } |
| 203 | 205 |
| 204 // Synchronously configures the backend's datatypes. | 206 // Synchronously configures the backend's datatypes. |
| 205 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, | 207 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, |
| 206 syncer::ModelTypeSet types_to_remove, | 208 syncer::ModelTypeSet types_to_remove) { |
| 207 BackendDataTypeConfigurer::NigoriState nigori_state) { | 209 types_to_add.PutAll(syncer::ControlTypes()); |
| 208 backend_->ConfigureDataTypes( | 210 backend_->ConfigureDataTypes( |
| 209 syncer::CONFIGURE_REASON_RECONFIGURATION, | 211 syncer::CONFIGURE_REASON_RECONFIGURATION, |
| 210 types_to_add, | 212 types_to_add, |
| 211 types_to_remove, | 213 types_to_remove, |
| 212 nigori_state, | |
| 213 base::Bind(&SyncBackendHostTest::DownloadReady, | 214 base::Bind(&SyncBackendHostTest::DownloadReady, |
| 214 base::Unretained(this)), | 215 base::Unretained(this)), |
| 215 base::Bind(&SyncBackendHostTest::OnDownloadRetry, | 216 base::Bind(&SyncBackendHostTest::OnDownloadRetry, |
| 216 base::Unretained(this))); | 217 base::Unretained(this))); |
| 217 ui_loop_.PostDelayedTask(FROM_HERE, | 218 ui_loop_.PostDelayedTask(FROM_HERE, |
| 218 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); | 219 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); |
| 219 ui_loop_.Run(); | 220 ui_loop_.Run(); |
| 220 } | 221 } |
| 221 | 222 |
| 222 protected: | 223 protected: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 241 FakeSyncManager* fake_manager_; | 242 FakeSyncManager* fake_manager_; |
| 242 FakeSyncManagerFactory fake_manager_factory_; | 243 FakeSyncManagerFactory fake_manager_factory_; |
| 243 syncer::ModelTypeSet enabled_types_; | 244 syncer::ModelTypeSet enabled_types_; |
| 244 }; | 245 }; |
| 245 | 246 |
| 246 // Test basic initialization with no initial types (first time initialization). | 247 // Test basic initialization with no initial types (first time initialization). |
| 247 // Only the nigori should be configured. | 248 // Only the nigori should be configured. |
| 248 TEST_F(SyncBackendHostTest, InitShutdown) { | 249 TEST_F(SyncBackendHostTest, InitShutdown) { |
| 249 InitializeBackend(); | 250 InitializeBackend(); |
| 250 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 251 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 251 syncer::ModelTypeSet(syncer::NIGORI))); | 252 syncer::ControlTypes())); |
| 252 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 253 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 253 syncer::ModelTypeSet(syncer::NIGORI))); | 254 syncer::ControlTypes())); |
| 254 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 255 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 255 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); | 256 syncer::ControlTypes()).Empty()); |
| 256 } | 257 } |
| 257 | 258 |
| 258 // Test first time sync scenario. All types should be properly configured. | 259 // Test first time sync scenario. All types should be properly configured. |
| 259 TEST_F(SyncBackendHostTest, FirstTimeSync) { | 260 TEST_F(SyncBackendHostTest, FirstTimeSync) { |
| 260 InitializeBackend(); | 261 InitializeBackend(); |
| 261 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 262 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 262 syncer::ModelTypeSet(syncer::NIGORI))); | 263 syncer::ControlTypes())); |
| 263 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 264 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 264 syncer::ModelTypeSet(syncer::NIGORI))); | 265 syncer::ControlTypes())); |
| 265 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 266 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 266 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); | 267 syncer::ControlTypes()).Empty()); |
| 267 | 268 |
| 268 ConfigureDataTypes(enabled_types_, | 269 ConfigureDataTypes(enabled_types_, |
| 269 Difference(syncer::ModelTypeSet::All(), | 270 Difference(syncer::ModelTypeSet::All(), |
| 270 enabled_types_), | 271 enabled_types_)); |
| 271 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 272 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 272 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| 273 enabled_types_)); | 273 Difference(enabled_types_, syncer::ControlTypes()))); |
| 274 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 274 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 275 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 275 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 276 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 276 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 277 enabled_types_).Empty()); | 277 enabled_types_).Empty()); |
| 278 } | 278 } |
| 279 | 279 |
| 280 // Test the restart after setting up sync scenario. No enabled types should be | 280 // Test the restart after setting up sync scenario. No enabled types should be |
| 281 // downloaded or cleaned. | 281 // downloaded or cleaned. |
| 282 TEST_F(SyncBackendHostTest, Restart) { | 282 TEST_F(SyncBackendHostTest, Restart) { |
| 283 sync_prefs_->SetSyncSetupCompleted(); | 283 sync_prefs_->SetSyncSetupCompleted(); |
| 284 syncer::ModelTypeSet all_but_nigori = enabled_types_; | 284 syncer::ModelTypeSet all_but_nigori = enabled_types_; |
| 285 fake_manager_factory_.set_progress_marker_types(enabled_types_); | 285 fake_manager_factory_.set_progress_marker_types(enabled_types_); |
| 286 fake_manager_factory_.set_initial_sync_ended_types(enabled_types_); | 286 fake_manager_factory_.set_initial_sync_ended_types(enabled_types_); |
| 287 InitializeBackend(); | 287 InitializeBackend(); |
| 288 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 288 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 289 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 289 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 290 enabled_types_).Empty()); | 290 enabled_types_).Empty()); |
| 291 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 291 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 292 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 292 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 293 enabled_types_).Empty()); | 293 enabled_types_).Empty()); |
| 294 | 294 |
| 295 ConfigureDataTypes(enabled_types_, | 295 ConfigureDataTypes(enabled_types_, |
| 296 Difference(syncer::ModelTypeSet::All(), | 296 Difference(syncer::ModelTypeSet::All(), |
| 297 enabled_types_), | 297 enabled_types_)); |
| 298 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 299 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 298 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 300 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 299 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 301 enabled_types_).Empty()); | 300 enabled_types_).Empty()); |
| 302 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 301 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 303 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 302 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 304 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 303 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 305 enabled_types_).Empty()); | 304 enabled_types_).Empty()); |
| 306 } | 305 } |
| 307 | 306 |
| 308 // Test a sync restart scenario where some types had never finished configuring. | 307 // Test a sync restart scenario where some types had never finished configuring. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 325 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); | 324 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
| 326 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 325 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 327 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 326 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 328 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 327 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 329 enabled_types_).Equals( | 328 enabled_types_).Equals( |
| 330 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 329 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 331 | 330 |
| 332 // Now do the actual configuration, which should download and apply bookmarks. | 331 // Now do the actual configuration, which should download and apply bookmarks. |
| 333 ConfigureDataTypes(enabled_types_, | 332 ConfigureDataTypes(enabled_types_, |
| 334 Difference(syncer::ModelTypeSet::All(), | 333 Difference(syncer::ModelTypeSet::All(), |
| 335 enabled_types_), | 334 enabled_types_)); |
| 336 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 337 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 335 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 338 enabled_types_).Empty()); | 336 enabled_types_).Empty()); |
| 339 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 337 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 340 partial_types)); | 338 partial_types)); |
| 341 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 339 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 342 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 340 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 343 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 341 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 344 enabled_types_).Empty()); | 342 enabled_types_).Empty()); |
| 345 } | 343 } |
| 346 | 344 |
| 347 // Test the behavior when we lose the sync db. Although we already have types | 345 // Test the behavior when we lose the sync db. Although we already have types |
| 348 // enabled, we should re-download all of them because we lost their data. | 346 // enabled, we should re-download all of them because we lost their data. |
| 349 TEST_F(SyncBackendHostTest, LostDB) { | 347 TEST_F(SyncBackendHostTest, LostDB) { |
| 350 sync_prefs_->SetSyncSetupCompleted(); | 348 sync_prefs_->SetSyncSetupCompleted(); |
| 351 // Initialization should fetch the Nigori node. Everything else should be | 349 // Initialization should fetch the Nigori node. Everything else should be |
| 352 // left untouched. | 350 // left untouched. |
| 353 InitializeBackend(); | 351 InitializeBackend(); |
| 354 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 352 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 355 syncer::ModelTypeSet(syncer::NIGORI))); | 353 syncer::ModelTypeSet(syncer::ControlTypes()))); |
| 356 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 354 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 357 syncer::ModelTypeSet(syncer::NIGORI))); | 355 syncer::ModelTypeSet(syncer::ControlTypes()))); |
| 358 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 356 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 359 enabled_types_).Equals( | 357 enabled_types_).Equals( |
| 360 Difference(enabled_types_, syncer::ModelTypeSet(syncer::NIGORI)))); | 358 Difference(enabled_types_, syncer::ControlTypes()))); |
| 361 | 359 |
| 362 // The database was empty, so any cleaning is entirely optional. We want to | 360 // The database was empty, so any cleaning is entirely optional. We want to |
| 363 // reset this value before running the next part of the test, though. | 361 // reset this value before running the next part of the test, though. |
| 364 fake_manager_->GetAndResetCleanedTypes(); | 362 fake_manager_->GetAndResetCleanedTypes(); |
| 365 | 363 |
| 366 // The actual configuration should redownload and apply all the enabled types. | 364 // The actual configuration should redownload and apply all the enabled types. |
| 367 ConfigureDataTypes(enabled_types_, | 365 ConfigureDataTypes(enabled_types_, |
| 368 Difference(syncer::ModelTypeSet::All(), | 366 Difference(syncer::ModelTypeSet::All(), |
| 369 enabled_types_), | 367 enabled_types_)); |
| 370 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 371 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 368 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| 372 enabled_types_)); | 369 Difference(enabled_types_, syncer::ControlTypes()))); |
| 373 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 370 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 374 enabled_types_).Empty()); | 371 enabled_types_).Empty()); |
| 375 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 372 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 376 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 373 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 377 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 374 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 378 enabled_types_).Empty()); | 375 enabled_types_).Empty()); |
| 379 } | 376 } |
| 380 | 377 |
| 381 TEST_F(SyncBackendHostTest, DisableTypes) { | 378 TEST_F(SyncBackendHostTest, DisableTypes) { |
| 382 // Simulate first time sync. | 379 // Simulate first time sync. |
| 383 InitializeBackend(); | 380 InitializeBackend(); |
| 384 fake_manager_->GetAndResetCleanedTypes(); | 381 fake_manager_->GetAndResetCleanedTypes(); |
| 385 ConfigureDataTypes(enabled_types_, | 382 ConfigureDataTypes(enabled_types_, |
| 386 Difference(syncer::ModelTypeSet::All(), | 383 Difference(syncer::ModelTypeSet::All(), |
| 387 enabled_types_), | 384 enabled_types_)); |
| 388 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 389 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 385 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 390 enabled_types_)); | 386 enabled_types_)); |
| 391 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 387 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 392 enabled_types_).Empty()); | 388 enabled_types_).Empty()); |
| 393 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 389 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 394 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 390 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 395 enabled_types_).Empty()); | 391 enabled_types_).Empty()); |
| 396 | 392 |
| 397 // Then disable two datatypes. | 393 // Then disable two datatypes. |
| 398 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 394 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
| 399 syncer::SEARCH_ENGINES); | 395 syncer::SEARCH_ENGINES); |
| 400 syncer::ModelTypeSet old_types = enabled_types_; | 396 syncer::ModelTypeSet old_types = enabled_types_; |
| 401 enabled_types_.RemoveAll(disabled_types); | 397 enabled_types_.RemoveAll(disabled_types); |
| 402 ConfigureDataTypes(enabled_types_, | 398 ConfigureDataTypes(enabled_types_, |
| 403 Difference(syncer::ModelTypeSet::All(), | 399 Difference(syncer::ModelTypeSet::All(), |
| 404 enabled_types_), | 400 enabled_types_)); |
| 405 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 406 | 401 |
| 407 // Only those datatypes disabled should be cleaned. Nothing should be | 402 // Only those datatypes disabled should be cleaned. Nothing should be |
| 408 // downloaded. | 403 // downloaded. |
| 409 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 404 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 410 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 405 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 411 old_types).Equals(disabled_types)); | 406 old_types).Equals(disabled_types)); |
| 412 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 407 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 413 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 408 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 414 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 409 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 415 enabled_types_).Empty()); | 410 enabled_types_).Empty()); |
| 416 } | 411 } |
| 417 | 412 |
| 418 TEST_F(SyncBackendHostTest, AddTypes) { | 413 TEST_F(SyncBackendHostTest, AddTypes) { |
| 419 // Simulate first time sync. | 414 // Simulate first time sync. |
| 420 InitializeBackend(); | 415 InitializeBackend(); |
| 421 fake_manager_->GetAndResetCleanedTypes(); | 416 fake_manager_->GetAndResetCleanedTypes(); |
| 422 ConfigureDataTypes(enabled_types_, | 417 ConfigureDataTypes(enabled_types_, |
| 423 Difference(syncer::ModelTypeSet::All(), | 418 Difference(syncer::ModelTypeSet::All(), |
| 424 enabled_types_), | 419 enabled_types_)); |
| 425 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 426 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 420 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 427 enabled_types_)); | 421 enabled_types_)); |
| 428 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 422 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 429 enabled_types_).Empty()); | 423 enabled_types_).Empty()); |
| 430 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 424 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 431 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 425 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 432 enabled_types_).Empty()); | 426 enabled_types_).Empty()); |
| 433 | 427 |
| 434 // Then add two datatypes. | 428 // Then add two datatypes. |
| 435 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 429 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
| 436 syncer::APPS); | 430 syncer::APPS); |
| 437 enabled_types_.PutAll(new_types); | 431 enabled_types_.PutAll(new_types); |
| 438 ConfigureDataTypes(enabled_types_, | 432 ConfigureDataTypes(enabled_types_, |
| 439 Difference(syncer::ModelTypeSet::All(), | 433 Difference(syncer::ModelTypeSet::All(), |
| 440 enabled_types_), | 434 enabled_types_)); |
| 441 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 442 | 435 |
| 443 // Only those datatypes added should be downloaded (plus nigori). Nothing | 436 // Only those datatypes added should be downloaded (plus nigori). Nothing |
| 444 // should be cleaned aside from the disabled types. | 437 // should be cleaned aside from the disabled types. |
| 445 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 438 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 446 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 439 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 447 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 440 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 448 enabled_types_).Empty()); | 441 enabled_types_).Empty()); |
| 449 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 442 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 450 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 443 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 451 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 444 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 452 enabled_types_).Empty()); | 445 enabled_types_).Empty()); |
| 453 } | 446 } |
| 454 | 447 |
| 455 // And and disable in the same configuration. | 448 // And and disable in the same configuration. |
| 456 TEST_F(SyncBackendHostTest, AddDisableTypes) { | 449 TEST_F(SyncBackendHostTest, AddDisableTypes) { |
| 457 // Simulate first time sync. | 450 // Simulate first time sync. |
| 458 InitializeBackend(); | 451 InitializeBackend(); |
| 459 fake_manager_->GetAndResetCleanedTypes(); | 452 fake_manager_->GetAndResetCleanedTypes(); |
| 460 ConfigureDataTypes(enabled_types_, | 453 ConfigureDataTypes(enabled_types_, |
| 461 Difference(syncer::ModelTypeSet::All(), | 454 Difference(syncer::ModelTypeSet::All(), |
| 462 enabled_types_), | 455 enabled_types_)); |
| 463 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 464 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 456 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 465 enabled_types_)); | 457 enabled_types_)); |
| 466 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 458 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 467 enabled_types_).Empty()); | 459 enabled_types_).Empty()); |
| 468 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 460 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 469 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 461 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 470 enabled_types_).Empty()); | 462 enabled_types_).Empty()); |
| 471 | 463 |
| 472 // Then add two datatypes. | 464 // Then add two datatypes. |
| 473 syncer::ModelTypeSet old_types = enabled_types_; | 465 syncer::ModelTypeSet old_types = enabled_types_; |
| 474 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 466 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
| 475 syncer::SEARCH_ENGINES); | 467 syncer::SEARCH_ENGINES); |
| 476 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 468 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
| 477 syncer::APPS); | 469 syncer::APPS); |
| 478 enabled_types_.PutAll(new_types); | 470 enabled_types_.PutAll(new_types); |
| 479 enabled_types_.RemoveAll(disabled_types); | 471 enabled_types_.RemoveAll(disabled_types); |
| 480 ConfigureDataTypes(enabled_types_, | 472 ConfigureDataTypes(enabled_types_, |
| 481 Difference(syncer::ModelTypeSet::All(), | 473 Difference(syncer::ModelTypeSet::All(), |
| 482 enabled_types_), | 474 enabled_types_)); |
| 483 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 484 | 475 |
| 485 // Only those datatypes added should be downloaded (plus nigori). Nothing | 476 // Only those datatypes added should be downloaded (plus nigori). Nothing |
| 486 // should be cleaned aside from the disabled types. | 477 // should be cleaned aside from the disabled types. |
| 487 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 478 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 488 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 479 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 489 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 480 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 490 old_types).Equals(disabled_types)); | 481 old_types).Equals(disabled_types)); |
| 491 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 482 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 492 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 483 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 493 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 484 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 512 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 503 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 513 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 504 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 514 old_types).Empty()); | 505 old_types).Empty()); |
| 515 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); | 506 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); |
| 516 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 507 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 517 enabled_types_).Equals(new_types)); | 508 enabled_types_).Equals(new_types)); |
| 518 | 509 |
| 519 // Downloads and applies the new types. | 510 // Downloads and applies the new types. |
| 520 ConfigureDataTypes(enabled_types_, | 511 ConfigureDataTypes(enabled_types_, |
| 521 Difference(syncer::ModelTypeSet::All(), | 512 Difference(syncer::ModelTypeSet::All(), |
| 522 enabled_types_), | 513 enabled_types_)); |
| 523 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 524 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 514 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 525 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 515 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 526 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 516 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 527 enabled_types_).Empty()); | 517 enabled_types_).Empty()); |
| 528 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 518 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 529 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 519 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 530 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 520 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 531 enabled_types_).Empty()); | 521 enabled_types_).Empty()); |
| 532 } | 522 } |
| 533 | 523 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 557 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 547 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 558 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 548 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 559 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 549 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 560 enabled_types_).Equals(Union(new_types, Difference( | 550 enabled_types_).Equals(Union(new_types, Difference( |
| 561 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); | 551 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); |
| 562 | 552 |
| 563 // Downloads and applies the new types and partial types (which includes | 553 // Downloads and applies the new types and partial types (which includes |
| 564 // nigori anyways). | 554 // nigori anyways). |
| 565 ConfigureDataTypes(enabled_types_, | 555 ConfigureDataTypes(enabled_types_, |
| 566 Difference(syncer::ModelTypeSet::All(), | 556 Difference(syncer::ModelTypeSet::All(), |
| 567 enabled_types_), | 557 enabled_types_)); |
| 568 BackendDataTypeConfigurer::WITH_NIGORI); | |
| 569 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 558 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 570 Union(new_types, partial_types))); | 559 Union(new_types, partial_types))); |
| 571 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 560 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 572 enabled_types_).Empty()); | 561 enabled_types_).Empty()); |
| 573 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 562 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 574 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 563 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 575 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 564 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 576 enabled_types_).Empty()); | 565 enabled_types_).Empty()); |
| 577 } | 566 } |
| 578 | 567 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 backend_->Shutdown(false); | 648 backend_->Shutdown(false); |
| 660 backend_.reset(); | 649 backend_.reset(); |
| 661 | 650 |
| 662 TearDown(); | 651 TearDown(); |
| 663 SetUp(); | 652 SetUp(); |
| 664 } | 653 } |
| 665 | 654 |
| 666 } // namespace | 655 } // namespace |
| 667 | 656 |
| 668 } // namespace browser_sync | 657 } // namespace browser_sync |
| OLD | NEW |