| 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 context_.reset( | 49 context_.reset( |
| 50 new SyncSessionContext( | 50 new SyncSessionContext( |
| 51 NULL, NULL, routing_info, workers, &extensions_activity_monitor_, | 51 NULL, NULL, routing_info, workers, &extensions_activity_monitor_, |
| 52 throttled_data_type_tracker_.get(), | 52 throttled_data_type_tracker_.get(), |
| 53 std::vector<SyncEngineEventListener*>(), NULL, NULL)); | 53 std::vector<SyncEngineEventListener*>(), NULL, NULL)); |
| 54 routes_.clear(); | 54 routes_.clear(); |
| 55 routes_[syncable::BOOKMARKS] = GROUP_UI; | 55 routes_[syncable::BOOKMARKS] = GROUP_UI; |
| 56 routes_[syncable::AUTOFILL] = GROUP_DB; | 56 routes_[syncable::AUTOFILL] = GROUP_DB; |
| 57 scoped_refptr<ModelSafeWorker> passive_worker( | 57 scoped_refptr<ModelSafeWorker> passive_worker( |
| 58 new FakeModelWorker(GROUP_PASSIVE)); | 58 new FakeModelWorker(GROUP_PASSIVE)); |
| 59 scoped_refptr<ModelSafeWorker> control_worker( |
| 60 new FakeModelWorker(GROUP_CONTROL)); |
| 59 scoped_refptr<ModelSafeWorker> ui_worker( | 61 scoped_refptr<ModelSafeWorker> ui_worker( |
| 60 new FakeModelWorker(GROUP_UI)); | 62 new FakeModelWorker(GROUP_UI)); |
| 61 scoped_refptr<ModelSafeWorker> db_worker( | 63 scoped_refptr<ModelSafeWorker> db_worker( |
| 62 new FakeModelWorker(GROUP_DB)); | 64 new FakeModelWorker(GROUP_DB)); |
| 63 workers_.clear(); | 65 workers_.clear(); |
| 66 workers_.push_back(control_worker); |
| 64 workers_.push_back(passive_worker); | 67 workers_.push_back(passive_worker); |
| 65 workers_.push_back(ui_worker); | 68 workers_.push_back(ui_worker); |
| 66 workers_.push_back(db_worker); | 69 workers_.push_back(db_worker); |
| 67 session_.reset(MakeSession()); | 70 session_.reset(MakeSession()); |
| 68 throttled_data_type_tracker_.reset(new ThrottledDataTypeTracker(NULL)); | 71 throttled_data_type_tracker_.reset(new ThrottledDataTypeTracker(NULL)); |
| 69 } | 72 } |
| 70 virtual void TearDown() { | 73 virtual void TearDown() { |
| 71 session_.reset(); | 74 session_.reset(); |
| 72 context_.reset(); | 75 context_.reset(); |
| 73 } | 76 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 FakeExtensionsActivityMonitor extensions_activity_monitor_; | 139 FakeExtensionsActivityMonitor extensions_activity_monitor_; |
| 137 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; | 140 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; |
| 138 }; | 141 }; |
| 139 | 142 |
| 140 TEST_F(SyncSessionTest, EnabledGroupsEmpty) { | 143 TEST_F(SyncSessionTest, EnabledGroupsEmpty) { |
| 141 routes_.clear(); | 144 routes_.clear(); |
| 142 workers_.clear(); | 145 workers_.clear(); |
| 143 scoped_ptr<SyncSession> session(MakeSession()); | 146 scoped_ptr<SyncSession> session(MakeSession()); |
| 144 std::set<ModelSafeGroup> expected_enabled_groups; | 147 std::set<ModelSafeGroup> expected_enabled_groups; |
| 145 expected_enabled_groups.insert(GROUP_PASSIVE); | 148 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 149 expected_enabled_groups.insert(GROUP_CONTROL); |
| 146 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); | 150 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); |
| 147 } | 151 } |
| 148 | 152 |
| 149 TEST_F(SyncSessionTest, EnabledGroups) { | 153 TEST_F(SyncSessionTest, EnabledGroups) { |
| 150 scoped_ptr<SyncSession> session(MakeSession()); | 154 scoped_ptr<SyncSession> session(MakeSession()); |
| 151 std::set<ModelSafeGroup> expected_enabled_groups; | 155 std::set<ModelSafeGroup> expected_enabled_groups; |
| 152 expected_enabled_groups.insert(GROUP_PASSIVE); | 156 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 157 expected_enabled_groups.insert(GROUP_CONTROL); |
| 153 expected_enabled_groups.insert(GROUP_UI); | 158 expected_enabled_groups.insert(GROUP_UI); |
| 154 expected_enabled_groups.insert(GROUP_DB); | 159 expected_enabled_groups.insert(GROUP_DB); |
| 155 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); | 160 EXPECT_EQ(expected_enabled_groups, session->GetEnabledGroups()); |
| 156 } | 161 } |
| 157 | 162 |
| 158 TEST_F(SyncSessionTest, EnabledGroupsWithConflictsEmpty) { | 163 TEST_F(SyncSessionTest, EnabledGroupsWithConflictsEmpty) { |
| 159 scoped_ptr<SyncSession> session(MakeSession()); | 164 scoped_ptr<SyncSession> session(MakeSession()); |
| 160 // Auto-create conflict progress. This shouldn't put that group in | 165 // Auto-create conflict progress. This shouldn't put that group in |
| 161 // conflict. | 166 // conflict. |
| 162 session->mutable_status_controller()-> | 167 session->mutable_status_controller()-> |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 std::string()); | 278 std::string()); |
| 274 syncable::ModelTypePayloadMap all_types = | 279 syncable::ModelTypePayloadMap all_types = |
| 275 syncable::ModelTypePayloadMapFromEnumSet( | 280 syncable::ModelTypePayloadMapFromEnumSet( |
| 276 ParamsMeaningAllEnabledTypes(), | 281 ParamsMeaningAllEnabledTypes(), |
| 277 std::string()); | 282 std::string()); |
| 278 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 283 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 279 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 284 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 280 | 285 |
| 281 scoped_refptr<ModelSafeWorker> passive_worker( | 286 scoped_refptr<ModelSafeWorker> passive_worker( |
| 282 new FakeModelWorker(GROUP_PASSIVE)); | 287 new FakeModelWorker(GROUP_PASSIVE)); |
| 288 scoped_refptr<ModelSafeWorker> control_worker( |
| 289 new FakeModelWorker(GROUP_CONTROL)); |
| 283 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 290 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 284 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 291 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 285 workers_one.push_back(passive_worker); | 292 workers_one.push_back(passive_worker); |
| 293 workers_one.push_back(control_worker); |
| 286 workers_one.push_back(db_worker); | 294 workers_one.push_back(db_worker); |
| 287 workers_two.push_back(passive_worker); | 295 workers_two.push_back(passive_worker); |
| 296 workers_two.push_back(control_worker); |
| 288 workers_two.push_back(db_worker); | 297 workers_two.push_back(db_worker); |
| 289 workers_two.push_back(ui_worker); | 298 workers_two.push_back(ui_worker); |
| 290 routes_one[syncable::AUTOFILL] = GROUP_DB; | 299 routes_one[syncable::AUTOFILL] = GROUP_DB; |
| 291 routes_two[syncable::AUTOFILL] = GROUP_DB; | 300 routes_two[syncable::AUTOFILL] = GROUP_DB; |
| 292 routes_two[syncable::BOOKMARKS] = GROUP_UI; | 301 routes_two[syncable::BOOKMARKS] = GROUP_UI; |
| 293 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 302 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 294 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 303 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 295 | 304 |
| 296 std::set<ModelSafeGroup> expected_enabled_groups_one; | 305 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 297 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 306 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 307 expected_enabled_groups_one.insert(GROUP_CONTROL); |
| 298 expected_enabled_groups_one.insert(GROUP_DB); | 308 expected_enabled_groups_one.insert(GROUP_DB); |
| 299 | 309 |
| 300 std::set<ModelSafeGroup> expected_enabled_groups_two; | 310 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 301 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 311 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 312 expected_enabled_groups_two.insert(GROUP_CONTROL); |
| 302 expected_enabled_groups_two.insert(GROUP_DB); | 313 expected_enabled_groups_two.insert(GROUP_DB); |
| 303 expected_enabled_groups_two.insert(GROUP_UI); | 314 expected_enabled_groups_two.insert(GROUP_UI); |
| 304 | 315 |
| 305 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); | 316 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); |
| 306 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 317 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| 307 | 318 |
| 308 one.Coalesce(two); | 319 one.Coalesce(two); |
| 309 | 320 |
| 310 EXPECT_EQ(expected_enabled_groups_two, one.GetEnabledGroups()); | 321 EXPECT_EQ(expected_enabled_groups_two, one.GetEnabledGroups()); |
| 311 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 322 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 330 std::string()); | 341 std::string()); |
| 331 syncable::ModelTypePayloadMap all_types = | 342 syncable::ModelTypePayloadMap all_types = |
| 332 syncable::ModelTypePayloadMapFromEnumSet( | 343 syncable::ModelTypePayloadMapFromEnumSet( |
| 333 ParamsMeaningAllEnabledTypes(), | 344 ParamsMeaningAllEnabledTypes(), |
| 334 std::string()); | 345 std::string()); |
| 335 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 346 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 336 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 347 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 337 | 348 |
| 338 scoped_refptr<ModelSafeWorker> passive_worker( | 349 scoped_refptr<ModelSafeWorker> passive_worker( |
| 339 new FakeModelWorker(GROUP_PASSIVE)); | 350 new FakeModelWorker(GROUP_PASSIVE)); |
| 351 scoped_refptr<ModelSafeWorker> control_worker( |
| 352 new FakeModelWorker(GROUP_CONTROL)); |
| 340 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 353 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 341 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 354 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 342 workers_one.push_back(passive_worker); | 355 workers_one.push_back(passive_worker); |
| 356 workers_one.push_back(control_worker); |
| 343 workers_one.push_back(db_worker); | 357 workers_one.push_back(db_worker); |
| 344 workers_two.push_back(passive_worker); | 358 workers_two.push_back(passive_worker); |
| 359 workers_two.push_back(control_worker); |
| 345 workers_two.push_back(db_worker); | 360 workers_two.push_back(db_worker); |
| 346 workers_two.push_back(ui_worker); | 361 workers_two.push_back(ui_worker); |
| 347 routes_one[syncable::AUTOFILL] = GROUP_DB; | 362 routes_one[syncable::AUTOFILL] = GROUP_DB; |
| 348 routes_two[syncable::AUTOFILL] = GROUP_DB; | 363 routes_two[syncable::AUTOFILL] = GROUP_DB; |
| 349 routes_two[syncable::BOOKMARKS] = GROUP_UI; | 364 routes_two[syncable::BOOKMARKS] = GROUP_UI; |
| 350 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 365 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 351 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 366 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 352 | 367 |
| 353 std::set<ModelSafeGroup> expected_enabled_groups_one; | 368 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 354 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 369 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 370 expected_enabled_groups_one.insert(GROUP_CONTROL); |
| 355 expected_enabled_groups_one.insert(GROUP_DB); | 371 expected_enabled_groups_one.insert(GROUP_DB); |
| 356 | 372 |
| 357 std::set<ModelSafeGroup> expected_enabled_groups_two; | 373 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 358 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 374 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 375 expected_enabled_groups_two.insert(GROUP_CONTROL); |
| 359 expected_enabled_groups_two.insert(GROUP_DB); | 376 expected_enabled_groups_two.insert(GROUP_DB); |
| 360 expected_enabled_groups_two.insert(GROUP_UI); | 377 expected_enabled_groups_two.insert(GROUP_UI); |
| 361 | 378 |
| 362 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); | 379 EXPECT_EQ(expected_enabled_groups_one, one.GetEnabledGroups()); |
| 363 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); | 380 EXPECT_EQ(expected_enabled_groups_two, two.GetEnabledGroups()); |
| 364 | 381 |
| 365 two.RebaseRoutingInfoWithLatest(one); | 382 two.RebaseRoutingInfoWithLatest(one); |
| 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_one, two.GetEnabledGroups()); | 385 EXPECT_EQ(expected_enabled_groups_one, two.GetEnabledGroups()); |
| 369 | 386 |
| 370 // Make sure the source has not been touched. | 387 // Make sure the source has not been touched. |
| 371 EXPECT_EQ(two.source().updates_source, | 388 EXPECT_EQ(two.source().updates_source, |
| 372 sync_pb::GetUpdatesCallerInfo::LOCAL); | 389 sync_pb::GetUpdatesCallerInfo::LOCAL); |
| 373 | 390 |
| 374 // Make sure the payload is reduced to one. | 391 // Make sure the payload is reduced to one. |
| 375 EXPECT_EQ(one_type, two.source().types); | 392 EXPECT_EQ(one_type, two.source().types); |
| 376 | 393 |
| 377 // Make sure the workers are udpated. | 394 // Make sure the workers are udpated. |
| 378 std::vector<ModelSafeWorker*>::const_iterator it_db = | 395 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 379 std::find(two.workers().begin(), two.workers().end(), db_worker); | 396 std::find(two.workers().begin(), two.workers().end(), db_worker); |
| 380 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 397 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 381 std::find(two.workers().begin(), two.workers().end(), ui_worker); | 398 std::find(two.workers().begin(), two.workers().end(), ui_worker); |
| 382 EXPECT_NE(it_db, two.workers().end()); | 399 EXPECT_NE(it_db, two.workers().end()); |
| 383 EXPECT_EQ(it_ui, two.workers().end()); | 400 EXPECT_EQ(it_ui, two.workers().end()); |
| 384 EXPECT_EQ(two.workers().size(), 2U); | 401 EXPECT_EQ(two.workers().size(), 3U); |
| 385 | 402 |
| 386 // Make sure the model safe routing info is reduced to one type. | 403 // Make sure the model safe routing info is reduced to one type. |
| 387 ModelSafeRoutingInfo::const_iterator it = | 404 ModelSafeRoutingInfo::const_iterator it = |
| 388 two.routing_info().find(syncable::AUTOFILL); | 405 two.routing_info().find(syncable::AUTOFILL); |
| 389 // Note that attempting to use EXPECT_NE would fail for an Android build due | 406 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 390 // to seeming incompatibility with gtest and stlport. | 407 // to seeming incompatibility with gtest and stlport. |
| 391 EXPECT_TRUE(it != two.routing_info().end()); | 408 EXPECT_TRUE(it != two.routing_info().end()); |
| 392 EXPECT_EQ(it->second, GROUP_DB); | 409 EXPECT_EQ(it->second, GROUP_DB); |
| 393 EXPECT_EQ(two.routing_info().size(), 1U); | 410 EXPECT_EQ(two.routing_info().size(), 1U); |
| 394 } | 411 } |
| 395 | 412 |
| 396 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { | 413 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { |
| 397 std::vector<ModelSafeWorker*> workers_first, workers_second; | 414 std::vector<ModelSafeWorker*> workers_first, workers_second; |
| 398 ModelSafeRoutingInfo routes_first, routes_second; | 415 ModelSafeRoutingInfo routes_first, routes_second; |
| 399 syncable::ModelTypePayloadMap all_types = | 416 syncable::ModelTypePayloadMap all_types = |
| 400 syncable::ModelTypePayloadMapFromEnumSet( | 417 syncable::ModelTypePayloadMapFromEnumSet( |
| 401 ParamsMeaningAllEnabledTypes(), | 418 ParamsMeaningAllEnabledTypes(), |
| 402 std::string()); | 419 std::string()); |
| 403 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, | 420 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, |
| 404 all_types); | 421 all_types); |
| 405 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, | 422 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, |
| 406 all_types); | 423 all_types); |
| 407 | 424 |
| 408 scoped_refptr<ModelSafeWorker> passive_worker( | 425 scoped_refptr<ModelSafeWorker> passive_worker( |
| 409 new FakeModelWorker(GROUP_PASSIVE)); | 426 new FakeModelWorker(GROUP_PASSIVE)); |
| 427 scoped_refptr<ModelSafeWorker> control_worker( |
| 428 new FakeModelWorker(GROUP_CONTROL)); |
| 410 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 429 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 411 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 430 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 412 workers_first.push_back(passive_worker); | 431 workers_first.push_back(passive_worker); |
| 432 workers_first.push_back(control_worker); |
| 413 workers_first.push_back(db_worker); | 433 workers_first.push_back(db_worker); |
| 414 workers_first.push_back(ui_worker); | 434 workers_first.push_back(ui_worker); |
| 415 workers_second.push_back(passive_worker); | 435 workers_second.push_back(passive_worker); |
| 436 workers_second.push_back(control_worker); |
| 416 workers_second.push_back(db_worker); | 437 workers_second.push_back(db_worker); |
| 417 workers_second.push_back(ui_worker); | 438 workers_second.push_back(ui_worker); |
| 418 routes_first[syncable::AUTOFILL] = GROUP_DB; | 439 routes_first[syncable::AUTOFILL] = GROUP_DB; |
| 419 routes_first[syncable::BOOKMARKS] = GROUP_UI; | 440 routes_first[syncable::BOOKMARKS] = GROUP_UI; |
| 420 routes_second[syncable::AUTOFILL] = GROUP_DB; | 441 routes_second[syncable::AUTOFILL] = GROUP_DB; |
| 421 routes_second[syncable::BOOKMARKS] = GROUP_UI; | 442 routes_second[syncable::BOOKMARKS] = GROUP_UI; |
| 422 SyncSession first(context_.get(), this, source_first, routes_first, | 443 SyncSession first(context_.get(), this, source_first, routes_first, |
| 423 workers_first); | 444 workers_first); |
| 424 SyncSession second(context_.get(), this, source_second, routes_second, | 445 SyncSession second(context_.get(), this, source_second, routes_second, |
| 425 workers_second); | 446 workers_second); |
| 426 | 447 |
| 427 std::set<ModelSafeGroup> expected_enabled_groups; | 448 std::set<ModelSafeGroup> expected_enabled_groups; |
| 428 expected_enabled_groups.insert(GROUP_PASSIVE); | 449 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 450 expected_enabled_groups.insert(GROUP_CONTROL); |
| 429 expected_enabled_groups.insert(GROUP_DB); | 451 expected_enabled_groups.insert(GROUP_DB); |
| 430 expected_enabled_groups.insert(GROUP_UI); | 452 expected_enabled_groups.insert(GROUP_UI); |
| 431 | 453 |
| 432 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); | 454 EXPECT_EQ(expected_enabled_groups, first.GetEnabledGroups()); |
| 433 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); | 455 EXPECT_EQ(expected_enabled_groups, second.GetEnabledGroups()); |
| 434 | 456 |
| 435 second.RebaseRoutingInfoWithLatest(first); | 457 second.RebaseRoutingInfoWithLatest(first); |
| 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 // Make sure the source has not been touched. | 462 // Make sure the source has not been touched. |
| 441 EXPECT_EQ(second.source().updates_source, | 463 EXPECT_EQ(second.source().updates_source, |
| 442 sync_pb::GetUpdatesCallerInfo::LOCAL); | 464 sync_pb::GetUpdatesCallerInfo::LOCAL); |
| 443 | 465 |
| 444 // Make sure our payload is still the same. | 466 // Make sure our payload is still the same. |
| 445 EXPECT_EQ(all_types, second.source().types); | 467 EXPECT_EQ(all_types, second.source().types); |
| 446 | 468 |
| 447 // Make sure the workers are still the same. | 469 // Make sure the workers are still the same. |
| 448 std::vector<ModelSafeWorker*>::const_iterator it_passive = | 470 std::vector<ModelSafeWorker*>::const_iterator it_passive = |
| 449 std::find(second.workers().begin(), second.workers().end(), | 471 std::find(second.workers().begin(), second.workers().end(), |
| 450 passive_worker); | 472 passive_worker); |
| 451 std::vector<ModelSafeWorker*>::const_iterator it_db = | 473 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 452 std::find(second.workers().begin(), second.workers().end(), db_worker); | 474 std::find(second.workers().begin(), second.workers().end(), db_worker); |
| 453 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 475 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 454 std::find(second.workers().begin(), second.workers().end(), ui_worker); | 476 std::find(second.workers().begin(), second.workers().end(), ui_worker); |
| 455 EXPECT_NE(it_passive, second.workers().end()); | 477 EXPECT_NE(it_passive, second.workers().end()); |
| 456 EXPECT_NE(it_db, second.workers().end()); | 478 EXPECT_NE(it_db, second.workers().end()); |
| 457 EXPECT_NE(it_ui, second.workers().end()); | 479 EXPECT_NE(it_ui, second.workers().end()); |
| 458 EXPECT_EQ(second.workers().size(), 3U); | 480 EXPECT_EQ(second.workers().size(), 4U); |
| 459 | 481 |
| 460 // Make sure the model safe routing info is reduced to first type. | 482 // Make sure the model safe routing info is reduced to first type. |
| 461 ModelSafeRoutingInfo::const_iterator it1 = | 483 ModelSafeRoutingInfo::const_iterator it1 = |
| 462 second.routing_info().find(syncable::AUTOFILL); | 484 second.routing_info().find(syncable::AUTOFILL); |
| 463 ModelSafeRoutingInfo::const_iterator it2 = | 485 ModelSafeRoutingInfo::const_iterator it2 = |
| 464 second.routing_info().find(syncable::BOOKMARKS); | 486 second.routing_info().find(syncable::BOOKMARKS); |
| 465 | 487 |
| 466 // Note that attempting to use EXPECT_NE would fail for an Android build due | 488 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 467 // to seeming incompatibility with gtest and stlport. | 489 // to seeming incompatibility with gtest and stlport. |
| 468 EXPECT_TRUE(it1 != second.routing_info().end()); | 490 EXPECT_TRUE(it1 != second.routing_info().end()); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 EXPECT_EQ(empty_payload, original[syncable::BOOKMARKS]); | 553 EXPECT_EQ(empty_payload, original[syncable::BOOKMARKS]); |
| 532 EXPECT_EQ(payload1, original[syncable::PASSWORDS]); | 554 EXPECT_EQ(payload1, original[syncable::PASSWORDS]); |
| 533 EXPECT_EQ(payload1, original[syncable::AUTOFILL]); | 555 EXPECT_EQ(payload1, original[syncable::AUTOFILL]); |
| 534 EXPECT_EQ(payload2, original[syncable::SESSIONS]); | 556 EXPECT_EQ(payload2, original[syncable::SESSIONS]); |
| 535 EXPECT_EQ(payload3, original[syncable::THEMES]); | 557 EXPECT_EQ(payload3, original[syncable::THEMES]); |
| 536 } | 558 } |
| 537 | 559 |
| 538 } // namespace | 560 } // namespace |
| 539 } // namespace sessions | 561 } // namespace sessions |
| 540 } // namespace csync | 562 } // namespace csync |
| OLD | NEW |