| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/sync/device_info/device_info_sync_bridge.h" | 5 #include "components/sync/device_info/device_info_sync_bridge.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 EntitySpecifics entity_specifics; | 365 EntitySpecifics entity_specifics; |
| 366 entity_specifics.mutable_device_info(); | 366 entity_specifics.mutable_device_info(); |
| 367 EntityData entity_data; | 367 EntityData entity_data; |
| 368 entity_data.specifics = entity_specifics; | 368 entity_data.specifics = entity_specifics; |
| 369 EXPECT_EQ(CacheGuidToTag(""), bridge()->GetClientTag(entity_data)); | 369 EXPECT_EQ(CacheGuidToTag(""), bridge()->GetClientTag(entity_data)); |
| 370 } | 370 } |
| 371 | 371 |
| 372 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalData) { | 372 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalData) { |
| 373 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 373 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 374 DeviceInfoSpecifics specifics = CreateSpecifics(1); | 374 DeviceInfoSpecifics specifics = CreateSpecifics(1); |
| 375 store()->WriteData(batch.get(), specifics.cache_guid(), | 375 batch->WriteData(specifics.cache_guid(), specifics.SerializeAsString()); |
| 376 specifics.SerializeAsString()); | |
| 377 store()->CommitWriteBatch(std::move(batch), | 376 store()->CommitWriteBatch(std::move(batch), |
| 378 base::Bind(&VerifyResultIsSuccess)); | 377 base::Bind(&VerifyResultIsSuccess)); |
| 379 | 378 |
| 380 InitializeAndPump(); | 379 InitializeAndPump(); |
| 381 | 380 |
| 382 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); | 381 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); |
| 383 VerifyEqual(specifics, | 382 VerifyEqual(specifics, |
| 384 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); | 383 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); |
| 385 } | 384 } |
| 386 | 385 |
| 387 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalMetadata) { | 386 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalMetadata) { |
| 388 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 387 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 389 ModelTypeState state; | 388 ModelTypeState state; |
| 390 state.set_encryption_key_name("ekn"); | 389 state.set_encryption_key_name("ekn"); |
| 391 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); | 390 batch->GetMetadataChangeList()->UpdateModelTypeState(state); |
| 392 store()->CommitWriteBatch(std::move(batch), | 391 store()->CommitWriteBatch(std::move(batch), |
| 393 base::Bind(&VerifyResultIsSuccess)); | 392 base::Bind(&VerifyResultIsSuccess)); |
| 394 InitializeAndPump(); | 393 InitializeAndPump(); |
| 395 DeviceInfoList devices = bridge()->GetAllDeviceInfo(); | 394 DeviceInfoList devices = bridge()->GetAllDeviceInfo(); |
| 396 ASSERT_EQ(1u, devices.size()); | 395 ASSERT_EQ(1u, devices.size()); |
| 397 EXPECT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0])); | 396 EXPECT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0])); |
| 398 EXPECT_EQ(1u, processor()->put_multimap().size()); | 397 EXPECT_EQ(1u, processor()->put_multimap().size()); |
| 399 } | 398 } |
| 400 | 399 |
| 401 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalDataAndMetadata) { | 400 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalDataAndMetadata) { |
| 402 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 401 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 403 DeviceInfoSpecifics specifics = CreateSpecifics(1); | 402 DeviceInfoSpecifics specifics = CreateSpecifics(1); |
| 404 store()->WriteData(batch.get(), specifics.cache_guid(), | 403 batch->WriteData(specifics.cache_guid(), specifics.SerializeAsString()); |
| 405 specifics.SerializeAsString()); | |
| 406 ModelTypeState state; | 404 ModelTypeState state; |
| 407 state.set_encryption_key_name("ekn"); | 405 state.set_encryption_key_name("ekn"); |
| 408 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); | 406 batch->GetMetadataChangeList()->UpdateModelTypeState(state); |
| 409 store()->CommitWriteBatch(std::move(batch), | 407 store()->CommitWriteBatch(std::move(batch), |
| 410 base::Bind(&VerifyResultIsSuccess)); | 408 base::Bind(&VerifyResultIsSuccess)); |
| 411 | 409 |
| 412 InitializeAndPump(); | 410 InitializeAndPump(); |
| 413 | 411 |
| 414 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); | 412 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); |
| 415 VerifyEqual(specifics, | 413 VerifyEqual(specifics, |
| 416 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); | 414 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); |
| 417 EXPECT_TRUE(processor()->metadata()); | 415 EXPECT_TRUE(processor()->metadata()); |
| 418 EXPECT_EQ(state.encryption_key_name(), | 416 EXPECT_EQ(state.encryption_key_name(), |
| 419 processor()->metadata()->GetModelTypeState().encryption_key_name()); | 417 processor()->metadata()->GetModelTypeState().encryption_key_name()); |
| 420 } | 418 } |
| 421 | 419 |
| 422 TEST_F(DeviceInfoSyncBridgeTest, GetData) { | 420 TEST_F(DeviceInfoSyncBridgeTest, GetData) { |
| 423 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 421 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 424 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); | 422 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); |
| 425 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); | 423 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); |
| 426 DeviceInfoSpecifics specifics3 = CreateSpecifics(3); | 424 DeviceInfoSpecifics specifics3 = CreateSpecifics(3); |
| 427 store()->WriteData(batch.get(), specifics1.cache_guid(), | 425 batch->WriteData(specifics1.cache_guid(), specifics1.SerializeAsString()); |
| 428 specifics1.SerializeAsString()); | 426 batch->WriteData(specifics2.cache_guid(), specifics2.SerializeAsString()); |
| 429 store()->WriteData(batch.get(), specifics2.cache_guid(), | 427 batch->WriteData(specifics3.cache_guid(), specifics3.SerializeAsString()); |
| 430 specifics2.SerializeAsString()); | |
| 431 store()->WriteData(batch.get(), specifics3.cache_guid(), | |
| 432 specifics3.SerializeAsString()); | |
| 433 store()->CommitWriteBatch(std::move(batch), | 428 store()->CommitWriteBatch(std::move(batch), |
| 434 base::Bind(&VerifyResultIsSuccess)); | 429 base::Bind(&VerifyResultIsSuccess)); |
| 435 | 430 |
| 436 InitializeAndPump(); | 431 InitializeAndPump(); |
| 437 | 432 |
| 438 std::map<std::string, DeviceInfoSpecifics> expected{ | 433 std::map<std::string, DeviceInfoSpecifics> expected{ |
| 439 {specifics1.cache_guid(), specifics1}, | 434 {specifics1.cache_guid(), specifics1}, |
| 440 {specifics3.cache_guid(), specifics3}}; | 435 {specifics3.cache_guid(), specifics3}}; |
| 441 bridge()->GetData({specifics1.cache_guid(), specifics3.cache_guid()}, | 436 bridge()->GetData({specifics1.cache_guid(), specifics3.cache_guid()}, |
| 442 base::Bind(&VerifyDataBatch, expected)); | 437 base::Bind(&VerifyDataBatch, expected)); |
| 443 } | 438 } |
| 444 | 439 |
| 445 TEST_F(DeviceInfoSyncBridgeTest, GetDataMissing) { | 440 TEST_F(DeviceInfoSyncBridgeTest, GetDataMissing) { |
| 446 InitializeAndPump(); | 441 InitializeAndPump(); |
| 447 bridge()->GetData({"does_not_exist"}, | 442 bridge()->GetData({"does_not_exist"}, |
| 448 base::Bind(&VerifyDataBatch, | 443 base::Bind(&VerifyDataBatch, |
| 449 std::map<std::string, DeviceInfoSpecifics>())); | 444 std::map<std::string, DeviceInfoSpecifics>())); |
| 450 } | 445 } |
| 451 | 446 |
| 452 TEST_F(DeviceInfoSyncBridgeTest, GetAllData) { | 447 TEST_F(DeviceInfoSyncBridgeTest, GetAllData) { |
| 453 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 448 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 454 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); | 449 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); |
| 455 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); | 450 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); |
| 456 const std::string& guid1 = specifics1.cache_guid(); | 451 const std::string& guid1 = specifics1.cache_guid(); |
| 457 const std::string& guid2 = specifics2.cache_guid(); | 452 const std::string& guid2 = specifics2.cache_guid(); |
| 458 store()->WriteData(batch.get(), specifics1.cache_guid(), | 453 batch->WriteData(specifics1.cache_guid(), specifics1.SerializeAsString()); |
| 459 specifics1.SerializeAsString()); | 454 batch->WriteData(specifics2.cache_guid(), specifics2.SerializeAsString()); |
| 460 store()->WriteData(batch.get(), specifics2.cache_guid(), | |
| 461 specifics2.SerializeAsString()); | |
| 462 store()->CommitWriteBatch(std::move(batch), | 455 store()->CommitWriteBatch(std::move(batch), |
| 463 base::Bind(&VerifyResultIsSuccess)); | 456 base::Bind(&VerifyResultIsSuccess)); |
| 464 | 457 |
| 465 InitializeAndPump(); | 458 InitializeAndPump(); |
| 466 | 459 |
| 467 std::map<std::string, DeviceInfoSpecifics> expected{{guid1, specifics1}, | 460 std::map<std::string, DeviceInfoSpecifics> expected{{guid1, specifics1}, |
| 468 {guid2, specifics2}}; | 461 {guid2, specifics2}}; |
| 469 bridge()->GetData({guid1, guid2}, base::Bind(&VerifyDataBatch, expected)); | 462 bridge()->GetData({guid1, guid2}, base::Bind(&VerifyDataBatch, expected)); |
| 470 } | 463 } |
| 471 | 464 |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 const DeviceInfoSpecifics unique_local = CreateSpecifics(1); | 585 const DeviceInfoSpecifics unique_local = CreateSpecifics(1); |
| 593 DeviceInfoSpecifics conflict_local = CreateSpecifics(2); | 586 DeviceInfoSpecifics conflict_local = CreateSpecifics(2); |
| 594 DeviceInfoSpecifics conflict_remote = CreateSpecifics(3); | 587 DeviceInfoSpecifics conflict_remote = CreateSpecifics(3); |
| 595 const DeviceInfoSpecifics unique_remote = CreateSpecifics(4); | 588 const DeviceInfoSpecifics unique_remote = CreateSpecifics(4); |
| 596 | 589 |
| 597 const std::string conflict_guid = "conflict_guid"; | 590 const std::string conflict_guid = "conflict_guid"; |
| 598 conflict_local.set_cache_guid(conflict_guid); | 591 conflict_local.set_cache_guid(conflict_guid); |
| 599 conflict_remote.set_cache_guid(conflict_guid); | 592 conflict_remote.set_cache_guid(conflict_guid); |
| 600 | 593 |
| 601 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 594 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 602 store()->WriteData(batch.get(), unique_local.cache_guid(), | 595 batch->WriteData(unique_local.cache_guid(), unique_local.SerializeAsString()); |
| 603 unique_local.SerializeAsString()); | 596 batch->WriteData(conflict_local.cache_guid(), |
| 604 store()->WriteData(batch.get(), conflict_local.cache_guid(), | 597 conflict_local.SerializeAsString()); |
| 605 conflict_local.SerializeAsString()); | |
| 606 store()->CommitWriteBatch(std::move(batch), | 598 store()->CommitWriteBatch(std::move(batch), |
| 607 base::Bind(&VerifyResultIsSuccess)); | 599 base::Bind(&VerifyResultIsSuccess)); |
| 608 | 600 |
| 609 InitializeAndPump(); | 601 InitializeAndPump(); |
| 610 EXPECT_EQ(1, change_count()); | 602 EXPECT_EQ(1, change_count()); |
| 611 | 603 |
| 612 EntityDataMap remote_input; | 604 EntityDataMap remote_input; |
| 613 remote_input[conflict_remote.cache_guid()] = | 605 remote_input[conflict_remote.cache_guid()] = |
| 614 SpecificsToEntity(conflict_remote); | 606 SpecificsToEntity(conflict_remote); |
| 615 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote); | 607 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 646 processor()->metadata()->GetModelTypeState().encryption_key_name()); | 638 processor()->metadata()->GetModelTypeState().encryption_key_name()); |
| 647 } | 639 } |
| 648 | 640 |
| 649 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) { | 641 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) { |
| 650 const DeviceInfo* provider_info = local_device()->GetLocalDeviceInfo(); | 642 const DeviceInfo* provider_info = local_device()->GetLocalDeviceInfo(); |
| 651 auto specifics = base::MakeUnique<DeviceInfoSpecifics>(CreateSpecifics(0)); | 643 auto specifics = base::MakeUnique<DeviceInfoSpecifics>(CreateSpecifics(0)); |
| 652 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now())); | 644 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now())); |
| 653 const std::string guid = provider_info->guid(); | 645 const std::string guid = provider_info->guid(); |
| 654 | 646 |
| 655 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 647 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
| 656 store()->WriteData(batch.get(), guid, specifics->SerializeAsString()); | 648 batch->WriteData(guid, specifics->SerializeAsString()); |
| 657 store()->CommitWriteBatch(std::move(batch), | 649 store()->CommitWriteBatch(std::move(batch), |
| 658 base::Bind(&VerifyResultIsSuccess)); | 650 base::Bind(&VerifyResultIsSuccess)); |
| 659 | 651 |
| 660 InitializeAndPump(); | 652 InitializeAndPump(); |
| 661 | 653 |
| 662 EntityDataMap remote_input; | 654 EntityDataMap remote_input; |
| 663 remote_input[guid] = SpecificsToEntity(*specifics); | 655 remote_input[guid] = SpecificsToEntity(*specifics); |
| 664 | 656 |
| 665 const SyncError error = bridge()->MergeSyncData( | 657 const SyncError error = bridge()->MergeSyncData( |
| 666 bridge()->CreateMetadataChangeList(), remote_input); | 658 bridge()->CreateMetadataChangeList(), remote_input); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 | 744 |
| 753 // Reloading from storage shouldn't contain remote data. | 745 // Reloading from storage shouldn't contain remote data. |
| 754 RestartBridge(); | 746 RestartBridge(); |
| 755 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); | 747 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); |
| 756 EXPECT_EQ(4, change_count()); | 748 EXPECT_EQ(4, change_count()); |
| 757 } | 749 } |
| 758 | 750 |
| 759 } // namespace | 751 } // namespace |
| 760 | 752 |
| 761 } // namespace syncer | 753 } // namespace syncer |
| OLD | NEW |