| 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 "sync/sessions/sync_session.h" | 5 #include "sync/sessions/sync_session.h" |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 return new SyncSession(context_.get(), this, SyncSourceInfo(), | 39 return new SyncSession(context_.get(), this, SyncSourceInfo(), |
| 40 routes_, workers); | 40 routes_, workers); |
| 41 } | 41 } |
| 42 | 42 |
| 43 virtual void SetUp() { | 43 virtual void SetUp() { |
| 44 routes_.clear(); | 44 routes_.clear(); |
| 45 routes_[BOOKMARKS] = GROUP_UI; | 45 routes_[BOOKMARKS] = GROUP_UI; |
| 46 routes_[AUTOFILL] = GROUP_DB; | 46 routes_[AUTOFILL] = GROUP_DB; |
| 47 scoped_refptr<ModelSafeWorker> passive_worker( | 47 scoped_refptr<ModelSafeWorker> passive_worker( |
| 48 new FakeModelWorker(GROUP_PASSIVE)); | 48 new FakeModelWorker(GROUP_PASSIVE)); |
| 49 scoped_refptr<ModelSafeWorker> control_worker( |
| 50 new FakeModelWorker(GROUP_CONTROL)); |
| 49 scoped_refptr<ModelSafeWorker> ui_worker( | 51 scoped_refptr<ModelSafeWorker> ui_worker( |
| 50 new FakeModelWorker(GROUP_UI)); | 52 new FakeModelWorker(GROUP_UI)); |
| 51 scoped_refptr<ModelSafeWorker> db_worker( | 53 scoped_refptr<ModelSafeWorker> db_worker( |
| 52 new FakeModelWorker(GROUP_DB)); | 54 new FakeModelWorker(GROUP_DB)); |
| 53 workers_.clear(); | 55 workers_.clear(); |
| 56 workers_.push_back(control_worker); |
| 54 workers_.push_back(passive_worker); | 57 workers_.push_back(passive_worker); |
| 55 workers_.push_back(ui_worker); | 58 workers_.push_back(ui_worker); |
| 56 workers_.push_back(db_worker); | 59 workers_.push_back(db_worker); |
| 57 | 60 |
| 58 std::vector<ModelSafeWorker*> workers; | 61 std::vector<ModelSafeWorker*> workers; |
| 59 GetWorkers(&workers); | 62 GetWorkers(&workers); |
| 60 | 63 |
| 61 context_.reset( | 64 context_.reset( |
| 62 new SyncSessionContext( | 65 new SyncSessionContext( |
| 63 NULL, | 66 NULL, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 FakeExtensionsActivityMonitor extensions_activity_monitor_; | 145 FakeExtensionsActivityMonitor extensions_activity_monitor_; |
| 143 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; | 146 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; |
| 144 }; | 147 }; |
| 145 | 148 |
| 146 TEST_F(SyncSessionTest, EnabledGroupsEmpty) { | 149 TEST_F(SyncSessionTest, EnabledGroupsEmpty) { |
| 147 routes_.clear(); | 150 routes_.clear(); |
| 148 workers_.clear(); | 151 workers_.clear(); |
| 149 scoped_ptr<SyncSession> session(MakeSession()); | 152 scoped_ptr<SyncSession> session(MakeSession()); |
| 150 std::set<ModelSafeGroup> expected_enabled_groups; | 153 std::set<ModelSafeGroup> expected_enabled_groups; |
| 151 expected_enabled_groups.insert(GROUP_PASSIVE); | 154 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 155 expected_enabled_groups.insert(GROUP_CONTROL); |
| 152 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); | 156 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); |
| 153 } | 157 } |
| 154 | 158 |
| 155 TEST_F(SyncSessionTest, EnabledGroups) { | 159 TEST_F(SyncSessionTest, EnabledGroups) { |
| 156 scoped_ptr<SyncSession> session(MakeSession()); | 160 scoped_ptr<SyncSession> session(MakeSession()); |
| 157 std::set<ModelSafeGroup> expected_enabled_groups; | 161 std::set<ModelSafeGroup> expected_enabled_groups; |
| 158 expected_enabled_groups.insert(GROUP_PASSIVE); | 162 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 163 expected_enabled_groups.insert(GROUP_CONTROL); |
| 159 expected_enabled_groups.insert(GROUP_UI); | 164 expected_enabled_groups.insert(GROUP_UI); |
| 160 expected_enabled_groups.insert(GROUP_DB); | 165 expected_enabled_groups.insert(GROUP_DB); |
| 161 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); | 166 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); |
| 162 } | 167 } |
| 163 | 168 |
| 164 TEST_F(SyncSessionTest, EnabledGroupsWithConflictsEmpty) { | 169 TEST_F(SyncSessionTest, EnabledGroupsWithConflictsEmpty) { |
| 165 scoped_ptr<SyncSession> session(MakeSession()); | 170 scoped_ptr<SyncSession> session(MakeSession()); |
| 166 // Auto-create conflict progress. This shouldn't put that group in | 171 // Auto-create conflict progress. This shouldn't put that group in |
| 167 // conflict. | 172 // conflict. |
| 168 session->mutable_status_controller()-> | 173 session->mutable_status_controller()-> |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 std::string()); | 283 std::string()); |
| 279 ModelTypePayloadMap all_types = | 284 ModelTypePayloadMap all_types = |
| 280 ModelTypePayloadMapFromEnumSet( | 285 ModelTypePayloadMapFromEnumSet( |
| 281 ParamsMeaningAllEnabledTypes(), | 286 ParamsMeaningAllEnabledTypes(), |
| 282 std::string()); | 287 std::string()); |
| 283 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 288 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 284 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 289 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 285 | 290 |
| 286 scoped_refptr<ModelSafeWorker> passive_worker( | 291 scoped_refptr<ModelSafeWorker> passive_worker( |
| 287 new FakeModelWorker(GROUP_PASSIVE)); | 292 new FakeModelWorker(GROUP_PASSIVE)); |
| 293 scoped_refptr<ModelSafeWorker> control_worker( |
| 294 new FakeModelWorker(GROUP_CONTROL)); |
| 288 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 295 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 289 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 296 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 290 workers_one.push_back(passive_worker); | 297 workers_one.push_back(passive_worker); |
| 298 workers_one.push_back(control_worker); |
| 291 workers_one.push_back(db_worker); | 299 workers_one.push_back(db_worker); |
| 292 workers_two.push_back(passive_worker); | 300 workers_two.push_back(passive_worker); |
| 301 workers_two.push_back(control_worker); |
| 293 workers_two.push_back(db_worker); | 302 workers_two.push_back(db_worker); |
| 294 workers_two.push_back(ui_worker); | 303 workers_two.push_back(ui_worker); |
| 295 routes_one[AUTOFILL] = GROUP_DB; | 304 routes_one[AUTOFILL] = GROUP_DB; |
| 296 routes_two[AUTOFILL] = GROUP_DB; | 305 routes_two[AUTOFILL] = GROUP_DB; |
| 297 routes_two[BOOKMARKS] = GROUP_UI; | 306 routes_two[BOOKMARKS] = GROUP_UI; |
| 298 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 307 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 299 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 308 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 300 | 309 |
| 301 std::set<ModelSafeGroup> expected_enabled_groups_one; | 310 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 302 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 311 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 312 expected_enabled_groups_one.insert(GROUP_CONTROL); |
| 303 expected_enabled_groups_one.insert(GROUP_DB); | 313 expected_enabled_groups_one.insert(GROUP_DB); |
| 304 | 314 |
| 305 std::set<ModelSafeGroup> expected_enabled_groups_two; | 315 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 306 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 316 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 317 expected_enabled_groups_two.insert(GROUP_CONTROL); |
| 307 expected_enabled_groups_two.insert(GROUP_DB); | 318 expected_enabled_groups_two.insert(GROUP_DB); |
| 308 expected_enabled_groups_two.insert(GROUP_UI); | 319 expected_enabled_groups_two.insert(GROUP_UI); |
| 309 | 320 |
| 310 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); | 321 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); |
| 311 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 322 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| 312 | 323 |
| 313 one.Coalesce(two); | 324 one.Coalesce(two); |
| 314 | 325 |
| 315 EXPECT_EQ(expected_enabled_groups_two, one.GetEnabledGroups()); | 326 EXPECT_EQ(expected_enabled_groups_two, one.GetEnabledGroups()); |
| 316 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 327 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 335 std::string()); | 346 std::string()); |
| 336 ModelTypePayloadMap all_types = | 347 ModelTypePayloadMap all_types = |
| 337 ModelTypePayloadMapFromEnumSet( | 348 ModelTypePayloadMapFromEnumSet( |
| 338 ParamsMeaningAllEnabledTypes(), | 349 ParamsMeaningAllEnabledTypes(), |
| 339 std::string()); | 350 std::string()); |
| 340 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 351 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 341 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 352 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 342 | 353 |
| 343 scoped_refptr<ModelSafeWorker> passive_worker( | 354 scoped_refptr<ModelSafeWorker> passive_worker( |
| 344 new FakeModelWorker(GROUP_PASSIVE)); | 355 new FakeModelWorker(GROUP_PASSIVE)); |
| 356 scoped_refptr<ModelSafeWorker> control_worker( |
| 357 new FakeModelWorker(GROUP_CONTROL)); |
| 345 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 358 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 346 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 359 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 347 workers_one.push_back(passive_worker); | 360 workers_one.push_back(passive_worker); |
| 361 workers_one.push_back(control_worker); |
| 348 workers_one.push_back(db_worker); | 362 workers_one.push_back(db_worker); |
| 349 workers_two.push_back(passive_worker); | 363 workers_two.push_back(passive_worker); |
| 364 workers_two.push_back(control_worker); |
| 350 workers_two.push_back(db_worker); | 365 workers_two.push_back(db_worker); |
| 351 workers_two.push_back(ui_worker); | 366 workers_two.push_back(ui_worker); |
| 352 routes_one[AUTOFILL] = GROUP_DB; | 367 routes_one[AUTOFILL] = GROUP_DB; |
| 353 routes_two[AUTOFILL] = GROUP_DB; | 368 routes_two[AUTOFILL] = GROUP_DB; |
| 354 routes_two[BOOKMARKS] = GROUP_UI; | 369 routes_two[BOOKMARKS] = GROUP_UI; |
| 355 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 370 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 356 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 371 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 357 | 372 |
| 358 std::set<ModelSafeGroup> expected_enabled_groups_one; | 373 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 359 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 374 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 375 expected_enabled_groups_one.insert(GROUP_CONTROL); |
| 360 expected_enabled_groups_one.insert(GROUP_DB); | 376 expected_enabled_groups_one.insert(GROUP_DB); |
| 361 | 377 |
| 362 std::set<ModelSafeGroup> expected_enabled_groups_two; | 378 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 363 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 379 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 380 expected_enabled_groups_two.insert(GROUP_CONTROL); |
| 364 expected_enabled_groups_two.insert(GROUP_DB); | 381 expected_enabled_groups_two.insert(GROUP_DB); |
| 365 expected_enabled_groups_two.insert(GROUP_UI); | 382 expected_enabled_groups_two.insert(GROUP_UI); |
| 366 | 383 |
| 367 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); | 384 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); |
| 368 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 385 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| 369 | 386 |
| 370 two.RebaseRoutingInfoWithLatest(one); | 387 two.RebaseRoutingInfoWithLatest(one); |
| 371 | 388 |
| 372 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); | 389 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); |
| 373 EXPECT_EQ(expected_enabled_groups_one, two.GetEnabledGroups()); | 390 EXPECT_EQ(expected_enabled_groups_one, two.GetEnabledGroups()); |
| 374 | 391 |
| 375 // Make sure the source has not been touched. | 392 // Make sure the source has not been touched. |
| 376 EXPECT_EQ(two.source().updates_source, | 393 EXPECT_EQ(two.source().updates_source, |
| 377 sync_pb::GetUpdatesCallerInfo::LOCAL); | 394 sync_pb::GetUpdatesCallerInfo::LOCAL); |
| 378 | 395 |
| 379 // Make sure the payload is reduced to one. | 396 // Make sure the payload is reduced to one. |
| 380 EXPECT_EQ(one_type, two.source().types); | 397 EXPECT_EQ(one_type, two.source().types); |
| 381 | 398 |
| 382 // Make sure the workers are udpated. | 399 // Make sure the workers are udpated. |
| 383 std::vector<ModelSafeWorker*>::const_iterator it_db = | 400 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 384 std::find(two.workers().begin(), two.workers().end(), db_worker); | 401 std::find(two.workers().begin(), two.workers().end(), db_worker); |
| 385 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 402 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 386 std::find(two.workers().begin(), two.workers().end(), ui_worker); | 403 std::find(two.workers().begin(), two.workers().end(), ui_worker); |
| 387 EXPECT_NE(it_db, two.workers().end()); | 404 EXPECT_NE(it_db, two.workers().end()); |
| 388 EXPECT_EQ(it_ui, two.workers().end()); | 405 EXPECT_EQ(it_ui, two.workers().end()); |
| 389 EXPECT_EQ(two.workers().size(), 2U); | 406 EXPECT_EQ(two.workers().size(), 3U); |
| 390 | 407 |
| 391 // Make sure the model safe routing info is reduced to one type. | 408 // Make sure the model safe routing info is reduced to one type. |
| 392 ModelSafeRoutingInfo::const_iterator it = | 409 ModelSafeRoutingInfo::const_iterator it = |
| 393 two.routing_info().find(AUTOFILL); | 410 two.routing_info().find(AUTOFILL); |
| 394 // Note that attempting to use EXPECT_NE would fail for an Android build due | 411 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 395 // to seeming incompatibility with gtest and stlport. | 412 // to seeming incompatibility with gtest and stlport. |
| 396 EXPECT_TRUE(it != two.routing_info().end()); | 413 EXPECT_TRUE(it != two.routing_info().end()); |
| 397 EXPECT_EQ(it->second, GROUP_DB); | 414 EXPECT_EQ(it->second, GROUP_DB); |
| 398 EXPECT_EQ(two.routing_info().size(), 1U); | 415 EXPECT_EQ(two.routing_info().size(), 1U); |
| 399 } | 416 } |
| 400 | 417 |
| 401 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { | 418 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { |
| 402 std::vector<ModelSafeWorker*> workers_first, workers_second; | 419 std::vector<ModelSafeWorker*> workers_first, workers_second; |
| 403 ModelSafeRoutingInfo routes_first, routes_second; | 420 ModelSafeRoutingInfo routes_first, routes_second; |
| 404 ModelTypePayloadMap all_types = | 421 ModelTypePayloadMap all_types = |
| 405 ModelTypePayloadMapFromEnumSet( | 422 ModelTypePayloadMapFromEnumSet( |
| 406 ParamsMeaningAllEnabledTypes(), | 423 ParamsMeaningAllEnabledTypes(), |
| 407 std::string()); | 424 std::string()); |
| 408 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, | 425 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, |
| 409 all_types); | 426 all_types); |
| 410 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, | 427 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, |
| 411 all_types); | 428 all_types); |
| 412 | 429 |
| 413 scoped_refptr<ModelSafeWorker> passive_worker( | 430 scoped_refptr<ModelSafeWorker> passive_worker( |
| 414 new FakeModelWorker(GROUP_PASSIVE)); | 431 new FakeModelWorker(GROUP_PASSIVE)); |
| 432 scoped_refptr<ModelSafeWorker> control_worker( |
| 433 new FakeModelWorker(GROUP_CONTROL)); |
| 415 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 434 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 416 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 435 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 417 workers_first.push_back(passive_worker); | 436 workers_first.push_back(passive_worker); |
| 437 workers_first.push_back(control_worker); |
| 418 workers_first.push_back(db_worker); | 438 workers_first.push_back(db_worker); |
| 419 workers_first.push_back(ui_worker); | 439 workers_first.push_back(ui_worker); |
| 420 workers_second.push_back(passive_worker); | 440 workers_second.push_back(passive_worker); |
| 441 workers_second.push_back(control_worker); |
| 421 workers_second.push_back(db_worker); | 442 workers_second.push_back(db_worker); |
| 422 workers_second.push_back(ui_worker); | 443 workers_second.push_back(ui_worker); |
| 423 routes_first[AUTOFILL] = GROUP_DB; | 444 routes_first[AUTOFILL] = GROUP_DB; |
| 424 routes_first[BOOKMARKS] = GROUP_UI; | 445 routes_first[BOOKMARKS] = GROUP_UI; |
| 425 routes_second[AUTOFILL] = GROUP_DB; | 446 routes_second[AUTOFILL] = GROUP_DB; |
| 426 routes_second[BOOKMARKS] = GROUP_UI; | 447 routes_second[BOOKMARKS] = GROUP_UI; |
| 427 SyncSession first(context_.get(), this, source_first, routes_first, | 448 SyncSession first(context_.get(), this, source_first, routes_first, |
| 428 workers_first); | 449 workers_first); |
| 429 SyncSession second(context_.get(), this, source_second, routes_second, | 450 SyncSession second(context_.get(), this, source_second, routes_second, |
| 430 workers_second); | 451 workers_second); |
| 431 | 452 |
| 432 std::set<ModelSafeGroup> expected_enabled_groups; | 453 std::set<ModelSafeGroup> expected_enabled_groups; |
| 433 expected_enabled_groups.insert(GROUP_PASSIVE); | 454 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 455 expected_enabled_groups.insert(GROUP_CONTROL); |
| 434 expected_enabled_groups.insert(GROUP_DB); | 456 expected_enabled_groups.insert(GROUP_DB); |
| 435 expected_enabled_groups.insert(GROUP_UI); | 457 expected_enabled_groups.insert(GROUP_UI); |
| 436 | 458 |
| 437 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); | 459 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); |
| 438 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); | 460 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); |
| 439 | 461 |
| 440 second.RebaseRoutingInfoWithLatest(first); | 462 second.RebaseRoutingInfoWithLatest(first); |
| 441 | 463 |
| 442 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); | 464 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); |
| 443 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); | 465 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); |
| 444 | 466 |
| 445 // Make sure the source has not been touched. | 467 // Make sure the source has not been touched. |
| 446 EXPECT_EQ(second.source().updates_source, | 468 EXPECT_EQ(second.source().updates_source, |
| 447 sync_pb::GetUpdatesCallerInfo::LOCAL); | 469 sync_pb::GetUpdatesCallerInfo::LOCAL); |
| 448 | 470 |
| 449 // Make sure our payload is still the same. | 471 // Make sure our payload is still the same. |
| 450 EXPECT_EQ(all_types, second.source().types); | 472 EXPECT_EQ(all_types, second.source().types); |
| 451 | 473 |
| 452 // Make sure the workers are still the same. | 474 // Make sure the workers are still the same. |
| 453 std::vector<ModelSafeWorker*>::const_iterator it_passive = | 475 std::vector<ModelSafeWorker*>::const_iterator it_passive = |
| 454 std::find(second.workers().begin(), second.workers().end(), | 476 std::find(second.workers().begin(), second.workers().end(), |
| 455 passive_worker); | 477 passive_worker); |
| 456 std::vector<ModelSafeWorker*>::const_iterator it_db = | 478 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 457 std::find(second.workers().begin(), second.workers().end(), db_worker); | 479 std::find(second.workers().begin(), second.workers().end(), db_worker); |
| 458 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 480 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 459 std::find(second.workers().begin(), second.workers().end(), ui_worker); | 481 std::find(second.workers().begin(), second.workers().end(), ui_worker); |
| 460 EXPECT_NE(it_passive, second.workers().end()); | 482 EXPECT_NE(it_passive, second.workers().end()); |
| 461 EXPECT_NE(it_db, second.workers().end()); | 483 EXPECT_NE(it_db, second.workers().end()); |
| 462 EXPECT_NE(it_ui, second.workers().end()); | 484 EXPECT_NE(it_ui, second.workers().end()); |
| 463 EXPECT_EQ(second.workers().size(), 3U); | 485 EXPECT_EQ(second.workers().size(), 4U); |
| 464 | 486 |
| 465 // Make sure the model safe routing info is reduced to first type. | 487 // Make sure the model safe routing info is reduced to first type. |
| 466 ModelSafeRoutingInfo::const_iterator it1 = | 488 ModelSafeRoutingInfo::const_iterator it1 = |
| 467 second.routing_info().find(AUTOFILL); | 489 second.routing_info().find(AUTOFILL); |
| 468 ModelSafeRoutingInfo::const_iterator it2 = | 490 ModelSafeRoutingInfo::const_iterator it2 = |
| 469 second.routing_info().find(BOOKMARKS); | 491 second.routing_info().find(BOOKMARKS); |
| 470 | 492 |
| 471 // Note that attempting to use EXPECT_NE would fail for an Android build due | 493 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 472 // to seeming incompatibility with gtest and stlport. | 494 // to seeming incompatibility with gtest and stlport. |
| 473 EXPECT_TRUE(it1 != second.routing_info().end()); | 495 EXPECT_TRUE(it1 != second.routing_info().end()); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 496 | 518 |
| 497 ASSERT_EQ(3U, types_with_payloads.size()); | 519 ASSERT_EQ(3U, types_with_payloads.size()); |
| 498 EXPECT_EQ(types_with_payloads[BOOKMARKS], payload); | 520 EXPECT_EQ(types_with_payloads[BOOKMARKS], payload); |
| 499 EXPECT_EQ(types_with_payloads[PASSWORDS], payload); | 521 EXPECT_EQ(types_with_payloads[PASSWORDS], payload); |
| 500 EXPECT_EQ(types_with_payloads[AUTOFILL], payload); | 522 EXPECT_EQ(types_with_payloads[AUTOFILL], payload); |
| 501 } | 523 } |
| 502 | 524 |
| 503 } // namespace | 525 } // namespace |
| 504 } // namespace sessions | 526 } // namespace sessions |
| 505 } // namespace syncer | 527 } // namespace syncer |
| OLD | NEW |