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_service.h" | 5 #include "components/sync/device_info/device_info_service.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 using syncer_v2::ModelTypeStore; | 45 using syncer_v2::ModelTypeStore; |
46 using syncer_v2::ModelTypeStoreTestUtil; | 46 using syncer_v2::ModelTypeStoreTestUtil; |
47 using syncer_v2::KeyAndData; | 47 using syncer_v2::KeyAndData; |
48 using sync_driver::DeviceInfo; | 48 using sync_driver::DeviceInfo; |
49 using sync_driver::DeviceInfoTracker; | 49 using sync_driver::DeviceInfoTracker; |
50 using sync_driver::LocalDeviceInfoProviderMock; | 50 using sync_driver::LocalDeviceInfoProviderMock; |
51 using sync_pb::DataTypeState; | 51 using sync_pb::DataTypeState; |
52 using sync_pb::DeviceInfoSpecifics; | 52 using sync_pb::DeviceInfoSpecifics; |
53 using sync_pb::EntitySpecifics; | 53 using sync_pb::EntitySpecifics; |
54 | 54 |
| 55 using DeviceInfoList = std::vector<std::unique_ptr<DeviceInfo>>; |
55 using StorageKeyList = ModelTypeService::StorageKeyList; | 56 using StorageKeyList = ModelTypeService::StorageKeyList; |
56 using RecordList = ModelTypeStore::RecordList; | 57 using RecordList = ModelTypeStore::RecordList; |
57 using Result = ModelTypeStore::Result; | 58 using Result = ModelTypeStore::Result; |
58 using StartCallback = ModelTypeChangeProcessor::StartCallback; | 59 using StartCallback = ModelTypeChangeProcessor::StartCallback; |
59 using WriteBatch = ModelTypeStore::WriteBatch; | 60 using WriteBatch = ModelTypeStore::WriteBatch; |
60 | 61 |
61 namespace { | 62 namespace { |
62 | 63 |
63 std::unique_ptr<DeviceInfo> CreateDeviceInfo() { | 64 std::unique_ptr<DeviceInfo> CreateDeviceInfo() { |
64 return base::MakeUnique<DeviceInfo>( | 65 return base::MakeUnique<DeviceInfo>( |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 // that is slightly different from eachother. | 339 // that is slightly different from eachother. |
339 int generated_count_ = 0; | 340 int generated_count_ = 0; |
340 }; | 341 }; |
341 | 342 |
342 namespace { | 343 namespace { |
343 | 344 |
344 TEST_F(DeviceInfoServiceTest, EmptyDataReconciliation) { | 345 TEST_F(DeviceInfoServiceTest, EmptyDataReconciliation) { |
345 InitializeAndPump(); | 346 InitializeAndPump(); |
346 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); | 347 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); |
347 OnSyncStarting(); | 348 OnSyncStarting(); |
348 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 349 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
349 ASSERT_EQ(1u, all_device_info.size()); | 350 ASSERT_EQ(1u, all_device_info.size()); |
350 ASSERT_TRUE( | 351 ASSERT_TRUE( |
351 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); | 352 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
352 } | 353 } |
353 | 354 |
354 TEST_F(DeviceInfoServiceTest, EmptyDataReconciliationSlowLoad) { | 355 TEST_F(DeviceInfoServiceTest, EmptyDataReconciliationSlowLoad) { |
355 InitializeService(); | 356 InitializeService(); |
356 OnSyncStarting(); | 357 OnSyncStarting(); |
357 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); | 358 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); |
358 base::RunLoop().RunUntilIdle(); | 359 base::RunLoop().RunUntilIdle(); |
359 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 360 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
360 ASSERT_EQ(1u, all_device_info.size()); | 361 ASSERT_EQ(1u, all_device_info.size()); |
361 ASSERT_TRUE( | 362 ASSERT_TRUE( |
362 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); | 363 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
363 } | 364 } |
364 | 365 |
365 TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) { | 366 TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) { |
366 set_local_device(base::MakeUnique<LocalDeviceInfoProviderMock>()); | 367 set_local_device(base::MakeUnique<LocalDeviceInfoProviderMock>()); |
367 InitializeAndPumpAndStart(); | 368 InitializeAndPumpAndStart(); |
368 | 369 |
369 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); | 370 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); |
370 local_device()->Initialize(CreateDeviceInfo()); | 371 local_device()->Initialize(CreateDeviceInfo()); |
371 base::RunLoop().RunUntilIdle(); | 372 base::RunLoop().RunUntilIdle(); |
372 | 373 |
373 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 374 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
374 ASSERT_EQ(1u, all_device_info.size()); | 375 ASSERT_EQ(1u, all_device_info.size()); |
375 ASSERT_TRUE( | 376 ASSERT_TRUE( |
376 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); | 377 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
377 } | 378 } |
378 | 379 |
379 // Metadata shouldn't be loaded before the provider is initialized. | 380 // Metadata shouldn't be loaded before the provider is initialized. |
380 TEST_F(DeviceInfoServiceTest, LocalProviderInitRace) { | 381 TEST_F(DeviceInfoServiceTest, LocalProviderInitRace) { |
381 set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock())); | 382 set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock())); |
382 InitializeAndPump(); | 383 InitializeAndPump(); |
383 OnSyncStarting(); | 384 OnSyncStarting(); |
384 EXPECT_FALSE(processor()->metadata()); | 385 EXPECT_FALSE(processor()->metadata()); |
385 | 386 |
386 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); | 387 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); |
387 local_device()->Initialize(CreateDeviceInfo()); | 388 local_device()->Initialize(CreateDeviceInfo()); |
388 base::RunLoop().RunUntilIdle(); | 389 base::RunLoop().RunUntilIdle(); |
389 | 390 |
390 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 391 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
391 ASSERT_EQ(1u, all_device_info.size()); | 392 ASSERT_EQ(1u, all_device_info.size()); |
392 ASSERT_TRUE( | 393 ASSERT_TRUE( |
393 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); | 394 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
394 | 395 |
395 EXPECT_TRUE(processor()->metadata()); | 396 EXPECT_TRUE(processor()->metadata()); |
396 } | 397 } |
397 | 398 |
398 TEST_F(DeviceInfoServiceTest, GetClientTagNormal) { | 399 TEST_F(DeviceInfoServiceTest, GetClientTagNormal) { |
399 InitializeService(); | 400 InitializeService(); |
400 const std::string guid = "abc"; | 401 const std::string guid = "abc"; |
(...skipping 16 matching lines...) Expand all Loading... |
417 TEST_F(DeviceInfoServiceTest, TestWithLocalData) { | 418 TEST_F(DeviceInfoServiceTest, TestWithLocalData) { |
418 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 419 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
419 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); | 420 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); |
420 store()->WriteData(batch.get(), specifics.cache_guid(), | 421 store()->WriteData(batch.get(), specifics.cache_guid(), |
421 specifics.SerializeAsString()); | 422 specifics.SerializeAsString()); |
422 store()->CommitWriteBatch(std::move(batch), | 423 store()->CommitWriteBatch(std::move(batch), |
423 base::Bind(&AssertResultIsSuccess)); | 424 base::Bind(&AssertResultIsSuccess)); |
424 | 425 |
425 InitializeAndPump(); | 426 InitializeAndPump(); |
426 | 427 |
427 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 428 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
428 ASSERT_EQ(1u, all_device_info.size()); | 429 ASSERT_EQ(1u, all_device_info.size()); |
429 AssertEqual(specifics, *all_device_info[0]); | 430 AssertEqual(specifics, *all_device_info[0]); |
430 AssertEqual(specifics, | 431 AssertEqual(specifics, |
431 *service()->GetDeviceInfo(specifics.cache_guid()).get()); | 432 *service()->GetDeviceInfo(specifics.cache_guid()).get()); |
432 } | 433 } |
433 | 434 |
434 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) { | 435 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) { |
435 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 436 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
436 DataTypeState state; | 437 DataTypeState state; |
437 state.set_encryption_key_name("ekn"); | 438 state.set_encryption_key_name("ekn"); |
438 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); | 439 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); |
439 store()->CommitWriteBatch(std::move(batch), | 440 store()->CommitWriteBatch(std::move(batch), |
440 base::Bind(&AssertResultIsSuccess)); | 441 base::Bind(&AssertResultIsSuccess)); |
441 InitializeAndPump(); | 442 InitializeAndPump(); |
442 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 443 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
443 ASSERT_EQ(1u, all_device_info.size()); | 444 ASSERT_EQ(1u, all_device_info.size()); |
444 ASSERT_TRUE( | 445 ASSERT_TRUE( |
445 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); | 446 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
446 EXPECT_EQ(1u, processor()->put_map().size()); | 447 EXPECT_EQ(1u, processor()->put_map().size()); |
447 } | 448 } |
448 | 449 |
449 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) { | 450 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) { |
450 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 451 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
451 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); | 452 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); |
452 store()->WriteData(batch.get(), specifics.cache_guid(), | 453 store()->WriteData(batch.get(), specifics.cache_guid(), |
453 specifics.SerializeAsString()); | 454 specifics.SerializeAsString()); |
454 DataTypeState state; | 455 DataTypeState state; |
455 state.set_encryption_key_name("ekn"); | 456 state.set_encryption_key_name("ekn"); |
456 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); | 457 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); |
457 store()->CommitWriteBatch(std::move(batch), | 458 store()->CommitWriteBatch(std::move(batch), |
458 base::Bind(&AssertResultIsSuccess)); | 459 base::Bind(&AssertResultIsSuccess)); |
459 | 460 |
460 InitializeAndPump(); | 461 InitializeAndPump(); |
461 | 462 |
462 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); | 463 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); |
463 ASSERT_EQ(2u, all_device_info.size()); | 464 ASSERT_EQ(2u, all_device_info.size()); |
464 AssertEqual(specifics, | 465 AssertEqual(specifics, |
465 *service()->GetDeviceInfo(specifics.cache_guid()).get()); | 466 *service()->GetDeviceInfo(specifics.cache_guid()).get()); |
466 ASSERT_TRUE(processor()->metadata()); | 467 ASSERT_TRUE(processor()->metadata()); |
467 ASSERT_EQ(state.encryption_key_name(), | 468 ASSERT_EQ(state.encryption_key_name(), |
468 processor()->metadata()->GetDataTypeState().encryption_key_name()); | 469 processor()->metadata()->GetDataTypeState().encryption_key_name()); |
469 } | 470 } |
470 | 471 |
471 TEST_F(DeviceInfoServiceTest, GetData) { | 472 TEST_F(DeviceInfoServiceTest, GetData) { |
472 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); | 473 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 specifics.set_cache_guid("non-local"); | 772 specifics.set_cache_guid("non-local"); |
772 PushBackEntityChangeAdd(specifics, &change_list); | 773 PushBackEntityChangeAdd(specifics, &change_list); |
773 service()->ApplySyncChanges(service()->CreateMetadataChangeList(), | 774 service()->ApplySyncChanges(service()->CreateMetadataChangeList(), |
774 change_list); | 775 change_list); |
775 EXPECT_EQ(1, service()->CountActiveDevices()); | 776 EXPECT_EQ(1, service()->CountActiveDevices()); |
776 } | 777 } |
777 | 778 |
778 } // namespace | 779 } // namespace |
779 | 780 |
780 } // namespace sync_driver_v2 | 781 } // namespace sync_driver_v2 |
OLD | NEW |