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

Side by Side Diff: chrome/browser/sync/internal_api/syncapi_unittest.cc

Issue 9460047: sync: remove use of protobuf extensions in protocol to reduce static init overhead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fred's review Created 8 years, 9 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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 node.SetIsFolder(true); 163 node.SetIsFolder(true);
164 return node.GetId(); 164 return node.GetId();
165 } 165 }
166 166
167 // Creates the "synced" root node for a particular datatype. We use the syncable 167 // Creates the "synced" root node for a particular datatype. We use the syncable
168 // methods here so that the syncer treats these nodes as if they were already 168 // methods here so that the syncer treats these nodes as if they were already
169 // received from the server. 169 // received from the server.
170 int64 MakeServerNodeForType(UserShare* share, 170 int64 MakeServerNodeForType(UserShare* share,
171 ModelType model_type) { 171 ModelType model_type) {
172 sync_pb::EntitySpecifics specifics; 172 sync_pb::EntitySpecifics specifics;
173 syncable::AddDefaultExtensionValue(model_type, &specifics); 173 syncable::AddDefaultFieldValue(model_type, &specifics);
174 syncable::WriteTransaction trans( 174 syncable::WriteTransaction trans(
175 FROM_HERE, syncable::UNITTEST, share->directory.get()); 175 FROM_HERE, syncable::UNITTEST, share->directory.get());
176 // Attempt to lookup by nigori tag. 176 // Attempt to lookup by nigori tag.
177 std::string type_tag = syncable::ModelTypeToRootTag(model_type); 177 std::string type_tag = syncable::ModelTypeToRootTag(model_type);
178 syncable::Id node_id = syncable::Id::CreateFromServerId(type_tag); 178 syncable::Id node_id = syncable::Id::CreateFromServerId(type_tag);
179 syncable::MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, 179 syncable::MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
180 node_id); 180 node_id);
181 EXPECT_TRUE(entry.good()); 181 EXPECT_TRUE(entry.good());
182 entry.Put(syncable::BASE_VERSION, 1); 182 entry.Put(syncable::BASE_VERSION, 1);
183 entry.Put(syncable::SERVER_VERSION, 1); 183 entry.Put(syncable::SERVER_VERSION, 1);
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 } 501 }
502 502
503 TEST_F(SyncApiTest, BaseNodeSetSpecifics) { 503 TEST_F(SyncApiTest, BaseNodeSetSpecifics) {
504 int64 child_id = MakeNode(test_user_share_.user_share(), 504 int64 child_id = MakeNode(test_user_share_.user_share(),
505 syncable::BOOKMARKS, "testtag"); 505 syncable::BOOKMARKS, "testtag");
506 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 506 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
507 WriteNode node(&trans); 507 WriteNode node(&trans);
508 EXPECT_TRUE(node.InitByIdLookup(child_id)); 508 EXPECT_TRUE(node.InitByIdLookup(child_id));
509 509
510 sync_pb::EntitySpecifics entity_specifics; 510 sync_pb::EntitySpecifics entity_specifics;
511 entity_specifics.MutableExtension(sync_pb::bookmark)-> 511 entity_specifics.mutable_bookmark()->set_url("http://www.google.com");
512 set_url("http://www.google.com");
513 512
514 EXPECT_NE(entity_specifics.SerializeAsString(), 513 EXPECT_NE(entity_specifics.SerializeAsString(),
515 node.GetEntitySpecifics().SerializeAsString()); 514 node.GetEntitySpecifics().SerializeAsString());
516 node.SetEntitySpecifics(entity_specifics); 515 node.SetEntitySpecifics(entity_specifics);
517 EXPECT_EQ(entity_specifics.SerializeAsString(), 516 EXPECT_EQ(entity_specifics.SerializeAsString(),
518 node.GetEntitySpecifics().SerializeAsString()); 517 node.GetEntitySpecifics().SerializeAsString());
519 } 518 }
520 519
521 TEST_F(SyncApiTest, BaseNodeSetSpecificsPreservesUnknownFields) { 520 TEST_F(SyncApiTest, BaseNodeSetSpecificsPreservesUnknownFields) {
522 int64 child_id = MakeNode(test_user_share_.user_share(), 521 int64 child_id = MakeNode(test_user_share_.user_share(),
523 syncable::BOOKMARKS, "testtag"); 522 syncable::BOOKMARKS, "testtag");
524 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 523 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
525 WriteNode node(&trans); 524 WriteNode node(&trans);
526 EXPECT_TRUE(node.InitByIdLookup(child_id)); 525 EXPECT_TRUE(node.InitByIdLookup(child_id));
527 EXPECT_TRUE(node.GetEntitySpecifics().unknown_fields().empty()); 526 EXPECT_TRUE(node.GetEntitySpecifics().unknown_fields().empty());
528 527
529 sync_pb::EntitySpecifics entity_specifics; 528 sync_pb::EntitySpecifics entity_specifics;
530 entity_specifics.MutableExtension(sync_pb::bookmark)-> 529 entity_specifics.mutable_bookmark()->set_url("http://www.google.com");
531 set_url("http://www.google.com");
532 entity_specifics.mutable_unknown_fields()->AddFixed32(5, 100); 530 entity_specifics.mutable_unknown_fields()->AddFixed32(5, 100);
533 node.SetEntitySpecifics(entity_specifics); 531 node.SetEntitySpecifics(entity_specifics);
534 EXPECT_FALSE(node.GetEntitySpecifics().unknown_fields().empty()); 532 EXPECT_FALSE(node.GetEntitySpecifics().unknown_fields().empty());
535 533
536 entity_specifics.mutable_unknown_fields()->Clear(); 534 entity_specifics.mutable_unknown_fields()->Clear();
537 node.SetEntitySpecifics(entity_specifics); 535 node.SetEntitySpecifics(entity_specifics);
538 EXPECT_FALSE(node.GetEntitySpecifics().unknown_fields().empty()); 536 EXPECT_FALSE(node.GetEntitySpecifics().unknown_fields().empty());
539 } 537 }
540 538
541 namespace { 539 namespace {
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after
1805 "testtag"); 1803 "testtag");
1806 int64 node_id2 = MakeNode(sync_manager_.GetUserShare(), 1804 int64 node_id2 = MakeNode(sync_manager_.GetUserShare(),
1807 syncable::BOOKMARKS, 1805 syncable::BOOKMARKS,
1808 "testtag2"); 1806 "testtag2");
1809 { 1807 {
1810 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1808 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1811 WriteNode node(&trans); 1809 WriteNode node(&trans);
1812 EXPECT_TRUE(node.InitByIdLookup(node_id1)); 1810 EXPECT_TRUE(node.InitByIdLookup(node_id1));
1813 1811
1814 sync_pb::EntitySpecifics entity_specifics; 1812 sync_pb::EntitySpecifics entity_specifics;
1815 entity_specifics.MutableExtension(sync_pb::bookmark)->set_url(url); 1813 entity_specifics.mutable_bookmark()->set_url(url);
1816 node.SetEntitySpecifics(entity_specifics); 1814 node.SetEntitySpecifics(entity_specifics);
1817 1815
1818 // Set the old style title. 1816 // Set the old style title.
1819 syncable::MutableEntry* node_entry = node.entry_; 1817 syncable::MutableEntry* node_entry = node.entry_;
1820 node_entry->Put(syncable::NON_UNIQUE_NAME, title); 1818 node_entry->Put(syncable::NON_UNIQUE_NAME, title);
1821 1819
1822 WriteNode node2(&trans); 1820 WriteNode node2(&trans);
1823 EXPECT_TRUE(node2.InitByIdLookup(node_id2)); 1821 EXPECT_TRUE(node2.InitByIdLookup(node_id2));
1824 1822
1825 sync_pb::EntitySpecifics entity_specifics2; 1823 sync_pb::EntitySpecifics entity_specifics2;
1826 entity_specifics2.MutableExtension(sync_pb::bookmark)->set_url(url2); 1824 entity_specifics2.mutable_bookmark()->set_url(url2);
1827 node2.SetEntitySpecifics(entity_specifics2); 1825 node2.SetEntitySpecifics(entity_specifics2);
1828 1826
1829 // Set the old style title. 1827 // Set the old style title.
1830 syncable::MutableEntry* node_entry2 = node2.entry_; 1828 syncable::MutableEntry* node_entry2 = node2.entry_;
1831 node_entry2->Put(syncable::NON_UNIQUE_NAME, title2); 1829 node_entry2->Put(syncable::NON_UNIQUE_NAME, title2);
1832 } 1830 }
1833 1831
1834 { 1832 {
1835 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1833 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1836 ReadNode node(&trans); 1834 ReadNode node(&trans);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1922 EXPECT_EQ(title, node.GetTitle()); 1920 EXPECT_EQ(title, node.GetTitle());
1923 EXPECT_EQ(url, node.GetURL()); 1921 EXPECT_EQ(url, node.GetURL());
1924 } 1922 }
1925 } 1923 }
1926 1924
1927 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary 1925 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary
1928 // changes. 1926 // changes.
1929 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { 1927 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
1930 std::string client_tag = "title"; 1928 std::string client_tag = "title";
1931 sync_pb::EntitySpecifics entity_specifics; 1929 sync_pb::EntitySpecifics entity_specifics;
1932 entity_specifics.MutableExtension(sync_pb::bookmark)->set_url("url"); 1930 entity_specifics.mutable_bookmark()->set_url("url");
1933 entity_specifics.MutableExtension(sync_pb::bookmark)->set_title("title"); 1931 entity_specifics.mutable_bookmark()->set_title("title");
1934 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag, 1932 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag,
1935 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS, 1933 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS,
1936 client_tag), 1934 client_tag),
1937 entity_specifics); 1935 entity_specifics);
1938 // New node shouldn't start off unsynced. 1936 // New node shouldn't start off unsynced.
1939 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 1937 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
1940 // Manually change to the same data. Should not set is_unsynced. 1938 // Manually change to the same data. Should not set is_unsynced.
1941 { 1939 {
1942 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1940 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1943 WriteNode node(&trans); 1941 WriteNode node(&trans);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2031 EXPECT_FALSE(node_entry->Get(IS_UNSYNCED)); 2029 EXPECT_FALSE(node_entry->Get(IS_UNSYNCED));
2032 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2030 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2033 Cryptographer* cryptographer = trans.GetCryptographer(); 2031 Cryptographer* cryptographer = trans.GetCryptographer();
2034 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey( 2032 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey(
2035 specifics.encrypted())); 2033 specifics.encrypted()));
2036 } 2034 }
2037 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 2035 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
2038 2036
2039 // Manually change to different data. Should set is_unsynced. 2037 // Manually change to different data. Should set is_unsynced.
2040 { 2038 {
2041 entity_specifics.MutableExtension(sync_pb::bookmark)->set_url("url2"); 2039 entity_specifics.mutable_bookmark()->set_url("url2");
2042 entity_specifics.MutableExtension(sync_pb::bookmark)->set_title("title2"); 2040 entity_specifics.mutable_bookmark()->set_title("title2");
2043 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2041 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2044 WriteNode node(&trans); 2042 WriteNode node(&trans);
2045 EXPECT_TRUE(node.InitByClientTagLookup(syncable::BOOKMARKS, client_tag)); 2043 EXPECT_TRUE(node.InitByClientTagLookup(syncable::BOOKMARKS, client_tag));
2046 node.SetEntitySpecifics(entity_specifics); 2044 node.SetEntitySpecifics(entity_specifics);
2047 const syncable::Entry* node_entry = node.GetEntry(); 2045 const syncable::Entry* node_entry = node.GetEntry();
2048 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2046 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2049 EXPECT_TRUE(specifics.has_encrypted()); 2047 EXPECT_TRUE(specifics.has_encrypted());
2050 EXPECT_TRUE(node_entry->Get(IS_UNSYNCED)); 2048 EXPECT_TRUE(node_entry->Get(IS_UNSYNCED));
2051 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2049 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2052 Cryptographer* cryptographer = trans.GetCryptographer(); 2050 Cryptographer* cryptographer = trans.GetCryptographer();
2053 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey( 2051 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey(
2054 specifics.encrypted())); 2052 specifics.encrypted()));
2055 } 2053 }
2056 } 2054 }
2057 2055
2058 // Passwords have their own handling for encryption. Verify it does not result 2056 // Passwords have their own handling for encryption. Verify it does not result
2059 // in unnecessary writes via SetEntitySpecifics. 2057 // in unnecessary writes via SetEntitySpecifics.
2060 TEST_F(SyncManagerTest, UpdatePasswordSetEntitySpecificsNoChange) { 2058 TEST_F(SyncManagerTest, UpdatePasswordSetEntitySpecificsNoChange) {
2061 std::string client_tag = "title"; 2059 std::string client_tag = "title";
2062 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2060 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2063 sync_pb::EntitySpecifics entity_specifics; 2061 sync_pb::EntitySpecifics entity_specifics;
2064 { 2062 {
2065 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2063 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2066 Cryptographer* cryptographer = trans.GetCryptographer(); 2064 Cryptographer* cryptographer = trans.GetCryptographer();
2067 sync_pb::PasswordSpecificsData data; 2065 sync_pb::PasswordSpecificsData data;
2068 data.set_password_value("secret"); 2066 data.set_password_value("secret");
2069 cryptographer->Encrypt( 2067 cryptographer->Encrypt(
2070 data, 2068 data,
2071 entity_specifics.MutableExtension(sync_pb::password)-> 2069 entity_specifics.mutable_password()->
2072 mutable_encrypted()); 2070 mutable_encrypted());
2073 } 2071 }
2074 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag, 2072 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag,
2075 BaseNode::GenerateSyncableHash(syncable::PASSWORDS, 2073 BaseNode::GenerateSyncableHash(syncable::PASSWORDS,
2076 client_tag), 2074 client_tag),
2077 entity_specifics); 2075 entity_specifics);
2078 // New node shouldn't start off unsynced. 2076 // New node shouldn't start off unsynced.
2079 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2077 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2080 2078
2081 // Manually change to the same data via SetEntitySpecifics. Should not set 2079 // Manually change to the same data via SetEntitySpecifics. Should not set
(...skipping 13 matching lines...) Expand all
2095 std::string client_tag = "title"; 2093 std::string client_tag = "title";
2096 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2094 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2097 sync_pb::EntitySpecifics entity_specifics; 2095 sync_pb::EntitySpecifics entity_specifics;
2098 { 2096 {
2099 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2097 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2100 Cryptographer* cryptographer = trans.GetCryptographer(); 2098 Cryptographer* cryptographer = trans.GetCryptographer();
2101 sync_pb::PasswordSpecificsData data; 2099 sync_pb::PasswordSpecificsData data;
2102 data.set_password_value("secret"); 2100 data.set_password_value("secret");
2103 cryptographer->Encrypt( 2101 cryptographer->Encrypt(
2104 data, 2102 data,
2105 entity_specifics.MutableExtension(sync_pb::password)-> 2103 entity_specifics.mutable_password()->
2106 mutable_encrypted()); 2104 mutable_encrypted());
2107 } 2105 }
2108 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag, 2106 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag,
2109 BaseNode::GenerateSyncableHash(syncable::PASSWORDS, 2107 BaseNode::GenerateSyncableHash(syncable::PASSWORDS,
2110 client_tag), 2108 client_tag),
2111 entity_specifics); 2109 entity_specifics);
2112 // New node shouldn't start off unsynced. 2110 // New node shouldn't start off unsynced.
2113 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2111 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2114 2112
2115 // Manually change to the same data via SetPasswordSpecifics. Should not set 2113 // Manually change to the same data via SetPasswordSpecifics. Should not set
2116 // is_unsynced. 2114 // is_unsynced.
2117 { 2115 {
2118 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2116 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2119 WriteNode node(&trans); 2117 WriteNode node(&trans);
2120 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PASSWORDS, client_tag)); 2118 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PASSWORDS, client_tag));
2121 node.SetPasswordSpecifics(node.GetPasswordSpecifics()); 2119 node.SetPasswordSpecifics(node.GetPasswordSpecifics());
2122 } 2120 }
2123 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2121 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2124 2122
2125 // Manually change to different data. Should set is_unsynced. 2123 // Manually change to different data. Should set is_unsynced.
2126 { 2124 {
2127 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2125 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2128 WriteNode node(&trans); 2126 WriteNode node(&trans);
2129 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PASSWORDS, client_tag)); 2127 EXPECT_TRUE(node.InitByClientTagLookup(syncable::PASSWORDS, client_tag));
2130 Cryptographer* cryptographer = trans.GetCryptographer(); 2128 Cryptographer* cryptographer = trans.GetCryptographer();
2131 sync_pb::PasswordSpecificsData data; 2129 sync_pb::PasswordSpecificsData data;
2132 data.set_password_value("secret2"); 2130 data.set_password_value("secret2");
2133 cryptographer->Encrypt( 2131 cryptographer->Encrypt(
2134 data, 2132 data,
2135 entity_specifics.MutableExtension(sync_pb::password)-> 2133 entity_specifics.mutable_password()->mutable_encrypted());
2136 mutable_encrypted());
2137 node.SetPasswordSpecifics(data); 2134 node.SetPasswordSpecifics(data);
2138 const syncable::Entry* node_entry = node.GetEntry(); 2135 const syncable::Entry* node_entry = node.GetEntry();
2139 EXPECT_TRUE(node_entry->Get(IS_UNSYNCED)); 2136 EXPECT_TRUE(node_entry->Get(IS_UNSYNCED));
2140 } 2137 }
2141 } 2138 }
2142 2139
2143 // Passwords have their own handling for encryption. Verify setting a new 2140 // Passwords have their own handling for encryption. Verify setting a new
2144 // passphrase updates the data. 2141 // passphrase updates the data.
2145 TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) { 2142 TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) {
2146 std::string client_tag = "title"; 2143 std::string client_tag = "title";
2147 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2144 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2148 sync_pb::EntitySpecifics entity_specifics; 2145 sync_pb::EntitySpecifics entity_specifics;
2149 { 2146 {
2150 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2147 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2151 Cryptographer* cryptographer = trans.GetCryptographer(); 2148 Cryptographer* cryptographer = trans.GetCryptographer();
2152 sync_pb::PasswordSpecificsData data; 2149 sync_pb::PasswordSpecificsData data;
2153 data.set_password_value("secret"); 2150 data.set_password_value("secret");
2154 cryptographer->Encrypt( 2151 cryptographer->Encrypt(
2155 data, 2152 data,
2156 entity_specifics.MutableExtension(sync_pb::password)-> 2153 entity_specifics.mutable_password()->mutable_encrypted());
2157 mutable_encrypted());
2158 } 2154 }
2159 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag, 2155 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag,
2160 BaseNode::GenerateSyncableHash(syncable::PASSWORDS, 2156 BaseNode::GenerateSyncableHash(syncable::PASSWORDS,
2161 client_tag), 2157 client_tag),
2162 entity_specifics); 2158 entity_specifics);
2163 // New node shouldn't start off unsynced. 2159 // New node shouldn't start off unsynced.
2164 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2160 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2165 2161
2166 // Set a new passphrase. Should set is_unsynced. 2162 // Set a new passphrase. Should set is_unsynced.
2167 testing::Mock::VerifyAndClearExpectations(&observer_); 2163 testing::Mock::VerifyAndClearExpectations(&observer_);
(...skipping 10 matching lines...) Expand all
2178 std::string client_tag = "title"; 2174 std::string client_tag = "title";
2179 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2175 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2180 sync_pb::EntitySpecifics entity_specifics; 2176 sync_pb::EntitySpecifics entity_specifics;
2181 { 2177 {
2182 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2178 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2183 Cryptographer* cryptographer = trans.GetCryptographer(); 2179 Cryptographer* cryptographer = trans.GetCryptographer();
2184 sync_pb::PasswordSpecificsData data; 2180 sync_pb::PasswordSpecificsData data;
2185 data.set_password_value("secret"); 2181 data.set_password_value("secret");
2186 cryptographer->Encrypt( 2182 cryptographer->Encrypt(
2187 data, 2183 data,
2188 entity_specifics.MutableExtension(sync_pb::password)-> 2184 entity_specifics.mutable_password()->mutable_encrypted());
2189 mutable_encrypted());
2190 } 2185 }
2191 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag, 2186 MakeServerNode(sync_manager_.GetUserShare(), syncable::PASSWORDS, client_tag,
2192 BaseNode::GenerateSyncableHash(syncable::PASSWORDS, 2187 BaseNode::GenerateSyncableHash(syncable::PASSWORDS,
2193 client_tag), 2188 client_tag),
2194 entity_specifics); 2189 entity_specifics);
2195 // New node shouldn't start off unsynced. 2190 // New node shouldn't start off unsynced.
2196 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2191 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2197 2192
2198 // Force a re-encrypt everything. Should not set is_unsynced. 2193 // Force a re-encrypt everything. Should not set is_unsynced.
2199 testing::Mock::VerifyAndClearExpectations(&observer_); 2194 testing::Mock::VerifyAndClearExpectations(&observer_);
2200 EXPECT_CALL(observer_, OnEncryptionComplete()); 2195 EXPECT_CALL(observer_, OnEncryptionComplete());
2201 sync_manager_.RefreshNigori(base::Bind(&SyncManagerTest::EmptyClosure, 2196 sync_manager_.RefreshNigori(base::Bind(&SyncManagerTest::EmptyClosure,
2202 base::Unretained(this))); 2197 base::Unretained(this)));
2203 scoped_refptr<base::ThreadTestHelper> helper( 2198 scoped_refptr<base::ThreadTestHelper> helper(
2204 new base::ThreadTestHelper( 2199 new base::ThreadTestHelper(
2205 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE))); 2200 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)));
2206 ASSERT_TRUE(helper->Run()); 2201 ASSERT_TRUE(helper->Run());
2207 PumpLoop(); 2202 PumpLoop();
2208 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag)); 2203 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PASSWORDS, client_tag));
2209 } 2204 }
2210 2205
2211 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2206 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks
2212 // when we write the same data, but does set it when we write new data. 2207 // when we write the same data, but does set it when we write new data.
2213 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2208 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2214 std::string client_tag = "title"; 2209 std::string client_tag = "title";
2215 sync_pb::EntitySpecifics entity_specifics; 2210 sync_pb::EntitySpecifics entity_specifics;
2216 entity_specifics.MutableExtension(sync_pb::bookmark)->set_url("url"); 2211 entity_specifics.mutable_bookmark()->set_url("url");
2217 entity_specifics.MutableExtension(sync_pb::bookmark)->set_title("title"); 2212 entity_specifics.mutable_bookmark()->set_title("title");
2218 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag, 2213 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag,
2219 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS, 2214 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS,
2220 client_tag), 2215 client_tag),
2221 entity_specifics); 2216 entity_specifics);
2222 // New node shouldn't start off unsynced. 2217 // New node shouldn't start off unsynced.
2223 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 2218 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
2224 2219
2225 // Manually change to the same title. Should not set is_unsynced. 2220 // Manually change to the same title. Should not set is_unsynced.
2226 { 2221 {
2227 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2222 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
(...skipping 12 matching lines...) Expand all
2240 } 2235 }
2241 EXPECT_TRUE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 2236 EXPECT_TRUE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
2242 } 2237 }
2243 2238
2244 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted 2239 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted
2245 // bookmarks when we write the same data, but does set it when we write new 2240 // bookmarks when we write the same data, but does set it when we write new
2246 // data. 2241 // data.
2247 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { 2242 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) {
2248 std::string client_tag = "title"; 2243 std::string client_tag = "title";
2249 sync_pb::EntitySpecifics entity_specifics; 2244 sync_pb::EntitySpecifics entity_specifics;
2250 entity_specifics.MutableExtension(sync_pb::bookmark)->set_url("url"); 2245 entity_specifics.mutable_bookmark()->set_url("url");
2251 entity_specifics.MutableExtension(sync_pb::bookmark)->set_title("title"); 2246 entity_specifics.mutable_bookmark()->set_title("title");
2252 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag, 2247 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag,
2253 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS, 2248 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS,
2254 client_tag), 2249 client_tag),
2255 entity_specifics); 2250 entity_specifics);
2256 // New node shouldn't start off unsynced. 2251 // New node shouldn't start off unsynced.
2257 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 2252 EXPECT_FALSE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
2258 2253
2259 // Encrypt the datatatype, should set is_unsynced. 2254 // Encrypt the datatatype, should set is_unsynced.
2260 EXPECT_CALL(observer_, 2255 EXPECT_CALL(observer_,
2261 OnEncryptedTypesChanged( 2256 OnEncryptedTypesChanged(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2298 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2293 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2299 } 2294 }
2300 EXPECT_TRUE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag)); 2295 EXPECT_TRUE(ResetUnsyncedEntry(syncable::BOOKMARKS, client_tag));
2301 } 2296 }
2302 2297
2303 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks 2298 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks
2304 // when we write the same data, but does set it when we write new data. 2299 // when we write the same data, but does set it when we write new data.
2305 TEST_F(SyncManagerTest, SetNonBookmarkTitle) { 2300 TEST_F(SyncManagerTest, SetNonBookmarkTitle) {
2306 std::string client_tag = "title"; 2301 std::string client_tag = "title";
2307 sync_pb::EntitySpecifics entity_specifics; 2302 sync_pb::EntitySpecifics entity_specifics;
2308 entity_specifics.MutableExtension(sync_pb::preference)->set_name("name"); 2303 entity_specifics.mutable_preference()->set_name("name");
2309 entity_specifics.MutableExtension(sync_pb::preference)->set_value("value"); 2304 entity_specifics.mutable_preference()->set_value("value");
2310 MakeServerNode(sync_manager_.GetUserShare(), 2305 MakeServerNode(sync_manager_.GetUserShare(),
2311 syncable::PREFERENCES, 2306 syncable::PREFERENCES,
2312 client_tag, 2307 client_tag,
2313 BaseNode::GenerateSyncableHash(syncable::PREFERENCES, 2308 BaseNode::GenerateSyncableHash(syncable::PREFERENCES,
2314 client_tag), 2309 client_tag),
2315 entity_specifics); 2310 entity_specifics);
2316 // New node shouldn't start off unsynced. 2311 // New node shouldn't start off unsynced.
2317 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag)); 2312 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag));
2318 2313
2319 // Manually change to the same title. Should not set is_unsynced. 2314 // Manually change to the same title. Should not set is_unsynced.
(...skipping 14 matching lines...) Expand all
2334 } 2329 }
2335 EXPECT_TRUE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag)); 2330 EXPECT_TRUE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag));
2336 } 2331 }
2337 2332
2338 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted 2333 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted
2339 // non-bookmarks when we write the same data or when we write new data 2334 // non-bookmarks when we write the same data or when we write new data
2340 // data (should remained kEncryptedString). 2335 // data (should remained kEncryptedString).
2341 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { 2336 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) {
2342 std::string client_tag = "title"; 2337 std::string client_tag = "title";
2343 sync_pb::EntitySpecifics entity_specifics; 2338 sync_pb::EntitySpecifics entity_specifics;
2344 entity_specifics.MutableExtension(sync_pb::preference)->set_name("name"); 2339 entity_specifics.mutable_preference()->set_name("name");
2345 entity_specifics.MutableExtension(sync_pb::preference)->set_value("value"); 2340 entity_specifics.mutable_preference()->set_value("value");
2346 MakeServerNode(sync_manager_.GetUserShare(), 2341 MakeServerNode(sync_manager_.GetUserShare(),
2347 syncable::PREFERENCES, 2342 syncable::PREFERENCES,
2348 client_tag, 2343 client_tag,
2349 BaseNode::GenerateSyncableHash(syncable::PREFERENCES, 2344 BaseNode::GenerateSyncableHash(syncable::PREFERENCES,
2350 client_tag), 2345 client_tag),
2351 entity_specifics); 2346 entity_specifics);
2352 // New node shouldn't start off unsynced. 2347 // New node shouldn't start off unsynced.
2353 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag)); 2348 EXPECT_FALSE(ResetUnsyncedEntry(syncable::PREFERENCES, client_tag));
2354 2349
2355 // Encrypt the datatatype, should set is_unsynced. 2350 // Encrypt the datatatype, should set is_unsynced.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2403 std::string client_tag = "tag"; 2398 std::string client_tag = "tag";
2404 std::string url = "url"; 2399 std::string url = "url";
2405 std::string url2 = "new_url"; 2400 std::string url2 = "new_url";
2406 std::string title = "title"; 2401 std::string title = "title";
2407 sync_pb::EntitySpecifics entity_specifics; 2402 sync_pb::EntitySpecifics entity_specifics;
2408 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2403 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2409 { 2404 {
2410 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2405 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2411 browser_sync::Cryptographer* crypto = trans.GetCryptographer(); 2406 browser_sync::Cryptographer* crypto = trans.GetCryptographer();
2412 sync_pb::EntitySpecifics bm_specifics; 2407 sync_pb::EntitySpecifics bm_specifics;
2413 bm_specifics.MutableExtension(sync_pb::bookmark)->set_title("title"); 2408 bm_specifics.mutable_bookmark()->set_title("title");
2414 bm_specifics.MutableExtension(sync_pb::bookmark)->set_url("url"); 2409 bm_specifics.mutable_bookmark()->set_url("url");
2415 sync_pb::EncryptedData encrypted; 2410 sync_pb::EncryptedData encrypted;
2416 crypto->Encrypt(bm_specifics, &encrypted); 2411 crypto->Encrypt(bm_specifics, &encrypted);
2417 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); 2412 entity_specifics.mutable_encrypted()->CopyFrom(encrypted);
2418 syncable::AddDefaultExtensionValue(syncable::BOOKMARKS, &entity_specifics); 2413 syncable::AddDefaultFieldValue(syncable::BOOKMARKS, &entity_specifics);
2419 } 2414 }
2420 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag, 2415 MakeServerNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, client_tag,
2421 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS, 2416 BaseNode::GenerateSyncableHash(syncable::BOOKMARKS,
2422 client_tag), 2417 client_tag),
2423 entity_specifics); 2418 entity_specifics);
2424 2419
2425 { 2420 {
2426 // Verify the data. 2421 // Verify the data.
2427 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2422 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2428 ReadNode node(&trans); 2423 ReadNode node(&trans);
(...skipping 18 matching lines...) Expand all
2447 EXPECT_EQ(title, node.GetTitle()); 2442 EXPECT_EQ(title, node.GetTitle());
2448 EXPECT_EQ(GURL(url2), node.GetURL()); 2443 EXPECT_EQ(GURL(url2), node.GetURL());
2449 const syncable::Entry* node_entry = node.GetEntry(); 2444 const syncable::Entry* node_entry = node.GetEntry();
2450 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME)); 2445 EXPECT_EQ(kEncryptedString, node_entry->Get(NON_UNIQUE_NAME));
2451 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2446 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2452 EXPECT_TRUE(specifics.has_encrypted()); 2447 EXPECT_TRUE(specifics.has_encrypted());
2453 } 2448 }
2454 } 2449 }
2455 2450
2456 } // namespace browser_sync 2451 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/internal_api/change_record_unittest.cc ('k') | chrome/browser/sync/internal_api/write_node.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698