| 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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 profile_.reset(); | 142 profile_.reset(); |
| 143 // Pump messages posted by the sync core thread (which may end up | 143 // Pump messages posted by the sync core thread (which may end up |
| 144 // posting on the IO thread). | 144 // posting on the IO thread). |
| 145 ui_loop_.RunAllPending(); | 145 ui_loop_.RunAllPending(); |
| 146 io_thread_.Stop(); | 146 io_thread_.Stop(); |
| 147 // Pump any messages posted by the IO thread. | 147 // Pump any messages posted by the IO thread. |
| 148 ui_loop_.RunAllPending(); | 148 ui_loop_.RunAllPending(); |
| 149 } | 149 } |
| 150 | 150 |
| 151 // Synchronously initializes the backend. | 151 // Synchronously initializes the backend. |
| 152 void InitializeBackend(syncer::ModelTypeSet enabled_types) { | 152 void InitializeBackend() { |
| 153 EXPECT_CALL(mock_frontend_, OnBackendInitialized(_, true)). | 153 EXPECT_CALL(mock_frontend_, OnBackendInitialized(_, true)). |
| 154 WillOnce(InvokeWithoutArgs(QuitMessageLoop)); | 154 WillOnce(InvokeWithoutArgs(QuitMessageLoop)); |
| 155 backend_->Initialize(&mock_frontend_, | 155 backend_->Initialize(&mock_frontend_, |
| 156 syncer::WeakHandle<syncer::JsEventHandler>(), | 156 syncer::WeakHandle<syncer::JsEventHandler>(), |
| 157 GURL(""), | 157 GURL(""), |
| 158 enabled_types, | |
| 159 credentials_, | 158 credentials_, |
| 160 true, | 159 true, |
| 161 &fake_sync_manager_factory_, | 160 &fake_sync_manager_factory_, |
| 162 &handler_, | 161 &handler_, |
| 163 NULL); | 162 NULL); |
| 164 ui_loop_.PostDelayedTask(FROM_HERE, | 163 ui_loop_.PostDelayedTask(FROM_HERE, |
| 165 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); | 164 ui_loop_.QuitClosure(), TestTimeouts::action_timeout()); |
| 166 ui_loop_.Run(); | 165 ui_loop_.Run(); |
| 167 } | 166 } |
| 168 | 167 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 scoped_ptr<InvalidatorStorage> invalidator_storage_; | 203 scoped_ptr<InvalidatorStorage> invalidator_storage_; |
| 205 scoped_ptr<SyncBackendHost> backend_; | 204 scoped_ptr<SyncBackendHost> backend_; |
| 206 FakeSyncManagerFactory fake_sync_manager_factory_; | 205 FakeSyncManagerFactory fake_sync_manager_factory_; |
| 207 FakeSyncManager* fake_manager_; | 206 FakeSyncManager* fake_manager_; |
| 208 syncer::ModelTypeSet enabled_types_; | 207 syncer::ModelTypeSet enabled_types_; |
| 209 }; | 208 }; |
| 210 | 209 |
| 211 // Test basic initialization with no initial types (first time initialization). | 210 // Test basic initialization with no initial types (first time initialization). |
| 212 // Only the nigori should be configured. | 211 // Only the nigori should be configured. |
| 213 TEST_F(SyncBackendHostTest, InitShutdown) { | 212 TEST_F(SyncBackendHostTest, InitShutdown) { |
| 214 InitializeBackend(syncer::ModelTypeSet()); | 213 InitializeBackend(); |
| 215 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 214 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 216 syncer::ModelTypeSet(syncer::NIGORI))); | 215 syncer::ModelTypeSet(syncer::NIGORI))); |
| 217 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 216 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 218 syncer::ModelTypeSet(syncer::NIGORI))); | 217 syncer::ModelTypeSet(syncer::NIGORI))); |
| 219 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals( | |
| 220 syncer::ModelTypeSet(syncer::NIGORI))); | |
| 221 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 218 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 222 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); | 219 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); |
| 223 } | 220 } |
| 224 | 221 |
| 225 // Test first time sync scenario. All types should be properly configured. | 222 // Test first time sync scenario. All types should be properly configured. |
| 226 TEST_F(SyncBackendHostTest, FirstTimeSync) { | 223 TEST_F(SyncBackendHostTest, FirstTimeSync) { |
| 227 InitializeBackend(syncer::ModelTypeSet()); | 224 InitializeBackend(); |
| 228 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 225 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 229 syncer::ModelTypeSet(syncer::NIGORI))); | 226 syncer::ModelTypeSet(syncer::NIGORI))); |
| 230 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 227 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 231 syncer::ModelTypeSet(syncer::NIGORI))); | 228 syncer::ModelTypeSet(syncer::NIGORI))); |
| 232 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals( | |
| 233 syncer::ModelTypeSet(syncer::NIGORI))); | |
| 234 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 229 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 235 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); | 230 syncer::ModelTypeSet(syncer::NIGORI)).Empty()); |
| 236 | 231 |
| 237 ConfigureDataTypes(enabled_types_, | 232 ConfigureDataTypes(enabled_types_, |
| 238 Difference(syncer::ModelTypeSet::All(), | 233 Difference(syncer::ModelTypeSet::All(), |
| 239 enabled_types_), | 234 enabled_types_), |
| 240 BackendDataTypeConfigurer::WITH_NIGORI); | 235 BackendDataTypeConfigurer::WITH_NIGORI); |
| 241 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 236 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| 242 enabled_types_)); | 237 enabled_types_)); |
| 243 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 238 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 244 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 239 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 245 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 240 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 246 enabled_types_).Empty()); | 241 enabled_types_).Empty()); |
| 247 } | 242 } |
| 248 | 243 |
| 249 // Test the restart after setting up sync scenario. No enabled types should be | 244 // Test the restart after setting up sync scenario. No enabled types should be |
| 250 // downloaded or cleaned. | 245 // downloaded or cleaned. |
| 251 TEST_F(SyncBackendHostTest, Restart) { | 246 TEST_F(SyncBackendHostTest, Restart) { |
| 252 sync_prefs_->SetSyncSetupCompleted(); | 247 sync_prefs_->SetSyncSetupCompleted(); |
| 253 syncer::ModelTypeSet all_but_nigori = enabled_types_; | 248 syncer::ModelTypeSet all_but_nigori = enabled_types_; |
| 254 fake_manager_->set_progress_marker_types(enabled_types_); | 249 fake_manager_->set_progress_marker_types(enabled_types_); |
| 255 fake_manager_->set_initial_sync_ended_types(enabled_types_); | 250 fake_manager_->set_initial_sync_ended_types(enabled_types_); |
| 256 InitializeBackend(enabled_types_); | 251 InitializeBackend(); |
| 257 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 252 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 258 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 253 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 259 enabled_types_).Empty()); | 254 enabled_types_).Empty()); |
| 260 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 255 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 261 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); | |
| 262 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 256 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 263 enabled_types_).Empty()); | 257 enabled_types_).Empty()); |
| 264 | 258 |
| 265 ConfigureDataTypes(enabled_types_, | 259 ConfigureDataTypes(enabled_types_, |
| 266 Difference(syncer::ModelTypeSet::All(), | 260 Difference(syncer::ModelTypeSet::All(), |
| 267 enabled_types_), | 261 enabled_types_), |
| 268 BackendDataTypeConfigurer::WITH_NIGORI); | 262 BackendDataTypeConfigurer::WITH_NIGORI); |
| 269 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 263 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 270 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 264 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 271 enabled_types_).Empty()); | 265 enabled_types_).Empty()); |
| 272 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 266 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 273 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 267 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 274 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 268 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 275 enabled_types_).Empty()); | 269 enabled_types_).Empty()); |
| 276 } | 270 } |
| 277 | 271 |
| 278 // Test a sync restart scenario where some types had never finished configuring. | 272 // Test a sync restart scenario where some types had never finished configuring. |
| 279 // The partial types should be purged, then reconfigured properly. | 273 // The partial types should be purged, then reconfigured properly. |
| 280 TEST_F(SyncBackendHostTest, PartialTypes) { | 274 TEST_F(SyncBackendHostTest, PartialTypes) { |
| 281 sync_prefs_->SetSyncSetupCompleted(); | 275 sync_prefs_->SetSyncSetupCompleted(); |
| 282 // Set sync manager behavior before passing it down. All types have progress | 276 // Set sync manager behavior before passing it down. All types have progress |
| 283 // markers, but nigori and bookmarks are missing initial sync ended. | 277 // markers, but nigori and bookmarks are missing initial sync ended. |
| 284 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); | 278 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); |
| 285 syncer::ModelTypeSet full_types = | 279 syncer::ModelTypeSet full_types = |
| 286 Difference(enabled_types_, partial_types); | 280 Difference(enabled_types_, partial_types); |
| 287 fake_manager_->set_progress_marker_types(enabled_types_); | 281 fake_manager_->set_progress_marker_types(enabled_types_); |
| 288 fake_manager_->set_initial_sync_ended_types(full_types); | 282 fake_manager_->set_initial_sync_ended_types(full_types); |
| 289 | 283 |
| 290 // All partial types should have been purged with nothing downloaded as part | 284 // Bringing up the backend should purge all partial types, then proceed to |
| 291 // of bringing up the backend. | 285 // download the Nigori. |
| 292 InitializeBackend(enabled_types_); | 286 InitializeBackend(); |
| 293 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 287 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 294 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 288 syncer::ModelTypeSet(syncer::NIGORI))); |
| 295 enabled_types_).Empty()); | 289 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
| 296 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( | 290 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 297 full_types)); | 291 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 298 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); | |
| 299 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 292 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 300 enabled_types_).Equals(partial_types)); | 293 enabled_types_).Equals( |
| 294 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 301 | 295 |
| 302 // Now do the actual configuration, which should download and apply both | 296 // Now do the actual configuration, which should download and apply bookmarks. |
| 303 // nigori and bookmarks. | |
| 304 ConfigureDataTypes(enabled_types_, | 297 ConfigureDataTypes(enabled_types_, |
| 305 Difference(syncer::ModelTypeSet::All(), | 298 Difference(syncer::ModelTypeSet::All(), |
| 306 enabled_types_), | 299 enabled_types_), |
| 307 BackendDataTypeConfigurer::WITH_NIGORI); | 300 BackendDataTypeConfigurer::WITH_NIGORI); |
| 308 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 301 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 309 enabled_types_).Empty()); | 302 enabled_types_).Empty()); |
| 310 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 303 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 311 partial_types)); | 304 partial_types)); |
| 312 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 305 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 313 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 306 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 314 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 307 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 315 enabled_types_).Empty()); | 308 enabled_types_).Empty()); |
| 316 } | 309 } |
| 317 | 310 |
| 318 // Test the behavior when we lose the sync db. Although we already have types | 311 // Test the behavior when we lose the sync db. Although we already have types |
| 319 // enabled, we should re-download all of them because we lost their data. | 312 // enabled, we should re-download all of them because we lost their data. |
| 320 TEST_F(SyncBackendHostTest, LostDB) { | 313 TEST_F(SyncBackendHostTest, LostDB) { |
| 321 sync_prefs_->SetSyncSetupCompleted(); | 314 sync_prefs_->SetSyncSetupCompleted(); |
| 322 // Don't set any progress marker or initial_sync_ended types before | 315 // Initialization should fetch the Nigori node. Everything else should be |
| 323 // initializing. Initialization should not affect the datatypes. | 316 // left untouched. |
| 324 InitializeBackend(enabled_types_); | 317 InitializeBackend(); |
| 325 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 318 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 326 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 319 syncer::ModelTypeSet(syncer::NIGORI))); |
| 327 enabled_types_).Empty()); | 320 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 328 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Empty()); | 321 syncer::ModelTypeSet(syncer::NIGORI))); |
| 329 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); | |
| 330 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 322 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 331 enabled_types_).Equals(enabled_types_)); | 323 enabled_types_).Equals( |
| 324 Difference(enabled_types_, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 325 |
| 326 // The database was empty, so any cleaning is entirely optional. We want to |
| 327 // reset this value before running the next part of the test, though. |
| 328 fake_manager_->GetAndResetCleanedTypes(); |
| 332 | 329 |
| 333 // The actual configuration should redownload and apply all the enabled types. | 330 // The actual configuration should redownload and apply all the enabled types. |
| 334 ConfigureDataTypes(enabled_types_, | 331 ConfigureDataTypes(enabled_types_, |
| 335 Difference(syncer::ModelTypeSet::All(), | 332 Difference(syncer::ModelTypeSet::All(), |
| 336 enabled_types_), | 333 enabled_types_), |
| 337 BackendDataTypeConfigurer::WITH_NIGORI); | 334 BackendDataTypeConfigurer::WITH_NIGORI); |
| 338 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( | 335 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| 339 enabled_types_)); | 336 enabled_types_)); |
| 340 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 337 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 341 enabled_types_).Empty()); | 338 enabled_types_).Empty()); |
| 342 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 339 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 343 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 340 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 344 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 341 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 345 enabled_types_).Empty()); | 342 enabled_types_).Empty()); |
| 346 } | 343 } |
| 347 | 344 |
| 348 TEST_F(SyncBackendHostTest, DisableTypes) { | 345 TEST_F(SyncBackendHostTest, DisableTypes) { |
| 349 // Simulate first time sync. | 346 // Simulate first time sync. |
| 350 InitializeBackend(syncer::ModelTypeSet()); | 347 InitializeBackend(); |
| 351 fake_manager_->GetAndResetCleanedTypes(); | 348 fake_manager_->GetAndResetCleanedTypes(); |
| 352 ConfigureDataTypes(enabled_types_, | 349 ConfigureDataTypes(enabled_types_, |
| 353 Difference(syncer::ModelTypeSet::All(), | 350 Difference(syncer::ModelTypeSet::All(), |
| 354 enabled_types_), | 351 enabled_types_), |
| 355 BackendDataTypeConfigurer::WITH_NIGORI); | 352 BackendDataTypeConfigurer::WITH_NIGORI); |
| 356 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 353 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 357 enabled_types_)); | 354 enabled_types_)); |
| 358 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 355 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 359 enabled_types_).Empty()); | 356 enabled_types_).Empty()); |
| 360 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 357 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 361 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | |
| 362 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 358 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 363 enabled_types_).Empty()); | 359 enabled_types_).Empty()); |
| 364 | 360 |
| 365 // Then disable two datatypes. | 361 // Then disable two datatypes. |
| 366 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 362 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
| 367 syncer::SEARCH_ENGINES); | 363 syncer::SEARCH_ENGINES); |
| 368 syncer::ModelTypeSet old_types = enabled_types_; | 364 syncer::ModelTypeSet old_types = enabled_types_; |
| 369 enabled_types_.RemoveAll(disabled_types); | 365 enabled_types_.RemoveAll(disabled_types); |
| 370 ConfigureDataTypes(enabled_types_, | 366 ConfigureDataTypes(enabled_types_, |
| 371 Difference(syncer::ModelTypeSet::All(), | 367 Difference(syncer::ModelTypeSet::All(), |
| 372 enabled_types_), | 368 enabled_types_), |
| 373 BackendDataTypeConfigurer::WITH_NIGORI); | 369 BackendDataTypeConfigurer::WITH_NIGORI); |
| 374 | 370 |
| 375 // Only those datatypes disabled should be cleaned. Nothing should be | 371 // Only those datatypes disabled should be cleaned. Nothing should be |
| 376 // downloaded. | 372 // downloaded. |
| 377 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 373 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 378 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 374 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 379 old_types).Equals(disabled_types)); | 375 old_types).Equals(disabled_types)); |
| 380 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 376 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 381 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 377 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 382 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 378 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 383 enabled_types_).Empty()); | 379 enabled_types_).Empty()); |
| 384 } | 380 } |
| 385 | 381 |
| 386 TEST_F(SyncBackendHostTest, AddTypes) { | 382 TEST_F(SyncBackendHostTest, AddTypes) { |
| 387 // Simulate first time sync. | 383 // Simulate first time sync. |
| 388 InitializeBackend(syncer::ModelTypeSet()); | 384 InitializeBackend(); |
| 389 fake_manager_->GetAndResetCleanedTypes(); | 385 fake_manager_->GetAndResetCleanedTypes(); |
| 390 ConfigureDataTypes(enabled_types_, | 386 ConfigureDataTypes(enabled_types_, |
| 391 Difference(syncer::ModelTypeSet::All(), | 387 Difference(syncer::ModelTypeSet::All(), |
| 392 enabled_types_), | 388 enabled_types_), |
| 393 BackendDataTypeConfigurer::WITH_NIGORI); | 389 BackendDataTypeConfigurer::WITH_NIGORI); |
| 394 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 390 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 395 enabled_types_)); | 391 enabled_types_)); |
| 396 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 392 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 397 enabled_types_).Empty()); | 393 enabled_types_).Empty()); |
| 398 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 394 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 399 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | |
| 400 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 395 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 401 enabled_types_).Empty()); | 396 enabled_types_).Empty()); |
| 402 | 397 |
| 403 // Then add two datatypes. | 398 // Then add two datatypes. |
| 404 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 399 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
| 405 syncer::APPS); | 400 syncer::APPS); |
| 406 enabled_types_.PutAll(new_types); | 401 enabled_types_.PutAll(new_types); |
| 407 ConfigureDataTypes(enabled_types_, | 402 ConfigureDataTypes(enabled_types_, |
| 408 Difference(syncer::ModelTypeSet::All(), | 403 Difference(syncer::ModelTypeSet::All(), |
| 409 enabled_types_), | 404 enabled_types_), |
| 410 BackendDataTypeConfigurer::WITH_NIGORI); | 405 BackendDataTypeConfigurer::WITH_NIGORI); |
| 411 | 406 |
| 412 // Only those datatypes added should be downloaded (plus nigori). Nothing | 407 // Only those datatypes added should be downloaded (plus nigori). Nothing |
| 413 // should be cleaned aside from the disabled types. | 408 // should be cleaned aside from the disabled types. |
| 414 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 409 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 415 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 410 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 416 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 411 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 417 enabled_types_).Empty()); | 412 enabled_types_).Empty()); |
| 418 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 413 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 419 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 414 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 420 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 415 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 421 enabled_types_).Empty()); | 416 enabled_types_).Empty()); |
| 422 } | 417 } |
| 423 | 418 |
| 424 // And and disable in the same configuration. | 419 // And and disable in the same configuration. |
| 425 TEST_F(SyncBackendHostTest, AddDisableTypes) { | 420 TEST_F(SyncBackendHostTest, AddDisableTypes) { |
| 426 // Simulate first time sync. | 421 // Simulate first time sync. |
| 427 InitializeBackend(syncer::ModelTypeSet()); | 422 InitializeBackend(); |
| 428 fake_manager_->GetAndResetCleanedTypes(); | 423 fake_manager_->GetAndResetCleanedTypes(); |
| 429 ConfigureDataTypes(enabled_types_, | 424 ConfigureDataTypes(enabled_types_, |
| 430 Difference(syncer::ModelTypeSet::All(), | 425 Difference(syncer::ModelTypeSet::All(), |
| 431 enabled_types_), | 426 enabled_types_), |
| 432 BackendDataTypeConfigurer::WITH_NIGORI); | 427 BackendDataTypeConfigurer::WITH_NIGORI); |
| 433 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 428 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 434 enabled_types_)); | 429 enabled_types_)); |
| 435 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 430 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 436 enabled_types_).Empty()); | 431 enabled_types_).Empty()); |
| 437 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 432 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 438 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | |
| 439 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 433 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 440 enabled_types_).Empty()); | 434 enabled_types_).Empty()); |
| 441 | 435 |
| 442 // Then add two datatypes. | 436 // Then add two datatypes. |
| 443 syncer::ModelTypeSet old_types = enabled_types_; | 437 syncer::ModelTypeSet old_types = enabled_types_; |
| 444 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, | 438 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, |
| 445 syncer::SEARCH_ENGINES); | 439 syncer::SEARCH_ENGINES); |
| 446 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, | 440 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
| 447 syncer::APPS); | 441 syncer::APPS); |
| 448 enabled_types_.PutAll(new_types); | 442 enabled_types_.PutAll(new_types); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 471 // Set sync manager behavior before passing it down. All types have progress | 465 // Set sync manager behavior before passing it down. All types have progress |
| 472 // markers and initial sync ended except the new types. | 466 // markers and initial sync ended except the new types. |
| 473 syncer::ModelTypeSet old_types = enabled_types_; | 467 syncer::ModelTypeSet old_types = enabled_types_; |
| 474 fake_manager_->set_progress_marker_types(old_types); | 468 fake_manager_->set_progress_marker_types(old_types); |
| 475 fake_manager_->set_initial_sync_ended_types(old_types); | 469 fake_manager_->set_initial_sync_ended_types(old_types); |
| 476 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, | 470 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, |
| 477 syncer::EXTENSION_SETTINGS); | 471 syncer::EXTENSION_SETTINGS); |
| 478 enabled_types_.PutAll(new_types); | 472 enabled_types_.PutAll(new_types); |
| 479 | 473 |
| 480 // Does nothing. | 474 // Does nothing. |
| 481 InitializeBackend(enabled_types_); | 475 InitializeBackend(); |
| 482 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 476 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| 483 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 477 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 484 enabled_types_).Empty()); | 478 old_types).Empty()); |
| 485 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); | 479 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); |
| 486 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); | |
| 487 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 480 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 488 enabled_types_).Equals(new_types)); | 481 enabled_types_).Equals(new_types)); |
| 489 | 482 |
| 490 // Downloads and applies the new types. | 483 // Downloads and applies the new types. |
| 491 ConfigureDataTypes(enabled_types_, | 484 ConfigureDataTypes(enabled_types_, |
| 492 Difference(syncer::ModelTypeSet::All(), | 485 Difference(syncer::ModelTypeSet::All(), |
| 493 enabled_types_), | 486 enabled_types_), |
| 494 BackendDataTypeConfigurer::WITH_NIGORI); | 487 BackendDataTypeConfigurer::WITH_NIGORI); |
| 495 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 488 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 496 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); | 489 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 512 syncer::ModelTypeSet old_types = enabled_types_; | 505 syncer::ModelTypeSet old_types = enabled_types_; |
| 513 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); | 506 syncer::ModelTypeSet partial_types(syncer::NIGORI, syncer::BOOKMARKS); |
| 514 syncer::ModelTypeSet full_types = | 507 syncer::ModelTypeSet full_types = |
| 515 Difference(enabled_types_, partial_types); | 508 Difference(enabled_types_, partial_types); |
| 516 fake_manager_->set_progress_marker_types(old_types); | 509 fake_manager_->set_progress_marker_types(old_types); |
| 517 fake_manager_->set_initial_sync_ended_types(full_types); | 510 fake_manager_->set_initial_sync_ended_types(full_types); |
| 518 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, | 511 syncer::ModelTypeSet new_types(syncer::APP_SETTINGS, |
| 519 syncer::EXTENSION_SETTINGS); | 512 syncer::EXTENSION_SETTINGS); |
| 520 enabled_types_.PutAll(new_types); | 513 enabled_types_.PutAll(new_types); |
| 521 | 514 |
| 522 // Purge the partial types. | 515 // Purge the partial types. The nigori will be among the purged types, but |
| 523 InitializeBackend(enabled_types_); | 516 // the syncer will re-download it by the time the initialization is complete. |
| 524 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); | 517 InitializeBackend(); |
| 525 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 518 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 526 enabled_types_).Empty()); | 519 syncer::ModelTypeSet(syncer::NIGORI))); |
| 527 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(full_types)); | 520 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
| 528 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); | 521 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
| 522 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
| 529 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 523 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 530 enabled_types_).Equals(Union(new_types, partial_types))); | 524 enabled_types_).Equals(Union(new_types, Difference( |
| 525 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); |
| 531 | 526 |
| 532 // Downloads and applies the new types and partial types (which includes | 527 // Downloads and applies the new types and partial types (which includes |
| 533 // nigori anyways). | 528 // nigori anyways). |
| 534 ConfigureDataTypes(enabled_types_, | 529 ConfigureDataTypes(enabled_types_, |
| 535 Difference(syncer::ModelTypeSet::All(), | 530 Difference(syncer::ModelTypeSet::All(), |
| 536 enabled_types_), | 531 enabled_types_), |
| 537 BackendDataTypeConfigurer::WITH_NIGORI); | 532 BackendDataTypeConfigurer::WITH_NIGORI); |
| 538 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( | 533 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
| 539 Union(new_types, partial_types))); | 534 Union(new_types, partial_types))); |
| 540 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), | 535 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
| 541 enabled_types_).Empty()); | 536 enabled_types_).Empty()); |
| 542 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); | 537 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
| 543 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); | 538 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
| 544 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( | 539 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
| 545 enabled_types_).Empty()); | 540 enabled_types_).Empty()); |
| 546 } | 541 } |
| 547 | 542 |
| 548 } // namespace | 543 } // namespace |
| 549 | 544 |
| 550 } // namespace browser_sync | 545 } // namespace browser_sync |
| OLD | NEW |