Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Side by Side Diff: sync/internal_api/sync_manager_impl_unittest.cc

Issue 10825137: FYI: Control Data + Per-Device Metadata (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add PER_USER_METADATA, refactor some encryption code Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // Unit tests for the SyncApi. Note that a lot of the underlying 5 // Unit tests for the SyncApi. Note that a lot of the underlying
6 // functionality is provided by the Syncable layer, which has its own 6 // functionality is provided by the Syncable layer, which has its own
7 // unit tests. We'll test SyncApi specific things in this harness. 7 // unit tests. We'll test SyncApi specific things in this harness.
8 8
9 #include <cstddef> 9 #include <cstddef>
10 #include <map> 10 #include <map>
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 void TearDown() { 789 void TearDown() {
790 sync_manager_.RemoveObserver(&observer_); 790 sync_manager_.RemoveObserver(&observer_);
791 // |sync_notifier_mock_| is strict, which ensures we don't do anything but 791 // |sync_notifier_mock_| is strict, which ensures we don't do anything but
792 // unregister |sync_manager_| as a handler on shutdown. 792 // unregister |sync_manager_| as a handler on shutdown.
793 sync_manager_.ShutdownOnSyncThread(); 793 sync_manager_.ShutdownOnSyncThread();
794 sync_notifier_mock_ = NULL; 794 sync_notifier_mock_ = NULL;
795 PumpLoop(); 795 PumpLoop();
796 } 796 }
797 797
798 void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) { 798 void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) {
799 (*out)[NIGORI] = GROUP_PASSIVE; 799 (*out)[NIGORI] = GROUP_CONTROL;
800 (*out)[PER_DEVICE_METADATA] = GROUP_CONTROL;
801 (*out)[PER_USER_METADATA] = GROUP_CONTROL;
800 (*out)[BOOKMARKS] = GROUP_PASSIVE; 802 (*out)[BOOKMARKS] = GROUP_PASSIVE;
801 (*out)[THEMES] = GROUP_PASSIVE; 803 (*out)[THEMES] = GROUP_PASSIVE;
802 (*out)[SESSIONS] = GROUP_PASSIVE; 804 (*out)[SESSIONS] = GROUP_PASSIVE;
803 (*out)[PASSWORDS] = GROUP_PASSIVE; 805 (*out)[PASSWORDS] = GROUP_PASSIVE;
804 (*out)[PREFERENCES] = GROUP_PASSIVE; 806 (*out)[PREFERENCES] = GROUP_PASSIVE;
805 } 807 }
806 808
807 virtual void OnChangesApplied( 809 virtual void OnChangesApplied(
808 ModelType model_type, 810 ModelType model_type,
809 const BaseTransaction* trans, 811 const BaseTransaction* trans,
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 } else { 936 } else {
935 sync_pb::DataTypeProgressMarker marker; 937 sync_pb::DataTypeProgressMarker marker;
936 sync_manager_.directory()->SetDownloadProgress(type, marker); 938 sync_manager_.directory()->SetDownloadProgress(type, marker);
937 } 939 }
938 } 940 }
939 941
940 void SetInitialSyncEndedForType(ModelType type, bool value) { 942 void SetInitialSyncEndedForType(ModelType type, bool value) {
941 sync_manager_.directory()->set_initial_sync_ended_for_type(type, value); 943 sync_manager_.directory()->set_initial_sync_ended_for_type(type, value);
942 } 944 }
943 945
946 void RefreshEncryption() {
947 sync_manager_.RefreshEncryption();
948 }
949
950 void UpdateDeviceInformation(std::string version, std::string session_name) {
951 sync_manager_.UpdateDeviceInformation(version, session_name);
952 }
953
944 private: 954 private:
945 // Needed by |sync_manager_|. 955 // Needed by |sync_manager_|.
946 MessageLoop message_loop_; 956 MessageLoop message_loop_;
947 // Needed by |sync_manager_|. 957 // Needed by |sync_manager_|.
948 ScopedTempDir temp_dir_; 958 ScopedTempDir temp_dir_;
949 // Sync Id's for the roots of the enabled datatypes. 959 // Sync Id's for the roots of the enabled datatypes.
950 std::map<ModelType, int64> type_roots_; 960 std::map<ModelType, int64> type_roots_;
951 FakeExtensionsActivityMonitor extensions_activity_monitor_; 961 FakeExtensionsActivityMonitor extensions_activity_monitor_;
952 962
953 protected: 963 protected:
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 ListValue args; 1188 ListValue args;
1179 args.Append(Value::CreateStringValue("1")); 1189 args.Append(Value::CreateStringValue("1"));
1180 SendJsMessage("getChildNodeIds", 1190 SendJsMessage("getChildNodeIds",
1181 JsArgList(&args), reply_handler.AsWeakHandle()); 1191 JsArgList(&args), reply_handler.AsWeakHandle());
1182 } 1192 }
1183 1193
1184 EXPECT_EQ(1u, return_args.Get().GetSize()); 1194 EXPECT_EQ(1u, return_args.Get().GetSize());
1185 const ListValue* nodes = NULL; 1195 const ListValue* nodes = NULL;
1186 ASSERT_TRUE(return_args.Get().GetList(0, &nodes)); 1196 ASSERT_TRUE(return_args.Get().GetList(0, &nodes));
1187 ASSERT_TRUE(nodes); 1197 ASSERT_TRUE(nodes);
1188 EXPECT_EQ(6u, nodes->GetSize()); 1198 EXPECT_EQ(8u, nodes->GetSize());
1189 } 1199 }
1190 1200
1191 TEST_F(SyncManagerTest, GetChildNodeIdsFailure) { 1201 TEST_F(SyncManagerTest, GetChildNodeIdsFailure) {
1192 StrictMock<MockJsReplyHandler> reply_handler; 1202 StrictMock<MockJsReplyHandler> reply_handler;
1193 1203
1194 ListValue empty_list_args; 1204 ListValue empty_list_args;
1195 empty_list_args.Append(new ListValue()); 1205 empty_list_args.Append(new ListValue());
1196 1206
1197 EXPECT_CALL(reply_handler, 1207 EXPECT_CALL(reply_handler,
1198 HandleJsReply("getChildNodeIds", 1208 HandleJsReply("getChildNodeIds",
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 TriggerOnIncomingNotificationForTest(model_types); 1348 TriggerOnIncomingNotificationForTest(model_types);
1339 SetJsEventHandler(WeakHandle<JsEventHandler>()); 1349 SetJsEventHandler(WeakHandle<JsEventHandler>());
1340 1350
1341 TriggerOnIncomingNotificationForTest(empty_model_types); 1351 TriggerOnIncomingNotificationForTest(empty_model_types);
1342 TriggerOnIncomingNotificationForTest(model_types); 1352 TriggerOnIncomingNotificationForTest(model_types);
1343 1353
1344 // Should trigger the replies. 1354 // Should trigger the replies.
1345 PumpLoop(); 1355 PumpLoop();
1346 } 1356 }
1347 1357
1358 TEST_F(SyncManagerTest, CreateNewDeviceInformation) {
1359 const std::string version("v1");
1360 const std::string session_name("session");
1361 const std::string cache_guid =
1362 sync_manager_.GetUserShare()->directory->cache_guid();
1363
1364 {
1365 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1366 ReadNode node(&trans);
1367 ASSERT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD,
1368 node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
1369 }
1370
1371 UpdateDeviceInformation("v1", "session");
1372
1373 {
1374 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1375 ReadNode node(&trans);
1376 ASSERT_EQ(BaseNode::INIT_OK,
1377 node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
1378 sync_pb::PerDeviceSpecifics specifics = node.GetPerDeviceSpecifics();
1379 ASSERT_TRUE(specifics.has_device_information());
1380 const sync_pb::DeviceInformation& device_info =
1381 specifics.device_information();
1382
1383 EXPECT_EQ(version, device_info.chrome_version());
1384 EXPECT_EQ(session_name, device_info.name());
1385 EXPECT_EQ(cache_guid, device_info.cache_guid());
1386 }
1387 }
1388
1389 TEST_F(SyncManagerTest, DontModifyExistingDeviceInformation) {
1390 const std::string version("v1");
1391 const std::string session_name("session");
1392 const std::string cache_guid =
1393 sync_manager_.GetUserShare()->directory->cache_guid();
1394 sync_pb::DeviceInformation old_device_info;
1395 sync_pb::DeviceInformation new_device_info;
1396
1397 UpdateDeviceInformation(version, session_name);
1398
1399 {
1400 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1401 ReadNode node(&trans);
1402 ASSERT_EQ(BaseNode::INIT_OK,
1403 node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
1404 sync_pb::PerDeviceSpecifics old_specifics = node.GetPerDeviceSpecifics();
1405 }
1406
1407 UpdateDeviceInformation(version, session_name);
1408
1409 {
1410 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1411 ReadNode node(&trans);
1412 ASSERT_EQ(BaseNode::INIT_OK,
1413 node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
1414 sync_pb::PerDeviceSpecifics new_specifics = node.GetPerDeviceSpecifics();
1415 }
1416
1417 EXPECT_EQ(old_device_info.chrome_version(), new_device_info.chrome_version());
1418 EXPECT_EQ(old_device_info.name(), new_device_info.name());
1419 EXPECT_EQ(old_device_info.cache_guid(), new_device_info.cache_guid());
1420 }
1421
1422 TEST_F(SyncManagerTest, UpdateExistingDeviceInformation) {
1423 const std::string old_version("v1");
1424 const std::string new_version("v2");
1425 const std::string session_name("session");
1426 const std::string cache_guid =
1427 sync_manager_.GetUserShare()->directory->cache_guid();
1428
1429 UpdateDeviceInformation(old_version, session_name);
1430 UpdateDeviceInformation(new_version, session_name);
1431
1432 {
1433 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1434 WriteNode node(&trans);
1435 ASSERT_EQ(BaseNode::INIT_OK,
1436 node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
1437 sync_pb::PerDeviceSpecifics specifics = node.GetPerDeviceSpecifics();
1438 ASSERT_TRUE(specifics.has_device_information());
1439 const sync_pb::DeviceInformation& device_info =
1440 specifics.device_information();
1441
1442 EXPECT_EQ(new_version, device_info.chrome_version());
1443 }
1444 }
1445
1348 TEST_F(SyncManagerTest, RefreshEncryptionReady) { 1446 TEST_F(SyncManagerTest, RefreshEncryptionReady) {
1349 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 1447 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
1350 EXPECT_CALL(observer_, OnEncryptionComplete()); 1448 EXPECT_CALL(observer_, OnEncryptionComplete());
1351 1449
1352 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 1450 RefreshEncryption();
1353 PumpLoop();
1354 1451
1355 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1452 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
1356 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); 1453 EXPECT_TRUE(encrypted_types.Has(PASSWORDS));
1357 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1454 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1358 1455
1359 { 1456 {
1360 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1457 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1361 ReadNode node(&trans); 1458 ReadNode node(&trans);
1362 EXPECT_EQ(BaseNode::INIT_OK, 1459 EXPECT_EQ(BaseNode::INIT_OK,
1363 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1460 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1364 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1461 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1365 EXPECT_TRUE(nigori.has_encrypted()); 1462 EXPECT_TRUE(nigori.has_encrypted());
1366 Cryptographer* cryptographer = trans.GetCryptographer(); 1463 Cryptographer* cryptographer = trans.GetCryptographer();
1367 EXPECT_TRUE(cryptographer->is_ready()); 1464 EXPECT_TRUE(cryptographer->is_ready());
1368 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); 1465 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted()));
1369 } 1466 }
1370 } 1467 }
1371 1468
1372 // Attempt to refresh encryption when nigori not downloaded.
1373 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
1374 // Don't set up encryption (no nigori node created).
1375
1376 // Should fail.
1377 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
1378 PumpLoop();
1379
1380 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
1381 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1382 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1383 }
1384
1385 // Attempt to refresh encryption when nigori is empty. 1469 // Attempt to refresh encryption when nigori is empty.
1386 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { 1470 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
1387 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION)); 1471 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION));
1388 EXPECT_CALL(observer_, OnEncryptionComplete()); 1472 EXPECT_CALL(observer_, OnEncryptionComplete());
1389 1473
1390 // Should write to nigori. 1474 // Should write to nigori.
1391 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 1475 RefreshEncryption();
1392 PumpLoop();
1393 1476
1394 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1477 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
1395 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded. 1478 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1396 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1479 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1397 1480
1398 { 1481 {
1399 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1482 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1400 ReadNode node(&trans); 1483 ReadNode node(&trans);
1401 EXPECT_EQ(BaseNode::INIT_OK, 1484 EXPECT_EQ(BaseNode::INIT_OK,
1402 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1485 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1403 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1486 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1404 EXPECT_TRUE(nigori.has_encrypted()); 1487 EXPECT_TRUE(nigori.has_encrypted());
1405 Cryptographer* cryptographer = trans.GetCryptographer(); 1488 Cryptographer* cryptographer = trans.GetCryptographer();
1406 EXPECT_TRUE(cryptographer->is_ready()); 1489 EXPECT_TRUE(cryptographer->is_ready());
1407 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); 1490 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted()));
1408 } 1491 }
1409 } 1492 }
1410 1493
1411 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { 1494 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) {
1412 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 1495 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
1413 EXPECT_CALL(observer_, 1496 EXPECT_CALL(observer_,
1414 OnEncryptedTypesChanged( 1497 OnEncryptedTypesChanged(
1415 HasModelTypes(ModelTypeSet::All()), true)); 1498 HasModelTypes(syncer::EncryptableTypes()), true));
1416 EXPECT_CALL(observer_, OnEncryptionComplete()); 1499 EXPECT_CALL(observer_, OnEncryptionComplete());
1417 sync_manager_.EnableEncryptEverything(); 1500 sync_manager_.EnableEncryptEverything();
1418 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1501 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1419 } 1502 }
1420 1503
1421 TEST_F(SyncManagerTest, EncryptDataTypesWithData) { 1504 TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
1422 size_t batch_size = 5; 1505 size_t batch_size = 5;
1423 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 1506 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
1424 1507
1425 // Create some unencrypted unsynced data. 1508 // Create some unencrypted unsynced data.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1462 false /* not encrypted */)); 1545 false /* not encrypted */));
1463 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1546 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1464 trans.GetWrappedTrans(), 1547 trans.GetWrappedTrans(),
1465 trans.GetCryptographer(), 1548 trans.GetCryptographer(),
1466 THEMES, 1549 THEMES,
1467 false /* not encrypted */)); 1550 false /* not encrypted */));
1468 } 1551 }
1469 1552
1470 EXPECT_CALL(observer_, 1553 EXPECT_CALL(observer_,
1471 OnEncryptedTypesChanged( 1554 OnEncryptedTypesChanged(
1472 HasModelTypes(ModelTypeSet::All()), true)); 1555 HasModelTypes(syncer::EncryptableTypes()), true));
1473 EXPECT_CALL(observer_, OnEncryptionComplete()); 1556 EXPECT_CALL(observer_, OnEncryptionComplete());
1474 sync_manager_.EnableEncryptEverything(); 1557 sync_manager_.EnableEncryptEverything();
1475 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1558 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1476 { 1559 {
1477 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1560 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1478 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( 1561 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(
1479 ModelTypeSet::All())); 1562 syncer::EncryptableTypes()));
1480 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1563 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1481 trans.GetWrappedTrans(), 1564 trans.GetWrappedTrans(),
1482 trans.GetCryptographer(), 1565 trans.GetCryptographer(),
1483 BOOKMARKS, 1566 BOOKMARKS,
1484 true /* is encrypted */)); 1567 true /* is encrypted */));
1485 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1568 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1486 trans.GetWrappedTrans(), 1569 trans.GetWrappedTrans(),
1487 trans.GetCryptographer(), 1570 trans.GetCryptographer(),
1488 SESSIONS, 1571 SESSIONS,
1489 true /* is encrypted */)); 1572 true /* is encrypted */));
1490 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1573 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1491 trans.GetWrappedTrans(), 1574 trans.GetWrappedTrans(),
1492 trans.GetCryptographer(), 1575 trans.GetCryptographer(),
1493 THEMES, 1576 THEMES,
1494 true /* is encrypted */)); 1577 true /* is encrypted */));
1495 } 1578 }
1496 1579
1497 // Trigger's a ReEncryptEverything with new passphrase. 1580 // Trigger's a ReEncryptEverything with new passphrase.
1498 testing::Mock::VerifyAndClearExpectations(&observer_); 1581 testing::Mock::VerifyAndClearExpectations(&observer_);
1499 EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); 1582 EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
1500 EXPECT_CALL(observer_, OnPassphraseAccepted()); 1583 EXPECT_CALL(observer_, OnPassphraseAccepted());
1501 EXPECT_CALL(observer_, OnEncryptionComplete()); 1584 EXPECT_CALL(observer_, OnEncryptionComplete());
1502 sync_manager_.SetEncryptionPassphrase("new_passphrase", true); 1585 sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
1503 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1586 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1504 { 1587 {
1505 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1588 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1506 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 1589 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(syncer::EncryptableTypes()));
1507 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1590 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1508 trans.GetWrappedTrans(), 1591 trans.GetWrappedTrans(),
1509 trans.GetCryptographer(), 1592 trans.GetCryptographer(),
1510 BOOKMARKS, 1593 BOOKMARKS,
1511 true /* is encrypted */)); 1594 true /* is encrypted */));
1512 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1595 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1513 trans.GetWrappedTrans(), 1596 trans.GetWrappedTrans(),
1514 trans.GetCryptographer(), 1597 trans.GetCryptographer(),
1515 SESSIONS, 1598 SESSIONS,
1516 true /* is encrypted */)); 1599 true /* is encrypted */));
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1937 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2020 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1938 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 2021 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1939 trans.GetWrappedTrans(), 2022 trans.GetWrappedTrans(),
1940 trans.GetCryptographer(), 2023 trans.GetCryptographer(),
1941 BOOKMARKS, 2024 BOOKMARKS,
1942 false /* not encrypted */)); 2025 false /* not encrypted */));
1943 } 2026 }
1944 2027
1945 EXPECT_CALL(observer_, 2028 EXPECT_CALL(observer_,
1946 OnEncryptedTypesChanged( 2029 OnEncryptedTypesChanged(
1947 HasModelTypes(ModelTypeSet::All()), true)); 2030 HasModelTypes(syncer::EncryptableTypes()), true));
1948 EXPECT_CALL(observer_, OnEncryptionComplete()); 2031 EXPECT_CALL(observer_, OnEncryptionComplete());
1949 sync_manager_.EnableEncryptEverything(); 2032 sync_manager_.EnableEncryptEverything();
1950 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 2033 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1951 2034
1952 { 2035 {
1953 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2036 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1954 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 2037 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(syncer::EncryptableTypes()));
1955 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 2038 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1956 trans.GetWrappedTrans(), 2039 trans.GetWrappedTrans(),
1957 trans.GetCryptographer(), 2040 trans.GetCryptographer(),
1958 BOOKMARKS, 2041 BOOKMARKS,
1959 true /* is encrypted */)); 2042 true /* is encrypted */));
1960 2043
1961 ReadNode node(&trans); 2044 ReadNode node(&trans);
1962 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1)); 2045 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1));
1963 EXPECT_EQ(BOOKMARKS, node.GetModelType()); 2046 EXPECT_EQ(BOOKMARKS, node.GetModelType());
1964 EXPECT_EQ(title, node.GetTitle()); 2047 EXPECT_EQ(title, node.GetTitle());
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2025 WriteNode node(&trans); 2108 WriteNode node(&trans);
2026 EXPECT_EQ(BaseNode::INIT_OK, 2109 EXPECT_EQ(BaseNode::INIT_OK,
2027 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2110 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2028 node.SetEntitySpecifics(entity_specifics); 2111 node.SetEntitySpecifics(entity_specifics);
2029 } 2112 }
2030 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2113 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2031 2114
2032 // Encrypt the datatatype, should set is_unsynced. 2115 // Encrypt the datatatype, should set is_unsynced.
2033 EXPECT_CALL(observer_, 2116 EXPECT_CALL(observer_,
2034 OnEncryptedTypesChanged( 2117 OnEncryptedTypesChanged(
2035 HasModelTypes(ModelTypeSet::All()), true)); 2118 HasModelTypes(syncer::EncryptableTypes()), true));
2036 EXPECT_CALL(observer_, OnEncryptionComplete()); 2119 EXPECT_CALL(observer_, OnEncryptionComplete());
2037 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2120 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2038 2121
2039 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 2122 RefreshEncryption();
2040 PumpLoop();
2041 { 2123 {
2042 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2124 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2043 ReadNode node(&trans); 2125 ReadNode node(&trans);
2044 EXPECT_EQ(BaseNode::INIT_OK, 2126 EXPECT_EQ(BaseNode::INIT_OK,
2045 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2127 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2046 const syncable::Entry* node_entry = node.GetEntry(); 2128 const syncable::Entry* node_entry = node.GetEntry();
2047 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2129 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2048 EXPECT_TRUE(specifics.has_encrypted()); 2130 EXPECT_TRUE(specifics.has_encrypted());
2049 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2131 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2050 Cryptographer* cryptographer = trans.GetCryptographer(); 2132 Cryptographer* cryptographer = trans.GetCryptographer();
(...skipping 22 matching lines...) Expand all
2073 EXPECT_TRUE(cryptographer->is_ready()); 2155 EXPECT_TRUE(cryptographer->is_ready());
2074 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey( 2156 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey(
2075 specifics.encrypted())); 2157 specifics.encrypted()));
2076 } 2158 }
2077 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2159 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2078 2160
2079 // Force a re-encrypt everything. Should not set is_unsynced. 2161 // Force a re-encrypt everything. Should not set is_unsynced.
2080 testing::Mock::VerifyAndClearExpectations(&observer_); 2162 testing::Mock::VerifyAndClearExpectations(&observer_);
2081 EXPECT_CALL(observer_, OnEncryptionComplete()); 2163 EXPECT_CALL(observer_, OnEncryptionComplete());
2082 2164
2083 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 2165 RefreshEncryption();
2084 PumpLoop();
2085
2086 { 2166 {
2087 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2167 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2088 ReadNode node(&trans); 2168 ReadNode node(&trans);
2089 EXPECT_EQ(BaseNode::INIT_OK, 2169 EXPECT_EQ(BaseNode::INIT_OK,
2090 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2170 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2091 const syncable::Entry* node_entry = node.GetEntry(); 2171 const syncable::Entry* node_entry = node.GetEntry();
2092 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2172 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2093 EXPECT_TRUE(specifics.has_encrypted()); 2173 EXPECT_TRUE(specifics.has_encrypted());
2094 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2174 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2095 Cryptographer* cryptographer = trans.GetCryptographer(); 2175 Cryptographer* cryptographer = trans.GetCryptographer();
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2352 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2273 BaseNode::GenerateSyncableHash(PASSWORDS, 2353 BaseNode::GenerateSyncableHash(PASSWORDS,
2274 client_tag), 2354 client_tag),
2275 entity_specifics); 2355 entity_specifics);
2276 // New node shouldn't start off unsynced. 2356 // New node shouldn't start off unsynced.
2277 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2357 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2278 2358
2279 // Force a re-encrypt everything. Should not set is_unsynced. 2359 // Force a re-encrypt everything. Should not set is_unsynced.
2280 testing::Mock::VerifyAndClearExpectations(&observer_); 2360 testing::Mock::VerifyAndClearExpectations(&observer_);
2281 EXPECT_CALL(observer_, OnEncryptionComplete()); 2361 EXPECT_CALL(observer_, OnEncryptionComplete());
2282 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 2362 RefreshEncryption();
2283 PumpLoop();
2284 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2363 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2285 } 2364 }
2286 2365
2287 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2366 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks
2288 // when we write the same data, but does set it when we write new data. 2367 // when we write the same data, but does set it when we write new data.
2289 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2368 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2290 std::string client_tag = "title"; 2369 std::string client_tag = "title";
2291 sync_pb::EntitySpecifics entity_specifics; 2370 sync_pb::EntitySpecifics entity_specifics;
2292 entity_specifics.mutable_bookmark()->set_url("url"); 2371 entity_specifics.mutable_bookmark()->set_url("url");
2293 entity_specifics.mutable_bookmark()->set_title("title"); 2372 entity_specifics.mutable_bookmark()->set_title("title");
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2330 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2409 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2331 BaseNode::GenerateSyncableHash(BOOKMARKS, 2410 BaseNode::GenerateSyncableHash(BOOKMARKS,
2332 client_tag), 2411 client_tag),
2333 entity_specifics); 2412 entity_specifics);
2334 // New node shouldn't start off unsynced. 2413 // New node shouldn't start off unsynced.
2335 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2414 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2336 2415
2337 // Encrypt the datatatype, should set is_unsynced. 2416 // Encrypt the datatatype, should set is_unsynced.
2338 EXPECT_CALL(observer_, 2417 EXPECT_CALL(observer_,
2339 OnEncryptedTypesChanged( 2418 OnEncryptedTypesChanged(
2340 HasModelTypes(ModelTypeSet::All()), true)); 2419 HasModelTypes(syncer::EncryptableTypes()), true));
2341 EXPECT_CALL(observer_, OnEncryptionComplete()); 2420 EXPECT_CALL(observer_, OnEncryptionComplete());
2342 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2421 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2343 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 2422 RefreshEncryption();
2344 PumpLoop();
2345 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2423 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2346 2424
2347 // Manually change to the same title. Should not set is_unsynced. 2425 // Manually change to the same title. Should not set is_unsynced.
2348 // NON_UNIQUE_NAME should be kEncryptedString. 2426 // NON_UNIQUE_NAME should be kEncryptedString.
2349 { 2427 {
2350 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2428 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2351 WriteNode node(&trans); 2429 WriteNode node(&trans);
2352 EXPECT_EQ(BaseNode::INIT_OK, 2430 EXPECT_EQ(BaseNode::INIT_OK,
2353 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2431 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2354 node.SetTitle(UTF8ToWide(client_tag)); 2432 node.SetTitle(UTF8ToWide(client_tag));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 client_tag, 2503 client_tag,
2426 BaseNode::GenerateSyncableHash(PREFERENCES, 2504 BaseNode::GenerateSyncableHash(PREFERENCES,
2427 client_tag), 2505 client_tag),
2428 entity_specifics); 2506 entity_specifics);
2429 // New node shouldn't start off unsynced. 2507 // New node shouldn't start off unsynced.
2430 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2508 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2431 2509
2432 // Encrypt the datatatype, should set is_unsynced. 2510 // Encrypt the datatatype, should set is_unsynced.
2433 EXPECT_CALL(observer_, 2511 EXPECT_CALL(observer_,
2434 OnEncryptedTypesChanged( 2512 OnEncryptedTypesChanged(
2435 HasModelTypes(ModelTypeSet::All()), true)); 2513 HasModelTypes(syncer::EncryptableTypes()), true));
2436 EXPECT_CALL(observer_, OnEncryptionComplete()); 2514 EXPECT_CALL(observer_, OnEncryptionComplete());
2437 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2515 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2438 sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); 2516 RefreshEncryption();
2439 PumpLoop();
2440 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2517 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2441 2518
2442 // Manually change to the same title. Should not set is_unsynced. 2519 // Manually change to the same title. Should not set is_unsynced.
2443 // NON_UNIQUE_NAME should be kEncryptedString. 2520 // NON_UNIQUE_NAME should be kEncryptedString.
2444 { 2521 {
2445 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2522 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2446 WriteNode node(&trans); 2523 WriteNode node(&trans);
2447 EXPECT_EQ(BaseNode::INIT_OK, 2524 EXPECT_EQ(BaseNode::INIT_OK,
2448 node.InitByClientTagLookup(PREFERENCES, client_tag)); 2525 node.InitByClientTagLookup(PREFERENCES, client_tag));
2449 node.SetTitle(UTF8ToWide(client_tag)); 2526 node.SetTitle(UTF8ToWide(client_tag));
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
2800 2877
2801 // Verify only the non-disabled types remain after cleanup. 2878 // Verify only the non-disabled types remain after cleanup.
2802 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); 2879 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types);
2803 EXPECT_TRUE(new_enabled_types.Equals( 2880 EXPECT_TRUE(new_enabled_types.Equals(
2804 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); 2881 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types)));
2805 EXPECT_TRUE(disabled_types.Equals( 2882 EXPECT_TRUE(disabled_types.Equals(
2806 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); 2883 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All())));
2807 } 2884 }
2808 2885
2809 } // namespace 2886 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698