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 |