| 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 GetModelSafeRoutingInfo(&routing_info); | 47 GetModelSafeRoutingInfo(&routing_info); |
| 48 GetWorkers(&workers); | 48 GetWorkers(&workers); |
| 49 | 49 |
| 50 context_.reset( | 50 context_.reset( |
| 51 new SyncSessionContext( | 51 new SyncSessionContext( |
| 52 NULL, NULL, routing_info, workers, &extensions_activity_monitor_, | 52 NULL, NULL, routing_info, workers, &extensions_activity_monitor_, |
| 53 throttled_data_type_tracker_.get(), | 53 throttled_data_type_tracker_.get(), |
| 54 std::vector<SyncEngineEventListener*>(), NULL, NULL)); | 54 std::vector<SyncEngineEventListener*>(), NULL, NULL)); |
| 55 routes_.clear(); | 55 routes_.clear(); |
| 56 routes_[syncer::BOOKMARKS] = GROUP_UI; | 56 routes_[BOOKMARKS] = GROUP_UI; |
| 57 routes_[syncer::AUTOFILL] = GROUP_DB; | 57 routes_[AUTOFILL] = GROUP_DB; |
| 58 scoped_refptr<ModelSafeWorker> passive_worker( | 58 scoped_refptr<ModelSafeWorker> passive_worker( |
| 59 new FakeModelWorker(GROUP_PASSIVE)); | 59 new FakeModelWorker(GROUP_PASSIVE)); |
| 60 scoped_refptr<ModelSafeWorker> ui_worker( | 60 scoped_refptr<ModelSafeWorker> ui_worker( |
| 61 new FakeModelWorker(GROUP_UI)); | 61 new FakeModelWorker(GROUP_UI)); |
| 62 scoped_refptr<ModelSafeWorker> db_worker( | 62 scoped_refptr<ModelSafeWorker> db_worker( |
| 63 new FakeModelWorker(GROUP_DB)); | 63 new FakeModelWorker(GROUP_DB)); |
| 64 workers_.clear(); | 64 workers_.clear(); |
| 65 workers_.push_back(passive_worker); | 65 workers_.push_back(passive_worker); |
| 66 workers_.push_back(ui_worker); | 66 workers_.push_back(ui_worker); |
| 67 workers_.push_back(db_worker); | 67 workers_.push_back(db_worker); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 *out = routes_; | 111 *out = routes_; |
| 112 } | 112 } |
| 113 | 113 |
| 114 StatusController* status() { return session_->mutable_status_controller(); } | 114 StatusController* status() { return session_->mutable_status_controller(); } |
| 115 protected: | 115 protected: |
| 116 void FailControllerInvocationIfDisabled(const std::string& msg) { | 116 void FailControllerInvocationIfDisabled(const std::string& msg) { |
| 117 if (!controller_invocations_allowed_) | 117 if (!controller_invocations_allowed_) |
| 118 FAIL() << msg; | 118 FAIL() << msg; |
| 119 } | 119 } |
| 120 | 120 |
| 121 syncer::ModelTypeSet ParamsMeaningAllEnabledTypes() { | 121 ModelTypeSet ParamsMeaningAllEnabledTypes() { |
| 122 syncer::ModelTypeSet request_params(syncer::BOOKMARKS, syncer::AUTOFILL); | 122 ModelTypeSet request_params(BOOKMARKS, AUTOFILL); |
| 123 return request_params; | 123 return request_params; |
| 124 } | 124 } |
| 125 | 125 |
| 126 syncer::ModelTypeSet ParamsMeaningJustOneEnabledType() { | 126 ModelTypeSet ParamsMeaningJustOneEnabledType() { |
| 127 return syncer::ModelTypeSet(syncer::AUTOFILL); | 127 return ModelTypeSet(AUTOFILL); |
| 128 } | 128 } |
| 129 | 129 |
| 130 MessageLoop message_loop_; | 130 MessageLoop message_loop_; |
| 131 bool controller_invocations_allowed_; | 131 bool controller_invocations_allowed_; |
| 132 scoped_ptr<SyncSession> session_; | 132 scoped_ptr<SyncSession> session_; |
| 133 scoped_ptr<SyncSessionContext> context_; | 133 scoped_ptr<SyncSessionContext> context_; |
| 134 std::vector<scoped_refptr<ModelSafeWorker> > workers_; | 134 std::vector<scoped_refptr<ModelSafeWorker> > workers_; |
| 135 ModelSafeRoutingInfo routes_; | 135 ModelSafeRoutingInfo routes_; |
| 136 FakeExtensionsActivityMonitor extensions_activity_monitor_; | 136 FakeExtensionsActivityMonitor extensions_activity_monitor_; |
| 137 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; | 137 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 session_->PrepareForAnotherSyncCycle(); | 259 session_->PrepareForAnotherSyncCycle(); |
| 260 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION, | 260 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION, |
| 261 session_->source().updates_source); | 261 session_->source().updates_source); |
| 262 EXPECT_FALSE(status()->conflicts_resolved()); | 262 EXPECT_FALSE(status()->conflicts_resolved()); |
| 263 EXPECT_FALSE(session_->HasMoreToSync()); | 263 EXPECT_FALSE(session_->HasMoreToSync()); |
| 264 } | 264 } |
| 265 | 265 |
| 266 TEST_F(SyncSessionTest, Coalesce) { | 266 TEST_F(SyncSessionTest, Coalesce) { |
| 267 std::vector<ModelSafeWorker*> workers_one, workers_two; | 267 std::vector<ModelSafeWorker*> workers_one, workers_two; |
| 268 ModelSafeRoutingInfo routes_one, routes_two; | 268 ModelSafeRoutingInfo routes_one, routes_two; |
| 269 syncer::ModelTypePayloadMap one_type = | 269 ModelTypePayloadMap one_type = |
| 270 syncer::ModelTypePayloadMapFromEnumSet( | 270 ModelTypePayloadMapFromEnumSet( |
| 271 ParamsMeaningJustOneEnabledType(), | 271 ParamsMeaningJustOneEnabledType(), |
| 272 std::string()); | 272 std::string()); |
| 273 syncer::ModelTypePayloadMap all_types = | 273 ModelTypePayloadMap all_types = |
| 274 syncer::ModelTypePayloadMapFromEnumSet( | 274 ModelTypePayloadMapFromEnumSet( |
| 275 ParamsMeaningAllEnabledTypes(), | 275 ParamsMeaningAllEnabledTypes(), |
| 276 std::string()); | 276 std::string()); |
| 277 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 277 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 278 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 278 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 279 | 279 |
| 280 scoped_refptr<ModelSafeWorker> passive_worker( | 280 scoped_refptr<ModelSafeWorker> passive_worker( |
| 281 new FakeModelWorker(GROUP_PASSIVE)); | 281 new FakeModelWorker(GROUP_PASSIVE)); |
| 282 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 282 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 283 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 283 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 284 workers_one.push_back(passive_worker); | 284 workers_one.push_back(passive_worker); |
| 285 workers_one.push_back(db_worker); | 285 workers_one.push_back(db_worker); |
| 286 workers_two.push_back(passive_worker); | 286 workers_two.push_back(passive_worker); |
| 287 workers_two.push_back(db_worker); | 287 workers_two.push_back(db_worker); |
| 288 workers_two.push_back(ui_worker); | 288 workers_two.push_back(ui_worker); |
| 289 routes_one[syncer::AUTOFILL] = GROUP_DB; | 289 routes_one[AUTOFILL] = GROUP_DB; |
| 290 routes_two[syncer::AUTOFILL] = GROUP_DB; | 290 routes_two[AUTOFILL] = GROUP_DB; |
| 291 routes_two[syncer::BOOKMARKS] = GROUP_UI; | 291 routes_two[BOOKMARKS] = GROUP_UI; |
| 292 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 292 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 293 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 293 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 294 | 294 |
| 295 std::set<ModelSafeGroup> expected_enabled_groups_one; | 295 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 296 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 296 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 297 expected_enabled_groups_one.insert(GROUP_DB); | 297 expected_enabled_groups_one.insert(GROUP_DB); |
| 298 | 298 |
| 299 std::set<ModelSafeGroup> expected_enabled_groups_two; | 299 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 300 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 300 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 301 expected_enabled_groups_two.insert(GROUP_DB); | 301 expected_enabled_groups_two.insert(GROUP_DB); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 316 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 316 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 317 std::find(one.workers().begin(), one.workers().end(), ui_worker); | 317 std::find(one.workers().begin(), one.workers().end(), ui_worker); |
| 318 EXPECT_NE(it_db, one.workers().end()); | 318 EXPECT_NE(it_db, one.workers().end()); |
| 319 EXPECT_NE(it_ui, one.workers().end()); | 319 EXPECT_NE(it_ui, one.workers().end()); |
| 320 EXPECT_EQ(routes_two, one.routing_info()); | 320 EXPECT_EQ(routes_two, one.routing_info()); |
| 321 } | 321 } |
| 322 | 322 |
| 323 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestRemoveOneType) { | 323 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestRemoveOneType) { |
| 324 std::vector<ModelSafeWorker*> workers_one, workers_two; | 324 std::vector<ModelSafeWorker*> workers_one, workers_two; |
| 325 ModelSafeRoutingInfo routes_one, routes_two; | 325 ModelSafeRoutingInfo routes_one, routes_two; |
| 326 syncer::ModelTypePayloadMap one_type = | 326 ModelTypePayloadMap one_type = |
| 327 syncer::ModelTypePayloadMapFromEnumSet( | 327 ModelTypePayloadMapFromEnumSet( |
| 328 ParamsMeaningJustOneEnabledType(), | 328 ParamsMeaningJustOneEnabledType(), |
| 329 std::string()); | 329 std::string()); |
| 330 syncer::ModelTypePayloadMap all_types = | 330 ModelTypePayloadMap all_types = |
| 331 syncer::ModelTypePayloadMapFromEnumSet( | 331 ModelTypePayloadMapFromEnumSet( |
| 332 ParamsMeaningAllEnabledTypes(), | 332 ParamsMeaningAllEnabledTypes(), |
| 333 std::string()); | 333 std::string()); |
| 334 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); | 334 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, one_type); |
| 335 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); | 335 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, all_types); |
| 336 | 336 |
| 337 scoped_refptr<ModelSafeWorker> passive_worker( | 337 scoped_refptr<ModelSafeWorker> passive_worker( |
| 338 new FakeModelWorker(GROUP_PASSIVE)); | 338 new FakeModelWorker(GROUP_PASSIVE)); |
| 339 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 339 scoped_refptr<ModelSafeWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 340 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 340 scoped_refptr<ModelSafeWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 341 workers_one.push_back(passive_worker); | 341 workers_one.push_back(passive_worker); |
| 342 workers_one.push_back(db_worker); | 342 workers_one.push_back(db_worker); |
| 343 workers_two.push_back(passive_worker); | 343 workers_two.push_back(passive_worker); |
| 344 workers_two.push_back(db_worker); | 344 workers_two.push_back(db_worker); |
| 345 workers_two.push_back(ui_worker); | 345 workers_two.push_back(ui_worker); |
| 346 routes_one[syncer::AUTOFILL] = GROUP_DB; | 346 routes_one[AUTOFILL] = GROUP_DB; |
| 347 routes_two[syncer::AUTOFILL] = GROUP_DB; | 347 routes_two[AUTOFILL] = GROUP_DB; |
| 348 routes_two[syncer::BOOKMARKS] = GROUP_UI; | 348 routes_two[BOOKMARKS] = GROUP_UI; |
| 349 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); | 349 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 350 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); | 350 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 351 | 351 |
| 352 std::set<ModelSafeGroup> expected_enabled_groups_one; | 352 std::set<ModelSafeGroup> expected_enabled_groups_one; |
| 353 expected_enabled_groups_one.insert(GROUP_PASSIVE); | 353 expected_enabled_groups_one.insert(GROUP_PASSIVE); |
| 354 expected_enabled_groups_one.insert(GROUP_DB); | 354 expected_enabled_groups_one.insert(GROUP_DB); |
| 355 | 355 |
| 356 std::set<ModelSafeGroup> expected_enabled_groups_two; | 356 std::set<ModelSafeGroup> expected_enabled_groups_two; |
| 357 expected_enabled_groups_two.insert(GROUP_PASSIVE); | 357 expected_enabled_groups_two.insert(GROUP_PASSIVE); |
| 358 expected_enabled_groups_two.insert(GROUP_DB); | 358 expected_enabled_groups_two.insert(GROUP_DB); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 377 std::vector<ModelSafeWorker*>::const_iterator it_db = | 377 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 378 std::find(two.workers().begin(), two.workers().end(), db_worker); | 378 std::find(two.workers().begin(), two.workers().end(), db_worker); |
| 379 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 379 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 380 std::find(two.workers().begin(), two.workers().end(), ui_worker); | 380 std::find(two.workers().begin(), two.workers().end(), ui_worker); |
| 381 EXPECT_NE(it_db, two.workers().end()); | 381 EXPECT_NE(it_db, two.workers().end()); |
| 382 EXPECT_EQ(it_ui, two.workers().end()); | 382 EXPECT_EQ(it_ui, two.workers().end()); |
| 383 EXPECT_EQ(two.workers().size(), 2U); | 383 EXPECT_EQ(two.workers().size(), 2U); |
| 384 | 384 |
| 385 // Make sure the model safe routing info is reduced to one type. | 385 // Make sure the model safe routing info is reduced to one type. |
| 386 ModelSafeRoutingInfo::const_iterator it = | 386 ModelSafeRoutingInfo::const_iterator it = |
| 387 two.routing_info().find(syncer::AUTOFILL); | 387 two.routing_info().find(AUTOFILL); |
| 388 // Note that attempting to use EXPECT_NE would fail for an Android build due | 388 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 389 // to seeming incompatibility with gtest and stlport. | 389 // to seeming incompatibility with gtest and stlport. |
| 390 EXPECT_TRUE(it != two.routing_info().end()); | 390 EXPECT_TRUE(it != two.routing_info().end()); |
| 391 EXPECT_EQ(it->second, GROUP_DB); | 391 EXPECT_EQ(it->second, GROUP_DB); |
| 392 EXPECT_EQ(two.routing_info().size(), 1U); | 392 EXPECT_EQ(two.routing_info().size(), 1U); |
| 393 } | 393 } |
| 394 | 394 |
| 395 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { | 395 TEST_F(SyncSessionTest, RebaseRoutingInfoWithLatestWithSameType) { |
| 396 std::vector<ModelSafeWorker*> workers_first, workers_second; | 396 std::vector<ModelSafeWorker*> workers_first, workers_second; |
| 397 ModelSafeRoutingInfo routes_first, routes_second; | 397 ModelSafeRoutingInfo routes_first, routes_second; |
| 398 syncer::ModelTypePayloadMap all_types = | 398 ModelTypePayloadMap all_types = |
| 399 syncer::ModelTypePayloadMapFromEnumSet( | 399 ModelTypePayloadMapFromEnumSet( |
| 400 ParamsMeaningAllEnabledTypes(), | 400 ParamsMeaningAllEnabledTypes(), |
| 401 std::string()); | 401 std::string()); |
| 402 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, | 402 SyncSourceInfo source_first(sync_pb::GetUpdatesCallerInfo::PERIODIC, |
| 403 all_types); | 403 all_types); |
| 404 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, | 404 SyncSourceInfo source_second(sync_pb::GetUpdatesCallerInfo::LOCAL, |
| 405 all_types); | 405 all_types); |
| 406 | 406 |
| 407 scoped_refptr<ModelSafeWorker> passive_worker( | 407 scoped_refptr<ModelSafeWorker> passive_worker( |
| 408 new FakeModelWorker(GROUP_PASSIVE)); | 408 new FakeModelWorker(GROUP_PASSIVE)); |
| 409 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); | 409 scoped_refptr<FakeModelWorker> db_worker(new FakeModelWorker(GROUP_DB)); |
| 410 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); | 410 scoped_refptr<FakeModelWorker> ui_worker(new FakeModelWorker(GROUP_UI)); |
| 411 workers_first.push_back(passive_worker); | 411 workers_first.push_back(passive_worker); |
| 412 workers_first.push_back(db_worker); | 412 workers_first.push_back(db_worker); |
| 413 workers_first.push_back(ui_worker); | 413 workers_first.push_back(ui_worker); |
| 414 workers_second.push_back(passive_worker); | 414 workers_second.push_back(passive_worker); |
| 415 workers_second.push_back(db_worker); | 415 workers_second.push_back(db_worker); |
| 416 workers_second.push_back(ui_worker); | 416 workers_second.push_back(ui_worker); |
| 417 routes_first[syncer::AUTOFILL] = GROUP_DB; | 417 routes_first[AUTOFILL] = GROUP_DB; |
| 418 routes_first[syncer::BOOKMARKS] = GROUP_UI; | 418 routes_first[BOOKMARKS] = GROUP_UI; |
| 419 routes_second[syncer::AUTOFILL] = GROUP_DB; | 419 routes_second[AUTOFILL] = GROUP_DB; |
| 420 routes_second[syncer::BOOKMARKS] = GROUP_UI; | 420 routes_second[BOOKMARKS] = GROUP_UI; |
| 421 SyncSession first(context_.get(), this, source_first, routes_first, | 421 SyncSession first(context_.get(), this, source_first, routes_first, |
| 422 workers_first); | 422 workers_first); |
| 423 SyncSession second(context_.get(), this, source_second, routes_second, | 423 SyncSession second(context_.get(), this, source_second, routes_second, |
| 424 workers_second); | 424 workers_second); |
| 425 | 425 |
| 426 std::set<ModelSafeGroup> expected_enabled_groups; | 426 std::set<ModelSafeGroup> expected_enabled_groups; |
| 427 expected_enabled_groups.insert(GROUP_PASSIVE); | 427 expected_enabled_groups.insert(GROUP_PASSIVE); |
| 428 expected_enabled_groups.insert(GROUP_DB); | 428 expected_enabled_groups.insert(GROUP_DB); |
| 429 expected_enabled_groups.insert(GROUP_UI); | 429 expected_enabled_groups.insert(GROUP_UI); |
| 430 | 430 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 451 std::find(second.workers().begin(), second.workers().end(), db_worker); | 451 std::find(second.workers().begin(), second.workers().end(), db_worker); |
| 452 std::vector<ModelSafeWorker*>::const_iterator it_ui = | 452 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 453 std::find(second.workers().begin(), second.workers().end(), ui_worker); | 453 std::find(second.workers().begin(), second.workers().end(), ui_worker); |
| 454 EXPECT_NE(it_passive, second.workers().end()); | 454 EXPECT_NE(it_passive, second.workers().end()); |
| 455 EXPECT_NE(it_db, second.workers().end()); | 455 EXPECT_NE(it_db, second.workers().end()); |
| 456 EXPECT_NE(it_ui, second.workers().end()); | 456 EXPECT_NE(it_ui, second.workers().end()); |
| 457 EXPECT_EQ(second.workers().size(), 3U); | 457 EXPECT_EQ(second.workers().size(), 3U); |
| 458 | 458 |
| 459 // Make sure the model safe routing info is reduced to first type. | 459 // Make sure the model safe routing info is reduced to first type. |
| 460 ModelSafeRoutingInfo::const_iterator it1 = | 460 ModelSafeRoutingInfo::const_iterator it1 = |
| 461 second.routing_info().find(syncer::AUTOFILL); | 461 second.routing_info().find(AUTOFILL); |
| 462 ModelSafeRoutingInfo::const_iterator it2 = | 462 ModelSafeRoutingInfo::const_iterator it2 = |
| 463 second.routing_info().find(syncer::BOOKMARKS); | 463 second.routing_info().find(BOOKMARKS); |
| 464 | 464 |
| 465 // Note that attempting to use EXPECT_NE would fail for an Android build due | 465 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 466 // to seeming incompatibility with gtest and stlport. | 466 // to seeming incompatibility with gtest and stlport. |
| 467 EXPECT_TRUE(it1 != second.routing_info().end()); | 467 EXPECT_TRUE(it1 != second.routing_info().end()); |
| 468 EXPECT_EQ(it1->second, GROUP_DB); | 468 EXPECT_EQ(it1->second, GROUP_DB); |
| 469 | 469 |
| 470 // Note that attempting to use EXPECT_NE would fail for an Android build due | 470 // Note that attempting to use EXPECT_NE would fail for an Android build due |
| 471 // to seeming incompatibility with gtest and stlport. | 471 // to seeming incompatibility with gtest and stlport. |
| 472 EXPECT_TRUE(it2 != second.routing_info().end()); | 472 EXPECT_TRUE(it2 != second.routing_info().end()); |
| 473 EXPECT_EQ(it2->second, GROUP_UI); | 473 EXPECT_EQ(it2->second, GROUP_UI); |
| 474 EXPECT_EQ(second.routing_info().size(), 2U); | 474 EXPECT_EQ(second.routing_info().size(), 2U); |
| 475 } | 475 } |
| 476 | 476 |
| 477 | 477 |
| 478 TEST_F(SyncSessionTest, MakeTypePayloadMapFromBitSet) { | 478 TEST_F(SyncSessionTest, MakeTypePayloadMapFromBitSet) { |
| 479 syncer::ModelTypeSet types; | 479 ModelTypeSet types; |
| 480 std::string payload = "test"; | 480 std::string payload = "test"; |
| 481 syncer::ModelTypePayloadMap types_with_payloads = | 481 ModelTypePayloadMap types_with_payloads = |
| 482 syncer::ModelTypePayloadMapFromEnumSet(types, payload); | 482 ModelTypePayloadMapFromEnumSet(types, payload); |
| 483 EXPECT_TRUE(types_with_payloads.empty()); | 483 EXPECT_TRUE(types_with_payloads.empty()); |
| 484 | 484 |
| 485 types.Put(syncer::BOOKMARKS); | 485 types.Put(BOOKMARKS); |
| 486 types.Put(syncer::PASSWORDS); | 486 types.Put(PASSWORDS); |
| 487 types.Put(syncer::AUTOFILL); | 487 types.Put(AUTOFILL); |
| 488 payload = "test2"; | 488 payload = "test2"; |
| 489 types_with_payloads = | 489 types_with_payloads = ModelTypePayloadMapFromEnumSet(types, payload); |
| 490 syncer::ModelTypePayloadMapFromEnumSet(types, payload); | |
| 491 | 490 |
| 492 ASSERT_EQ(3U, types_with_payloads.size()); | 491 ASSERT_EQ(3U, types_with_payloads.size()); |
| 493 EXPECT_EQ(types_with_payloads[syncer::BOOKMARKS], payload); | 492 EXPECT_EQ(types_with_payloads[BOOKMARKS], payload); |
| 494 EXPECT_EQ(types_with_payloads[syncer::PASSWORDS], payload); | 493 EXPECT_EQ(types_with_payloads[PASSWORDS], payload); |
| 495 EXPECT_EQ(types_with_payloads[syncer::AUTOFILL], payload); | 494 EXPECT_EQ(types_with_payloads[AUTOFILL], payload); |
| 496 } | 495 } |
| 497 | 496 |
| 498 } // namespace | 497 } // namespace |
| 499 } // namespace sessions | 498 } // namespace sessions |
| 500 } // namespace syncer | 499 } // namespace syncer |
| OLD | NEW |