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

Side by Side Diff: components/sync/engine_impl/sync_manager_impl_unittest.cc

Issue 2502253003: [Sync] Move GenerateSyncableHash to base. (Closed)
Patch Set: Keep full syncable/ DEP. Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/sync/engine_impl/sync_manager_impl.h" 5 #include "components/sync/engine_impl/sync_manager_impl.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/files/scoped_temp_dir.h" 13 #include "base/files/scoped_temp_dir.h"
14 #include "base/format_macros.h" 14 #include "base/format_macros.h"
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/metrics/field_trial.h" 16 #include "base/metrics/field_trial.h"
17 #include "base/run_loop.h" 17 #include "base/run_loop.h"
18 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
21 #include "base/test/scoped_feature_list.h" 21 #include "base/test/scoped_feature_list.h"
22 #include "base/test/values_test_util.h" 22 #include "base/test/values_test_util.h"
23 #include "base/values.h" 23 #include "base/values.h"
24 #include "components/sync/base/attachment_id_proto.h" 24 #include "components/sync/base/attachment_id_proto.h"
25 #include "components/sync/base/cancelation_signal.h" 25 #include "components/sync/base/cancelation_signal.h"
26 #include "components/sync/base/extensions_activity.h" 26 #include "components/sync/base/extensions_activity.h"
27 #include "components/sync/base/fake_encryptor.h" 27 #include "components/sync/base/fake_encryptor.h"
28 #include "components/sync/base/hash_util.h"
28 #include "components/sync/base/mock_unrecoverable_error_handler.h" 29 #include "components/sync/base/mock_unrecoverable_error_handler.h"
29 #include "components/sync/base/model_type_test_util.h" 30 #include "components/sync/base/model_type_test_util.h"
30 #include "components/sync/base/sync_features.h" 31 #include "components/sync/base/sync_features.h"
31 #include "components/sync/engine/engine_util.h" 32 #include "components/sync/engine/engine_util.h"
32 #include "components/sync/engine/events/protocol_event.h" 33 #include "components/sync/engine/events/protocol_event.h"
33 #include "components/sync/engine/model_safe_worker.h" 34 #include "components/sync/engine/model_safe_worker.h"
34 #include "components/sync/engine/net/http_post_provider_factory.h" 35 #include "components/sync/engine/net/http_post_provider_factory.h"
35 #include "components/sync/engine/net/http_post_provider_interface.h" 36 #include "components/sync/engine/net/http_post_provider_interface.h"
36 #include "components/sync/engine/polling_constants.h" 37 #include "components/sync/engine/polling_constants.h"
37 #include "components/sync/engine/test_engine_components_factory.h" 38 #include "components/sync/engine/test_engine_components_factory.h"
(...skipping 11 matching lines...) Expand all
49 #include "components/sync/protocol/sync.pb.h" 50 #include "components/sync/protocol/sync.pb.h"
50 #include "components/sync/syncable/change_record.h" 51 #include "components/sync/syncable/change_record.h"
51 #include "components/sync/syncable/directory.h" 52 #include "components/sync/syncable/directory.h"
52 #include "components/sync/syncable/entry.h" 53 #include "components/sync/syncable/entry.h"
53 #include "components/sync/syncable/mutable_entry.h" 54 #include "components/sync/syncable/mutable_entry.h"
54 #include "components/sync/syncable/nigori_util.h" 55 #include "components/sync/syncable/nigori_util.h"
55 #include "components/sync/syncable/read_node.h" 56 #include "components/sync/syncable/read_node.h"
56 #include "components/sync/syncable/read_transaction.h" 57 #include "components/sync/syncable/read_transaction.h"
57 #include "components/sync/syncable/syncable_id.h" 58 #include "components/sync/syncable/syncable_id.h"
58 #include "components/sync/syncable/syncable_read_transaction.h" 59 #include "components/sync/syncable/syncable_read_transaction.h"
59 #include "components/sync/syncable/syncable_util.h"
60 #include "components/sync/syncable/syncable_write_transaction.h" 60 #include "components/sync/syncable/syncable_write_transaction.h"
61 #include "components/sync/syncable/test_user_share.h" 61 #include "components/sync/syncable/test_user_share.h"
62 #include "components/sync/syncable/write_node.h" 62 #include "components/sync/syncable/write_node.h"
63 #include "components/sync/syncable/write_transaction.h" 63 #include "components/sync/syncable/write_transaction.h"
64 #include "components/sync/test/callback_counter.h" 64 #include "components/sync/test/callback_counter.h"
65 #include "components/sync/test/engine/fake_model_worker.h" 65 #include "components/sync/test/engine/fake_model_worker.h"
66 #include "components/sync/test/engine/fake_sync_scheduler.h" 66 #include "components/sync/test/engine/fake_sync_scheduler.h"
67 #include "components/sync/test/engine/test_id_factory.h" 67 #include "components/sync/test/engine/test_id_factory.h"
68 #include "google_apis/gaia/gaia_constants.h" 68 #include "google_apis/gaia/gaia_constants.h"
69 #include "testing/gmock/include/gmock/gmock.h" 69 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, 803 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST,
804 user_share()->directory.get()); 804 user_share()->directory.get());
805 syncable::MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, 805 syncable::MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
806 syncable::Id::CreateFromServerId("foo1")); 806 syncable::Id::CreateFromServerId("foo1"));
807 DCHECK(entry.good()); 807 DCHECK(entry.good());
808 entry.PutServerVersion(10); 808 entry.PutServerVersion(10);
809 entry.PutIsUnappliedUpdate(true); 809 entry.PutIsUnappliedUpdate(true);
810 sync_pb::EntitySpecifics specifics; 810 sync_pb::EntitySpecifics specifics;
811 AddDefaultFieldValue(PREFERENCES, &specifics); 811 AddDefaultFieldValue(PREFERENCES, &specifics);
812 entry.PutServerSpecifics(specifics); 812 entry.PutServerSpecifics(specifics);
813 const std::string hash = syncable::GenerateSyncableHash(PREFERENCES, "foo"); 813 const std::string hash = GenerateSyncableHash(PREFERENCES, "foo");
814 entry.PutUniqueClientTag(hash); 814 entry.PutUniqueClientTag(hash);
815 item1 = entry.GetMetahandle(); 815 item1 = entry.GetMetahandle();
816 } 816 }
817 817
818 // Verify that the server-only item is invisible as a child of 818 // Verify that the server-only item is invisible as a child of
819 // of |preferences_root| because at this point it should have the 819 // of |preferences_root| because at this point it should have the
820 // "deleted" flag set. 820 // "deleted" flag set.
821 EXPECT_EQ(1, GetTotalNodeCount(user_share(), preferences_root)); 821 EXPECT_EQ(1, GetTotalNodeCount(user_share(), preferences_root));
822 822
823 // Create a client node with the same tag as the node above. 823 // Create a client node with the same tag as the node above.
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 PumpLoop(); 1141 PumpLoop();
1142 } 1142 }
1143 1143
1144 // Looks up an entry by client tag and resets IS_UNSYNCED value to false. 1144 // Looks up an entry by client tag and resets IS_UNSYNCED value to false.
1145 // Returns true if entry was previously unsynced, false if IS_UNSYNCED was 1145 // Returns true if entry was previously unsynced, false if IS_UNSYNCED was
1146 // already false. 1146 // already false.
1147 bool ResetUnsyncedEntry(ModelType type, const std::string& client_tag) { 1147 bool ResetUnsyncedEntry(ModelType type, const std::string& client_tag) {
1148 UserShare* share = sync_manager_.GetUserShare(); 1148 UserShare* share = sync_manager_.GetUserShare();
1149 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, 1149 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST,
1150 share->directory.get()); 1150 share->directory.get());
1151 const std::string hash = syncable::GenerateSyncableHash(type, client_tag); 1151 const std::string hash = GenerateSyncableHash(type, client_tag);
1152 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG, hash); 1152 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG, hash);
1153 EXPECT_TRUE(entry.good()); 1153 EXPECT_TRUE(entry.good());
1154 if (!entry.GetIsUnsynced()) 1154 if (!entry.GetIsUnsynced())
1155 return false; 1155 return false;
1156 entry.PutIsUnsynced(false); 1156 entry.PutIsUnsynced(false);
1157 return true; 1157 return true;
1158 } 1158 }
1159 1159
1160 virtual EngineComponentsFactory* GetFactory() { 1160 virtual EngineComponentsFactory* GetFactory() {
1161 return new TestEngineComponentsFactory( 1161 return new TestEngineComponentsFactory(
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
1880 } 1880 }
1881 1881
1882 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary 1882 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary
1883 // changes. 1883 // changes.
1884 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { 1884 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
1885 std::string client_tag = "title"; 1885 std::string client_tag = "title";
1886 sync_pb::EntitySpecifics entity_specifics; 1886 sync_pb::EntitySpecifics entity_specifics;
1887 entity_specifics.mutable_bookmark()->set_url("url"); 1887 entity_specifics.mutable_bookmark()->set_url("url");
1888 entity_specifics.mutable_bookmark()->set_title("title"); 1888 entity_specifics.mutable_bookmark()->set_title("title");
1889 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 1889 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
1890 syncable::GenerateSyncableHash(BOOKMARKS, client_tag), 1890 GenerateSyncableHash(BOOKMARKS, client_tag), entity_specifics);
1891 entity_specifics);
1892 // New node shouldn't start off unsynced. 1891 // New node shouldn't start off unsynced.
1893 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 1892 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
1894 // Manually change to the same data. Should not set is_unsynced. 1893 // Manually change to the same data. Should not set is_unsynced.
1895 { 1894 {
1896 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1895 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1897 WriteNode node(&trans); 1896 WriteNode node(&trans);
1898 EXPECT_EQ(BaseNode::INIT_OK, 1897 EXPECT_EQ(BaseNode::INIT_OK,
1899 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 1898 node.InitByClientTagLookup(BOOKMARKS, client_tag));
1900 node.SetEntitySpecifics(entity_specifics); 1899 node.SetEntitySpecifics(entity_specifics);
1901 } 1900 }
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 sync_pb::EntitySpecifics entity_specifics; 2019 sync_pb::EntitySpecifics entity_specifics;
2021 { 2020 {
2022 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2021 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2023 Cryptographer* cryptographer = trans.GetCryptographer(); 2022 Cryptographer* cryptographer = trans.GetCryptographer();
2024 sync_pb::PasswordSpecificsData data; 2023 sync_pb::PasswordSpecificsData data;
2025 data.set_password_value("secret"); 2024 data.set_password_value("secret");
2026 cryptographer->Encrypt( 2025 cryptographer->Encrypt(
2027 data, entity_specifics.mutable_password()->mutable_encrypted()); 2026 data, entity_specifics.mutable_password()->mutable_encrypted());
2028 } 2027 }
2029 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2028 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2030 syncable::GenerateSyncableHash(PASSWORDS, client_tag), 2029 GenerateSyncableHash(PASSWORDS, client_tag), entity_specifics);
2031 entity_specifics);
2032 // New node shouldn't start off unsynced. 2030 // New node shouldn't start off unsynced.
2033 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2031 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2034 2032
2035 // Manually change to the same data via SetEntitySpecifics. Should not set 2033 // Manually change to the same data via SetEntitySpecifics. Should not set
2036 // is_unsynced. 2034 // is_unsynced.
2037 { 2035 {
2038 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2036 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2039 WriteNode node(&trans); 2037 WriteNode node(&trans);
2040 EXPECT_EQ(BaseNode::INIT_OK, 2038 EXPECT_EQ(BaseNode::INIT_OK,
2041 node.InitByClientTagLookup(PASSWORDS, client_tag)); 2039 node.InitByClientTagLookup(PASSWORDS, client_tag));
(...skipping 10 matching lines...) Expand all
2052 sync_pb::EntitySpecifics entity_specifics; 2050 sync_pb::EntitySpecifics entity_specifics;
2053 { 2051 {
2054 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2052 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2055 Cryptographer* cryptographer = trans.GetCryptographer(); 2053 Cryptographer* cryptographer = trans.GetCryptographer();
2056 sync_pb::PasswordSpecificsData data; 2054 sync_pb::PasswordSpecificsData data;
2057 data.set_password_value("secret"); 2055 data.set_password_value("secret");
2058 cryptographer->Encrypt( 2056 cryptographer->Encrypt(
2059 data, entity_specifics.mutable_password()->mutable_encrypted()); 2057 data, entity_specifics.mutable_password()->mutable_encrypted());
2060 } 2058 }
2061 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2059 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2062 syncable::GenerateSyncableHash(PASSWORDS, client_tag), 2060 GenerateSyncableHash(PASSWORDS, client_tag), entity_specifics);
2063 entity_specifics);
2064 // New node shouldn't start off unsynced. 2061 // New node shouldn't start off unsynced.
2065 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2062 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2066 2063
2067 // Manually change to the same data via SetPasswordSpecifics. Should not set 2064 // Manually change to the same data via SetPasswordSpecifics. Should not set
2068 // is_unsynced. 2065 // is_unsynced.
2069 { 2066 {
2070 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2067 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2071 WriteNode node(&trans); 2068 WriteNode node(&trans);
2072 EXPECT_EQ(BaseNode::INIT_OK, 2069 EXPECT_EQ(BaseNode::INIT_OK,
2073 node.InitByClientTagLookup(PASSWORDS, client_tag)); 2070 node.InitByClientTagLookup(PASSWORDS, client_tag));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2106 sync_pb::PasswordSpecificsData data; 2103 sync_pb::PasswordSpecificsData data;
2107 data.set_password_value(kPasswordValue); 2104 data.set_password_value(kPasswordValue);
2108 entity_specifics.mutable_password() 2105 entity_specifics.mutable_password()
2109 ->mutable_unencrypted_metadata() 2106 ->mutable_unencrypted_metadata()
2110 ->set_url(kUrl); 2107 ->set_url(kUrl);
2111 cryptographer->Encrypt( 2108 cryptographer->Encrypt(
2112 data, entity_specifics.mutable_password()->mutable_encrypted()); 2109 data, entity_specifics.mutable_password()->mutable_encrypted());
2113 } 2110 }
2114 EXPECT_TRUE(entity_specifics.password().has_unencrypted_metadata()); 2111 EXPECT_TRUE(entity_specifics.password().has_unencrypted_metadata());
2115 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag, 2112 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2116 syncable::GenerateSyncableHash(PASSWORDS, kClientTag), 2113 GenerateSyncableHash(PASSWORDS, kClientTag), entity_specifics);
2117 entity_specifics);
2118 // New node shouldn't start off unsynced. 2114 // New node shouldn't start off unsynced.
2119 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag)); 2115 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2120 2116
2121 // Set a new passphrase. Should set is_unsynced. 2117 // Set a new passphrase. Should set is_unsynced.
2122 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2118 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2123 EXPECT_CALL(encryption_observer_, 2119 EXPECT_CALL(encryption_observer_,
2124 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); 2120 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN));
2125 ExpectPassphraseAcceptance(); 2121 ExpectPassphraseAcceptance();
2126 SetCustomPassphraseAndCheck("new_passphrase"); 2122 SetCustomPassphraseAndCheck("new_passphrase");
2127 { 2123 {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 sync_pb::EntitySpecifics entity_specifics; 2177 sync_pb::EntitySpecifics entity_specifics;
2182 { 2178 {
2183 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2179 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2184 Cryptographer* cryptographer = trans.GetCryptographer(); 2180 Cryptographer* cryptographer = trans.GetCryptographer();
2185 sync_pb::PasswordSpecificsData data; 2181 sync_pb::PasswordSpecificsData data;
2186 data.set_password_value("secret"); 2182 data.set_password_value("secret");
2187 cryptographer->Encrypt( 2183 cryptographer->Encrypt(
2188 data, entity_specifics.mutable_password()->mutable_encrypted()); 2184 data, entity_specifics.mutable_password()->mutable_encrypted());
2189 } 2185 }
2190 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag, 2186 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2191 syncable::GenerateSyncableHash(PASSWORDS, kClientTag), 2187 GenerateSyncableHash(PASSWORDS, kClientTag), entity_specifics);
2192 entity_specifics);
2193 // New node shouldn't start off unsynced. 2188 // New node shouldn't start off unsynced.
2194 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag)); 2189 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2195 2190
2196 // Force a re-encrypt everything. Should not set is_unsynced. 2191 // Force a re-encrypt everything. Should not set is_unsynced.
2197 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2192 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2198 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2193 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2199 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2194 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2200 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 2195 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2201 sync_manager_.GetEncryptionHandler()->Init(); 2196 sync_manager_.GetEncryptionHandler()->Init();
2202 PumpLoop(); 2197 PumpLoop();
(...skipping 14 matching lines...) Expand all
2217 { 2212 {
2218 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2213 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2219 Cryptographer* cryptographer = trans.GetCryptographer(); 2214 Cryptographer* cryptographer = trans.GetCryptographer();
2220 sync_pb::PasswordSpecificsData data; 2215 sync_pb::PasswordSpecificsData data;
2221 data.set_password_value("secret"); 2216 data.set_password_value("secret");
2222 data.set_signon_realm(kUrl); 2217 data.set_signon_realm(kUrl);
2223 cryptographer->Encrypt( 2218 cryptographer->Encrypt(
2224 data, entity_specifics.mutable_password()->mutable_encrypted()); 2219 data, entity_specifics.mutable_password()->mutable_encrypted());
2225 } 2220 }
2226 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag, 2221 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2227 syncable::GenerateSyncableHash(PASSWORDS, kClientTag), 2222 GenerateSyncableHash(PASSWORDS, kClientTag), entity_specifics);
2228 entity_specifics);
2229 // New node shouldn't start off unsynced. 2223 // New node shouldn't start off unsynced.
2230 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag)); 2224 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2231 2225
2232 // Force a re-encrypt everything. Should set is_unsynced. 2226 // Force a re-encrypt everything. Should set is_unsynced.
2233 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2227 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2234 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2228 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2235 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2229 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2236 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 2230 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2237 sync_manager_.GetEncryptionHandler()->Init(); 2231 sync_manager_.GetEncryptionHandler()->Init();
2238 PumpLoop(); 2232 PumpLoop();
(...skipping 30 matching lines...) Expand all
2269 Cryptographer* cryptographer = trans.GetCryptographer(); 2263 Cryptographer* cryptographer = trans.GetCryptographer();
2270 sync_pb::PasswordSpecificsData data; 2264 sync_pb::PasswordSpecificsData data;
2271 data.set_password_value("secret"); 2265 data.set_password_value("secret");
2272 data.set_signon_realm(kUrl); 2266 data.set_signon_realm(kUrl);
2273 cryptographer->Encrypt( 2267 cryptographer->Encrypt(
2274 data, entity_specifics.mutable_password()->mutable_encrypted()); 2268 data, entity_specifics.mutable_password()->mutable_encrypted());
2275 } 2269 }
2276 entity_specifics.mutable_password()->mutable_unencrypted_metadata()->set_url( 2270 entity_specifics.mutable_password()->mutable_unencrypted_metadata()->set_url(
2277 kUrl); 2271 kUrl);
2278 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag, 2272 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2279 syncable::GenerateSyncableHash(PASSWORDS, kClientTag), 2273 GenerateSyncableHash(PASSWORDS, kClientTag), entity_specifics);
2280 entity_specifics);
2281 // New node shouldn't start off unsynced. 2274 // New node shouldn't start off unsynced.
2282 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag)); 2275 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2283 2276
2284 // Force a re-encrypt everything. Should not set is_unsynced. 2277 // Force a re-encrypt everything. Should not set is_unsynced.
2285 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2278 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2286 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2279 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2287 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2280 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2288 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 2281 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2289 sync_manager_.GetEncryptionHandler()->Init(); 2282 sync_manager_.GetEncryptionHandler()->Init();
2290 PumpLoop(); 2283 PumpLoop();
(...skipping 17 matching lines...) Expand all
2308 sync_pb::PasswordSpecificsData data; 2301 sync_pb::PasswordSpecificsData data;
2309 data.set_password_value("secret"); 2302 data.set_password_value("secret");
2310 other_cryptographer.Encrypt( 2303 other_cryptographer.Encrypt(
2311 data, entity_specifics.mutable_password()->mutable_encrypted()); 2304 data, entity_specifics.mutable_password()->mutable_encrypted());
2312 2305
2313 // Set up the real cryptographer with a different key. 2306 // Set up the real cryptographer with a different key.
2314 KeyParams real_params = {"localhost", "username", "real_key"}; 2307 KeyParams real_params = {"localhost", "username", "real_key"};
2315 trans.GetCryptographer()->AddKey(real_params); 2308 trans.GetCryptographer()->AddKey(real_params);
2316 } 2309 }
2317 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag, 2310 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2318 syncable::GenerateSyncableHash(PASSWORDS, kClientTag), 2311 GenerateSyncableHash(PASSWORDS, kClientTag), entity_specifics);
2319 entity_specifics);
2320 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag)); 2312 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2321 2313
2322 // Force a re-encrypt everything. Should trigger an unrecoverable error due 2314 // Force a re-encrypt everything. Should trigger an unrecoverable error due
2323 // to being unable to decrypt the data that was previously applied. 2315 // to being unable to decrypt the data that was previously applied.
2324 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2316 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2325 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2317 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2326 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2318 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2327 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 2319 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2328 EXPECT_FALSE(HasUnrecoverableError()); 2320 EXPECT_FALSE(HasUnrecoverableError());
2329 sync_manager_.GetEncryptionHandler()->Init(); 2321 sync_manager_.GetEncryptionHandler()->Init();
(...skipping 22 matching lines...) Expand all
2352 bm_specifics.mutable_bookmark()->set_url("url"); 2344 bm_specifics.mutable_bookmark()->set_url("url");
2353 sync_pb::EncryptedData encrypted; 2345 sync_pb::EncryptedData encrypted;
2354 other_cryptographer.Encrypt(bm_specifics, &encrypted); 2346 other_cryptographer.Encrypt(bm_specifics, &encrypted);
2355 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); 2347 entity_specifics.mutable_encrypted()->CopyFrom(encrypted);
2356 2348
2357 // Set up the real cryptographer with a different key. 2349 // Set up the real cryptographer with a different key.
2358 KeyParams real_params = {"localhost", "username", "real_key"}; 2350 KeyParams real_params = {"localhost", "username", "real_key"};
2359 trans.GetCryptographer()->AddKey(real_params); 2351 trans.GetCryptographer()->AddKey(real_params);
2360 } 2352 }
2361 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, kClientTag, 2353 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, kClientTag,
2362 syncable::GenerateSyncableHash(BOOKMARKS, kClientTag), 2354 GenerateSyncableHash(BOOKMARKS, kClientTag), entity_specifics);
2363 entity_specifics);
2364 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, kClientTag)); 2355 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, kClientTag));
2365 2356
2366 // Force a re-encrypt everything. Should trigger an unrecoverable error due 2357 // Force a re-encrypt everything. Should trigger an unrecoverable error due
2367 // to being unable to decrypt the data that was previously applied. 2358 // to being unable to decrypt the data that was previously applied.
2368 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2359 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2369 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2360 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2370 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2361 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2371 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); 2362 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2372 EXPECT_FALSE(HasUnrecoverableError()); 2363 EXPECT_FALSE(HasUnrecoverableError());
2373 sync_manager_.GetEncryptionHandler()->Init(); 2364 sync_manager_.GetEncryptionHandler()->Init();
2374 PumpLoop(); 2365 PumpLoop();
2375 EXPECT_TRUE(HasUnrecoverableError()); 2366 EXPECT_TRUE(HasUnrecoverableError());
2376 } 2367 }
2377 2368
2378 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2369 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks
2379 // when we write the same data, but does set it when we write new data. 2370 // when we write the same data, but does set it when we write new data.
2380 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2371 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2381 std::string client_tag = "title"; 2372 std::string client_tag = "title";
2382 sync_pb::EntitySpecifics entity_specifics; 2373 sync_pb::EntitySpecifics entity_specifics;
2383 entity_specifics.mutable_bookmark()->set_url("url"); 2374 entity_specifics.mutable_bookmark()->set_url("url");
2384 entity_specifics.mutable_bookmark()->set_title("title"); 2375 entity_specifics.mutable_bookmark()->set_title("title");
2385 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2376 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2386 syncable::GenerateSyncableHash(BOOKMARKS, client_tag), 2377 GenerateSyncableHash(BOOKMARKS, client_tag), entity_specifics);
2387 entity_specifics);
2388 // New node shouldn't start off unsynced. 2378 // New node shouldn't start off unsynced.
2389 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2379 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2390 2380
2391 // Manually change to the same title. Should not set is_unsynced. 2381 // Manually change to the same title. Should not set is_unsynced.
2392 { 2382 {
2393 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2383 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2394 WriteNode node(&trans); 2384 WriteNode node(&trans);
2395 EXPECT_EQ(BaseNode::INIT_OK, 2385 EXPECT_EQ(BaseNode::INIT_OK,
2396 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2386 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2397 node.SetTitle(client_tag); 2387 node.SetTitle(client_tag);
(...skipping 13 matching lines...) Expand all
2411 2401
2412 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted 2402 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted
2413 // bookmarks when we write the same data, but does set it when we write new 2403 // bookmarks when we write the same data, but does set it when we write new
2414 // data. 2404 // data.
2415 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { 2405 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) {
2416 std::string client_tag = "title"; 2406 std::string client_tag = "title";
2417 sync_pb::EntitySpecifics entity_specifics; 2407 sync_pb::EntitySpecifics entity_specifics;
2418 entity_specifics.mutable_bookmark()->set_url("url"); 2408 entity_specifics.mutable_bookmark()->set_url("url");
2419 entity_specifics.mutable_bookmark()->set_title("title"); 2409 entity_specifics.mutable_bookmark()->set_title("title");
2420 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2410 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2421 syncable::GenerateSyncableHash(BOOKMARKS, client_tag), 2411 GenerateSyncableHash(BOOKMARKS, client_tag), entity_specifics);
2422 entity_specifics);
2423 // New node shouldn't start off unsynced. 2412 // New node shouldn't start off unsynced.
2424 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2413 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2425 2414
2426 // Encrypt the datatatype, should set is_unsynced. 2415 // Encrypt the datatatype, should set is_unsynced.
2427 EXPECT_CALL( 2416 EXPECT_CALL(
2428 encryption_observer_, 2417 encryption_observer_,
2429 OnEncryptedTypesChanged(HasModelTypes(EncryptableUserTypes()), true)); 2418 OnEncryptedTypesChanged(HasModelTypes(EncryptableUserTypes()), true));
2430 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2419 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2431 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2420 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2432 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2421 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2467 } 2456 }
2468 2457
2469 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks 2458 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks
2470 // when we write the same data, but does set it when we write new data. 2459 // when we write the same data, but does set it when we write new data.
2471 TEST_F(SyncManagerTest, SetNonBookmarkTitle) { 2460 TEST_F(SyncManagerTest, SetNonBookmarkTitle) {
2472 std::string client_tag = "title"; 2461 std::string client_tag = "title";
2473 sync_pb::EntitySpecifics entity_specifics; 2462 sync_pb::EntitySpecifics entity_specifics;
2474 entity_specifics.mutable_preference()->set_name("name"); 2463 entity_specifics.mutable_preference()->set_name("name");
2475 entity_specifics.mutable_preference()->set_value("value"); 2464 entity_specifics.mutable_preference()->set_value("value");
2476 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, client_tag, 2465 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, client_tag,
2477 syncable::GenerateSyncableHash(PREFERENCES, client_tag), 2466 GenerateSyncableHash(PREFERENCES, client_tag),
2478 entity_specifics); 2467 entity_specifics);
2479 // New node shouldn't start off unsynced. 2468 // New node shouldn't start off unsynced.
2480 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2469 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2481 2470
2482 // Manually change to the same title. Should not set is_unsynced. 2471 // Manually change to the same title. Should not set is_unsynced.
2483 { 2472 {
2484 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2473 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2485 WriteNode node(&trans); 2474 WriteNode node(&trans);
2486 EXPECT_EQ(BaseNode::INIT_OK, 2475 EXPECT_EQ(BaseNode::INIT_OK,
2487 node.InitByClientTagLookup(PREFERENCES, client_tag)); 2476 node.InitByClientTagLookup(PREFERENCES, client_tag));
(...skipping 14 matching lines...) Expand all
2502 2491
2503 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted 2492 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted
2504 // non-bookmarks when we write the same data or when we write new data 2493 // non-bookmarks when we write the same data or when we write new data
2505 // data (should remained kEncryptedString). 2494 // data (should remained kEncryptedString).
2506 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { 2495 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) {
2507 std::string client_tag = "title"; 2496 std::string client_tag = "title";
2508 sync_pb::EntitySpecifics entity_specifics; 2497 sync_pb::EntitySpecifics entity_specifics;
2509 entity_specifics.mutable_preference()->set_name("name"); 2498 entity_specifics.mutable_preference()->set_name("name");
2510 entity_specifics.mutable_preference()->set_value("value"); 2499 entity_specifics.mutable_preference()->set_value("value");
2511 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, client_tag, 2500 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, client_tag,
2512 syncable::GenerateSyncableHash(PREFERENCES, client_tag), 2501 GenerateSyncableHash(PREFERENCES, client_tag),
2513 entity_specifics); 2502 entity_specifics);
2514 // New node shouldn't start off unsynced. 2503 // New node shouldn't start off unsynced.
2515 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2504 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2516 2505
2517 // Encrypt the datatatype, should set is_unsynced. 2506 // Encrypt the datatatype, should set is_unsynced.
2518 EXPECT_CALL( 2507 EXPECT_CALL(
2519 encryption_observer_, 2508 encryption_observer_,
2520 OnEncryptedTypesChanged(HasModelTypes(EncryptableUserTypes()), true)); 2509 OnEncryptedTypesChanged(HasModelTypes(EncryptableUserTypes()), true));
2521 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2510 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2522 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2511 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2560 // Ensure that titles are truncated to 255 bytes, and attempting to reset 2549 // Ensure that titles are truncated to 255 bytes, and attempting to reset
2561 // them to their longer version does not set IS_UNSYNCED. 2550 // them to their longer version does not set IS_UNSYNCED.
2562 TEST_F(SyncManagerTest, SetLongTitle) { 2551 TEST_F(SyncManagerTest, SetLongTitle) {
2563 const int kNumChars = 512; 2552 const int kNumChars = 512;
2564 const std::string kClientTag = "tag"; 2553 const std::string kClientTag = "tag";
2565 std::string title(kNumChars, '0'); 2554 std::string title(kNumChars, '0');
2566 sync_pb::EntitySpecifics entity_specifics; 2555 sync_pb::EntitySpecifics entity_specifics;
2567 entity_specifics.mutable_preference()->set_name("name"); 2556 entity_specifics.mutable_preference()->set_name("name");
2568 entity_specifics.mutable_preference()->set_value("value"); 2557 entity_specifics.mutable_preference()->set_value("value");
2569 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, "short_title", 2558 MakeServerNode(sync_manager_.GetUserShare(), PREFERENCES, "short_title",
2570 syncable::GenerateSyncableHash(PREFERENCES, kClientTag), 2559 GenerateSyncableHash(PREFERENCES, kClientTag),
2571 entity_specifics); 2560 entity_specifics);
2572 // New node shouldn't start off unsynced. 2561 // New node shouldn't start off unsynced.
2573 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, kClientTag)); 2562 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, kClientTag));
2574 2563
2575 // Manually change to the long title. Should set is_unsynced. 2564 // Manually change to the long title. Should set is_unsynced.
2576 { 2565 {
2577 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2566 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2578 WriteNode node(&trans); 2567 WriteNode node(&trans);
2579 EXPECT_EQ(BaseNode::INIT_OK, 2568 EXPECT_EQ(BaseNode::INIT_OK,
2580 node.InitByClientTagLookup(PREFERENCES, kClientTag)); 2569 node.InitByClientTagLookup(PREFERENCES, kClientTag));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2620 Cryptographer* crypto = trans.GetCryptographer(); 2609 Cryptographer* crypto = trans.GetCryptographer();
2621 sync_pb::EntitySpecifics bm_specifics; 2610 sync_pb::EntitySpecifics bm_specifics;
2622 bm_specifics.mutable_bookmark()->set_title("title"); 2611 bm_specifics.mutable_bookmark()->set_title("title");
2623 bm_specifics.mutable_bookmark()->set_url("url"); 2612 bm_specifics.mutable_bookmark()->set_url("url");
2624 sync_pb::EncryptedData encrypted; 2613 sync_pb::EncryptedData encrypted;
2625 crypto->Encrypt(bm_specifics, &encrypted); 2614 crypto->Encrypt(bm_specifics, &encrypted);
2626 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); 2615 entity_specifics.mutable_encrypted()->CopyFrom(encrypted);
2627 AddDefaultFieldValue(BOOKMARKS, &entity_specifics); 2616 AddDefaultFieldValue(BOOKMARKS, &entity_specifics);
2628 } 2617 }
2629 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2618 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2630 syncable::GenerateSyncableHash(BOOKMARKS, client_tag), 2619 GenerateSyncableHash(BOOKMARKS, client_tag), entity_specifics);
2631 entity_specifics);
2632 2620
2633 { 2621 {
2634 // Verify the data. 2622 // Verify the data.
2635 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2623 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2636 ReadNode node(&trans); 2624 ReadNode node(&trans);
2637 EXPECT_EQ(BaseNode::INIT_OK, 2625 EXPECT_EQ(BaseNode::INIT_OK,
2638 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2626 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2639 EXPECT_EQ(title, node.GetTitle()); 2627 EXPECT_EQ(title, node.GetTitle());
2640 EXPECT_EQ(url, node.GetBookmarkSpecifics().url()); 2628 EXPECT_EQ(url, node.GetBookmarkSpecifics().url());
2641 } 2629 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2684 i->first)); 2672 i->first));
2685 } 2673 }
2686 } 2674 }
2687 2675
2688 // Create bookmark node to increment transaction version of bookmark model. 2676 // Create bookmark node to increment transaction version of bookmark model.
2689 std::string client_tag = "title"; 2677 std::string client_tag = "title";
2690 sync_pb::EntitySpecifics entity_specifics; 2678 sync_pb::EntitySpecifics entity_specifics;
2691 entity_specifics.mutable_bookmark()->set_url("url"); 2679 entity_specifics.mutable_bookmark()->set_url("url");
2692 entity_specifics.mutable_bookmark()->set_title("title"); 2680 entity_specifics.mutable_bookmark()->set_title("title");
2693 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2681 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2694 syncable::GenerateSyncableHash(BOOKMARKS, client_tag), 2682 GenerateSyncableHash(BOOKMARKS, client_tag), entity_specifics);
2695 entity_specifics);
2696 2683
2697 { 2684 {
2698 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare()); 2685 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare());
2699 for (ModelSafeRoutingInfo::iterator i = routing_info.begin(); 2686 for (ModelSafeRoutingInfo::iterator i = routing_info.begin();
2700 i != routing_info.end(); ++i) { 2687 i != routing_info.end(); ++i) {
2701 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1, 2688 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1,
2702 sync_manager_.GetUserShare()->directory->GetTransactionVersion( 2689 sync_manager_.GetUserShare()->directory->GetTransactionVersion(
2703 i->first)); 2690 i->first));
2704 } 2691 }
2705 } 2692 }
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
3523 // SyncManagerInitInvalidStorageTest::GetFactory will return 3510 // SyncManagerInitInvalidStorageTest::GetFactory will return
3524 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails. 3511 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails.
3525 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's 3512 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's
3526 // task is to ensure that SyncManagerImpl reported initialization failure in 3513 // task is to ensure that SyncManagerImpl reported initialization failure in
3527 // OnInitializationComplete callback. 3514 // OnInitializationComplete callback.
3528 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) { 3515 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) {
3529 EXPECT_FALSE(initialization_succeeded_); 3516 EXPECT_FALSE(initialization_succeeded_);
3530 } 3517 }
3531 3518
3532 } // namespace syncer 3519 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/engine_impl/model_type_worker_unittest.cc ('k') | components/sync/engine_impl/syncer_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698