Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host_unittest.cc

Issue 10804039: Make SyncBackendRegistrar aware of loaded data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host.cc ('k') | chrome/browser/sync/glue/sync_backend_registrar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698