| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 28 matching lines...) Expand all Loading... |
| 39 #include "chrome/browser/sync/js/js_test_util.h" | 39 #include "chrome/browser/sync/js/js_test_util.h" |
| 40 #include "chrome/browser/sync/notifier/sync_notifier.h" | 40 #include "chrome/browser/sync/notifier/sync_notifier.h" |
| 41 #include "chrome/browser/sync/notifier/sync_notifier_observer.h" | 41 #include "chrome/browser/sync/notifier/sync_notifier_observer.h" |
| 42 #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h" | 42 #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h" |
| 43 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" | 43 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
| 44 #include "chrome/browser/sync/protocol/password_specifics.pb.h" | 44 #include "chrome/browser/sync/protocol/password_specifics.pb.h" |
| 45 #include "chrome/browser/sync/protocol/proto_value_conversions.h" | 45 #include "chrome/browser/sync/protocol/proto_value_conversions.h" |
| 46 #include "chrome/browser/sync/protocol/sync.pb.h" | 46 #include "chrome/browser/sync/protocol/sync.pb.h" |
| 47 #include "chrome/browser/sync/sessions/sync_session.h" | 47 #include "chrome/browser/sync/sessions/sync_session.h" |
| 48 #include "chrome/browser/sync/syncable/directory_manager.h" | 48 #include "chrome/browser/sync/syncable/directory_manager.h" |
| 49 #include "chrome/browser/sync/syncable/model_type_test_util.h" |
| 49 #include "chrome/browser/sync/syncable/syncable.h" | 50 #include "chrome/browser/sync/syncable/syncable.h" |
| 50 #include "chrome/browser/sync/syncable/syncable_id.h" | 51 #include "chrome/browser/sync/syncable/syncable_id.h" |
| 51 #include "chrome/browser/sync/test/engine/test_user_share.h" | 52 #include "chrome/browser/sync/test/engine/test_user_share.h" |
| 52 #include "chrome/browser/sync/util/cryptographer.h" | 53 #include "chrome/browser/sync/util/cryptographer.h" |
| 53 #include "chrome/browser/sync/util/time.h" | 54 #include "chrome/browser/sync/util/time.h" |
| 54 #include "chrome/test/base/values_test_util.h" | 55 #include "chrome/test/base/values_test_util.h" |
| 55 #include "content/test/test_browser_thread.h" | 56 #include "content/test/test_browser_thread.h" |
| 56 #include "testing/gmock/include/gmock/gmock.h" | 57 #include "testing/gmock/include/gmock/gmock.h" |
| 57 #include "testing/gtest/include/gtest/gtest.h" | 58 #include "testing/gtest/include/gtest/gtest.h" |
| 58 | 59 |
| 59 using browser_sync::Cryptographer; | 60 using browser_sync::Cryptographer; |
| 60 using browser_sync::HasArgsAsList; | 61 using browser_sync::HasArgsAsList; |
| 61 using browser_sync::HasDetailsAsDictionary; | 62 using browser_sync::HasDetailsAsDictionary; |
| 62 using browser_sync::KeyParams; | 63 using browser_sync::KeyParams; |
| 63 using browser_sync::JsArgList; | 64 using browser_sync::JsArgList; |
| 64 using browser_sync::JsBackend; | 65 using browser_sync::JsBackend; |
| 65 using browser_sync::JsEventHandler; | 66 using browser_sync::JsEventHandler; |
| 66 using browser_sync::JsReplyHandler; | 67 using browser_sync::JsReplyHandler; |
| 67 using browser_sync::MockJsEventHandler; | 68 using browser_sync::MockJsEventHandler; |
| 68 using browser_sync::MockJsReplyHandler; | 69 using browser_sync::MockJsReplyHandler; |
| 69 using browser_sync::ModelSafeRoutingInfo; | 70 using browser_sync::ModelSafeRoutingInfo; |
| 70 using browser_sync::ModelSafeWorker; | 71 using browser_sync::ModelSafeWorker; |
| 71 using browser_sync::ModelSafeWorkerRegistrar; | 72 using browser_sync::ModelSafeWorkerRegistrar; |
| 72 using browser_sync::sessions::SyncSessionSnapshot; | 73 using browser_sync::sessions::SyncSessionSnapshot; |
| 73 using browser_sync::WeakHandle; | 74 using browser_sync::WeakHandle; |
| 74 using content::BrowserThread; | 75 using content::BrowserThread; |
| 75 using syncable::GetAllRealModelTypes; | |
| 76 using syncable::kEncryptedString; | 76 using syncable::kEncryptedString; |
| 77 using syncable::ModelEnumSet; |
| 77 using syncable::ModelType; | 78 using syncable::ModelType; |
| 78 using syncable::ModelTypeSet; | |
| 79 using test::ExpectDictStringValue; | 79 using test::ExpectDictStringValue; |
| 80 using testing::_; | 80 using testing::_; |
| 81 using testing::AnyNumber; | 81 using testing::AnyNumber; |
| 82 using testing::AtLeast; | 82 using testing::AtLeast; |
| 83 using testing::InSequence; | 83 using testing::InSequence; |
| 84 using testing::Invoke; | 84 using testing::Invoke; |
| 85 using testing::SaveArg; | 85 using testing::SaveArg; |
| 86 using testing::StrictMock; | 86 using testing::StrictMock; |
| 87 | 87 |
| 88 namespace sync_api { | 88 namespace sync_api { |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 void(const WeakHandle<JsBackend>&, bool)); // NOLINT | 625 void(const WeakHandle<JsBackend>&, bool)); // NOLINT |
| 626 MOCK_METHOD1(OnAuthError, void(const GoogleServiceAuthError&)); // NOLINT | 626 MOCK_METHOD1(OnAuthError, void(const GoogleServiceAuthError&)); // NOLINT |
| 627 MOCK_METHOD1(OnPassphraseRequired, | 627 MOCK_METHOD1(OnPassphraseRequired, |
| 628 void(sync_api::PassphraseRequiredReason)); // NOLINT | 628 void(sync_api::PassphraseRequiredReason)); // NOLINT |
| 629 MOCK_METHOD1(OnPassphraseAccepted, void(const std::string&)); // NOLINT | 629 MOCK_METHOD1(OnPassphraseAccepted, void(const std::string&)); // NOLINT |
| 630 MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT | 630 MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT |
| 631 MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT | 631 MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT |
| 632 MOCK_METHOD0(OnClearServerDataFailed, void()); // NOLINT | 632 MOCK_METHOD0(OnClearServerDataFailed, void()); // NOLINT |
| 633 MOCK_METHOD0(OnClearServerDataSucceeded, void()); // NOLINT | 633 MOCK_METHOD0(OnClearServerDataSucceeded, void()); // NOLINT |
| 634 MOCK_METHOD2(OnEncryptedTypesChanged, | 634 MOCK_METHOD2(OnEncryptedTypesChanged, |
| 635 void(const ModelTypeSet&, bool)); // NOLINT | 635 void(ModelEnumSet, bool)); // NOLINT |
| 636 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT | 636 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT |
| 637 MOCK_METHOD1(OnActionableError, | 637 MOCK_METHOD1(OnActionableError, |
| 638 void(const browser_sync::SyncProtocolError&)); // NOLINT | 638 void(const browser_sync::SyncProtocolError&)); // NOLINT |
| 639 }; | 639 }; |
| 640 | 640 |
| 641 class SyncNotifierMock : public sync_notifier::SyncNotifier { | 641 class SyncNotifierMock : public sync_notifier::SyncNotifier { |
| 642 public: | 642 public: |
| 643 MOCK_METHOD1(AddObserver, void(sync_notifier::SyncNotifierObserver*)); | 643 MOCK_METHOD1(AddObserver, void(sync_notifier::SyncNotifierObserver*)); |
| 644 MOCK_METHOD1(RemoveObserver, void(sync_notifier::SyncNotifierObserver*)); | 644 MOCK_METHOD1(RemoveObserver, void(sync_notifier::SyncNotifierObserver*)); |
| 645 MOCK_METHOD1(SetUniqueId, void(const std::string&)); | 645 MOCK_METHOD1(SetUniqueId, void(const std::string&)); |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 }; | 847 }; |
| 848 | 848 |
| 849 TEST_F(SyncManagerTest, UpdateEnabledTypes) { | 849 TEST_F(SyncManagerTest, UpdateEnabledTypes) { |
| 850 EXPECT_EQ(1, update_enabled_types_call_count_); | 850 EXPECT_EQ(1, update_enabled_types_call_count_); |
| 851 // Triggers SyncNotifierUpdateEnabledTypes. | 851 // Triggers SyncNotifierUpdateEnabledTypes. |
| 852 sync_manager_.UpdateEnabledTypes(); | 852 sync_manager_.UpdateEnabledTypes(); |
| 853 EXPECT_EQ(2, update_enabled_types_call_count_); | 853 EXPECT_EQ(2, update_enabled_types_call_count_); |
| 854 } | 854 } |
| 855 | 855 |
| 856 TEST_F(SyncManagerTest, DoNotSyncTabsInNigoriNode) { | 856 TEST_F(SyncManagerTest, DoNotSyncTabsInNigoriNode) { |
| 857 syncable::ModelEnumSet encrypted_types(syncable::TYPED_URLS); | 857 const syncable::ModelEnumSet encrypted_types(syncable::TYPED_URLS); |
| 858 sync_manager_.MaybeSetSyncTabsInNigoriNode(encrypted_types); | 858 sync_manager_.MaybeSetSyncTabsInNigoriNode(encrypted_types); |
| 859 | 859 |
| 860 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 860 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 861 ReadNode node(&trans); | 861 ReadNode node(&trans); |
| 862 ASSERT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); | 862 ASSERT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); |
| 863 EXPECT_FALSE(node.GetNigoriSpecifics().sync_tabs()); | 863 EXPECT_FALSE(node.GetNigoriSpecifics().sync_tabs()); |
| 864 } | 864 } |
| 865 | 865 |
| 866 TEST_F(SyncManagerTest, SyncTabsInNigoriNode) { | 866 TEST_F(SyncManagerTest, SyncTabsInNigoriNode) { |
| 867 syncable::ModelEnumSet encrypted_types(syncable::SESSIONS); | 867 const syncable::ModelEnumSet encrypted_types(syncable::SESSIONS); |
| 868 sync_manager_.MaybeSetSyncTabsInNigoriNode(encrypted_types); | 868 sync_manager_.MaybeSetSyncTabsInNigoriNode(encrypted_types); |
| 869 | 869 |
| 870 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 870 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 871 ReadNode node(&trans); | 871 ReadNode node(&trans); |
| 872 ASSERT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); | 872 ASSERT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); |
| 873 EXPECT_TRUE(node.GetNigoriSpecifics().sync_tabs()); | 873 EXPECT_TRUE(node.GetNigoriSpecifics().sync_tabs()); |
| 874 } | 874 } |
| 875 | 875 |
| 876 TEST_F(SyncManagerTest, ProcessJsMessage) { | 876 TEST_F(SyncManagerTest, ProcessJsMessage) { |
| 877 const JsArgList kNoArgs; | 877 const JsArgList kNoArgs; |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 sync_manager_.TriggerOnNotificationStateChangeForTest(false); | 1152 sync_manager_.TriggerOnNotificationStateChangeForTest(false); |
| 1153 | 1153 |
| 1154 // Should trigger the replies. | 1154 // Should trigger the replies. |
| 1155 PumpLoop(); | 1155 PumpLoop(); |
| 1156 } | 1156 } |
| 1157 | 1157 |
| 1158 TEST_F(SyncManagerTest, OnIncomingNotification) { | 1158 TEST_F(SyncManagerTest, OnIncomingNotification) { |
| 1159 StrictMock<MockJsEventHandler> event_handler; | 1159 StrictMock<MockJsEventHandler> event_handler; |
| 1160 | 1160 |
| 1161 const syncable::ModelEnumSet empty_model_types; | 1161 const syncable::ModelEnumSet empty_model_types; |
| 1162 syncable::ModelEnumSet model_types(syncable::BOOKMARKS, syncable::THEMES); | 1162 const syncable::ModelEnumSet model_types( |
| 1163 syncable::BOOKMARKS, syncable::THEMES); |
| 1163 | 1164 |
| 1164 // Build expected_args to have a single argument with the string | 1165 // Build expected_args to have a single argument with the string |
| 1165 // equivalents of model_types. | 1166 // equivalents of model_types. |
| 1166 DictionaryValue expected_details; | 1167 DictionaryValue expected_details; |
| 1167 { | 1168 { |
| 1168 ListValue* model_type_list = new ListValue(); | 1169 ListValue* model_type_list = new ListValue(); |
| 1169 expected_details.Set("changedTypes", model_type_list); | 1170 expected_details.Set("changedTypes", model_type_list); |
| 1170 for (syncable::ModelEnumSet::Iterator it = model_types.First(); | 1171 for (syncable::ModelEnumSet::Iterator it = model_types.First(); |
| 1171 it.Good(); it.Inc()) { | 1172 it.Good(); it.Inc()) { |
| 1172 model_type_list->Append( | 1173 model_type_list->Append( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1190 sync_manager_.TriggerOnIncomingNotificationForTest(model_types); | 1191 sync_manager_.TriggerOnIncomingNotificationForTest(model_types); |
| 1191 | 1192 |
| 1192 // Should trigger the replies. | 1193 // Should trigger the replies. |
| 1193 PumpLoop(); | 1194 PumpLoop(); |
| 1194 } | 1195 } |
| 1195 | 1196 |
| 1196 TEST_F(SyncManagerTest, RefreshEncryptionReady) { | 1197 TEST_F(SyncManagerTest, RefreshEncryptionReady) { |
| 1197 EXPECT_TRUE(SetUpEncryption(true)); | 1198 EXPECT_TRUE(SetUpEncryption(true)); |
| 1198 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1199 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1199 sync_manager_.RefreshEncryption(); | 1200 sync_manager_.RefreshEncryption(); |
| 1200 syncable::ModelTypeSet encrypted_types = | 1201 const syncable::ModelEnumSet encrypted_types = |
| 1201 sync_manager_.GetEncryptedDataTypesForTest(); | 1202 sync_manager_.GetEncryptedDataTypesForTest(); |
| 1202 EXPECT_EQ(1U, encrypted_types.count(syncable::PASSWORDS)); | 1203 EXPECT_TRUE(encrypted_types.Has(syncable::PASSWORDS)); |
| 1203 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); | 1204 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1204 { | 1205 { |
| 1205 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1206 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1206 ReadNode node(&trans); | 1207 ReadNode node(&trans); |
| 1207 EXPECT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); | 1208 EXPECT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); |
| 1208 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); | 1209 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); |
| 1209 EXPECT_TRUE(nigori.has_encrypted()); | 1210 EXPECT_TRUE(nigori.has_encrypted()); |
| 1210 Cryptographer* cryptographer = trans.GetCryptographer(); | 1211 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1211 EXPECT_TRUE(cryptographer->is_ready()); | 1212 EXPECT_TRUE(cryptographer->is_ready()); |
| 1212 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); | 1213 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); |
| 1213 } | 1214 } |
| 1214 } | 1215 } |
| 1215 | 1216 |
| 1216 // Attempt to refresh encryption when nigori not downloaded. | 1217 // Attempt to refresh encryption when nigori not downloaded. |
| 1217 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { | 1218 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { |
| 1218 // Don't set up encryption (no nigori node created). | 1219 // Don't set up encryption (no nigori node created). |
| 1219 sync_manager_.RefreshEncryption(); // Should fail. | 1220 sync_manager_.RefreshEncryption(); // Should fail. |
| 1220 syncable::ModelTypeSet encrypted_types = | 1221 const syncable::ModelEnumSet encrypted_types = |
| 1221 sync_manager_.GetEncryptedDataTypesForTest(); | 1222 sync_manager_.GetEncryptedDataTypesForTest(); |
| 1222 EXPECT_EQ(1U, encrypted_types.count(syncable::PASSWORDS)); // Hardcoded. | 1223 EXPECT_TRUE(encrypted_types.Has(syncable::PASSWORDS)); // Hardcoded. |
| 1223 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); | 1224 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1224 } | 1225 } |
| 1225 | 1226 |
| 1226 // Attempt to refresh encryption when nigori is empty. | 1227 // Attempt to refresh encryption when nigori is empty. |
| 1227 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { | 1228 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { |
| 1228 EXPECT_TRUE(SetUpEncryption(false)); | 1229 EXPECT_TRUE(SetUpEncryption(false)); |
| 1229 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1230 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1230 sync_manager_.RefreshEncryption(); // Should write to nigori. | 1231 sync_manager_.RefreshEncryption(); // Should write to nigori. |
| 1231 syncable::ModelTypeSet encrypted_types = | 1232 const syncable::ModelEnumSet encrypted_types = |
| 1232 sync_manager_.GetEncryptedDataTypesForTest(); | 1233 sync_manager_.GetEncryptedDataTypesForTest(); |
| 1233 EXPECT_EQ(1U, encrypted_types.count(syncable::PASSWORDS)); // Hardcoded. | 1234 EXPECT_TRUE(encrypted_types.Has(syncable::PASSWORDS)); // Hardcoded. |
| 1234 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); | 1235 EXPECT_FALSE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1235 { | 1236 { |
| 1236 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1237 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1237 ReadNode node(&trans); | 1238 ReadNode node(&trans); |
| 1238 EXPECT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); | 1239 EXPECT_TRUE(node.InitByIdLookup(GetIdForDataType(syncable::NIGORI))); |
| 1239 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); | 1240 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); |
| 1240 EXPECT_TRUE(nigori.has_encrypted()); | 1241 EXPECT_TRUE(nigori.has_encrypted()); |
| 1241 Cryptographer* cryptographer = trans.GetCryptographer(); | 1242 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1242 EXPECT_TRUE(cryptographer->is_ready()); | 1243 EXPECT_TRUE(cryptographer->is_ready()); |
| 1243 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); | 1244 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); |
| 1244 } | 1245 } |
| 1245 } | 1246 } |
| 1246 | 1247 |
| 1247 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { | 1248 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { |
| 1248 EXPECT_TRUE(SetUpEncryption(true)); | 1249 EXPECT_TRUE(SetUpEncryption(true)); |
| 1249 EXPECT_CALL(observer_, | 1250 EXPECT_CALL(observer_, |
| 1250 OnEncryptedTypesChanged(GetAllRealModelTypes(), true)); | 1251 OnEncryptedTypesChanged( |
| 1252 HasModelTypes(syncable::ModelEnumSet::All()), true)); |
| 1251 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1253 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1252 sync_manager_.EnableEncryptEverything(); | 1254 sync_manager_.EnableEncryptEverything(); |
| 1253 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); | 1255 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1254 } | 1256 } |
| 1255 | 1257 |
| 1256 TEST_F(SyncManagerTest, EncryptDataTypesWithData) { | 1258 TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
| 1257 size_t batch_size = 5; | 1259 size_t batch_size = 5; |
| 1258 EXPECT_TRUE(SetUpEncryption(true)); | 1260 EXPECT_TRUE(SetUpEncryption(true)); |
| 1259 | 1261 |
| 1260 // Create some unencrypted unsynced data. | 1262 // Create some unencrypted unsynced data. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1276 } | 1278 } |
| 1277 // Last batch_size nodes are a third type that will not need encryption. | 1279 // Last batch_size nodes are a third type that will not need encryption. |
| 1278 for (; i < 3*batch_size; ++i) { | 1280 for (; i < 3*batch_size; ++i) { |
| 1279 MakeNodeWithParent(sync_manager_.GetUserShare(), syncable::THEMES, | 1281 MakeNodeWithParent(sync_manager_.GetUserShare(), syncable::THEMES, |
| 1280 base::StringPrintf("%"PRIuS"", i), | 1282 base::StringPrintf("%"PRIuS"", i), |
| 1281 GetIdForDataType(syncable::THEMES)); | 1283 GetIdForDataType(syncable::THEMES)); |
| 1282 } | 1284 } |
| 1283 | 1285 |
| 1284 { | 1286 { |
| 1285 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1287 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1286 EXPECT_EQ(Cryptographer::SensitiveTypes(), GetEncryptedTypes(&trans)); | 1288 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( |
| 1289 Cryptographer::SensitiveTypes())); |
| 1287 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1290 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1288 trans.GetWrappedTrans(), | 1291 trans.GetWrappedTrans(), |
| 1289 trans.GetCryptographer(), | 1292 trans.GetCryptographer(), |
| 1290 syncable::BOOKMARKS, | 1293 syncable::BOOKMARKS, |
| 1291 false /* not encrypted */)); | 1294 false /* not encrypted */)); |
| 1292 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1295 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1293 trans.GetWrappedTrans(), | 1296 trans.GetWrappedTrans(), |
| 1294 trans.GetCryptographer(), | 1297 trans.GetCryptographer(), |
| 1295 syncable::SESSIONS, | 1298 syncable::SESSIONS, |
| 1296 false /* not encrypted */)); | 1299 false /* not encrypted */)); |
| 1297 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1300 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1298 trans.GetWrappedTrans(), | 1301 trans.GetWrappedTrans(), |
| 1299 trans.GetCryptographer(), | 1302 trans.GetCryptographer(), |
| 1300 syncable::THEMES, | 1303 syncable::THEMES, |
| 1301 false /* not encrypted */)); | 1304 false /* not encrypted */)); |
| 1302 } | 1305 } |
| 1303 | 1306 |
| 1304 EXPECT_CALL(observer_, | 1307 EXPECT_CALL(observer_, |
| 1305 OnEncryptedTypesChanged(GetAllRealModelTypes(), true)); | 1308 OnEncryptedTypesChanged( |
| 1309 HasModelTypes(syncable::ModelEnumSet::All()), true)); |
| 1306 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1310 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1307 sync_manager_.EnableEncryptEverything(); | 1311 sync_manager_.EnableEncryptEverything(); |
| 1308 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); | 1312 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1309 { | 1313 { |
| 1310 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1314 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1311 EXPECT_EQ(GetAllRealModelTypes(), GetEncryptedTypes(&trans)); | 1315 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( |
| 1316 syncable::ModelEnumSet::All())); |
| 1312 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1317 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1313 trans.GetWrappedTrans(), | 1318 trans.GetWrappedTrans(), |
| 1314 trans.GetCryptographer(), | 1319 trans.GetCryptographer(), |
| 1315 syncable::BOOKMARKS, | 1320 syncable::BOOKMARKS, |
| 1316 true /* is encrypted */)); | 1321 true /* is encrypted */)); |
| 1317 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1322 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1318 trans.GetWrappedTrans(), | 1323 trans.GetWrappedTrans(), |
| 1319 trans.GetCryptographer(), | 1324 trans.GetCryptographer(), |
| 1320 syncable::SESSIONS, | 1325 syncable::SESSIONS, |
| 1321 true /* is encrypted */)); | 1326 true /* is encrypted */)); |
| 1322 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1327 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1323 trans.GetWrappedTrans(), | 1328 trans.GetWrappedTrans(), |
| 1324 trans.GetCryptographer(), | 1329 trans.GetCryptographer(), |
| 1325 syncable::THEMES, | 1330 syncable::THEMES, |
| 1326 true /* is encrypted */)); | 1331 true /* is encrypted */)); |
| 1327 } | 1332 } |
| 1328 | 1333 |
| 1329 // Trigger's a ReEncryptEverything with new passphrase. | 1334 // Trigger's a ReEncryptEverything with new passphrase. |
| 1330 testing::Mock::VerifyAndClearExpectations(&observer_); | 1335 testing::Mock::VerifyAndClearExpectations(&observer_); |
| 1331 EXPECT_CALL(observer_, OnPassphraseAccepted(_)); | 1336 EXPECT_CALL(observer_, OnPassphraseAccepted(_)); |
| 1332 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1337 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1333 sync_manager_.SetPassphrase("new_passphrase", true); | 1338 sync_manager_.SetPassphrase("new_passphrase", true); |
| 1334 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); | 1339 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1335 { | 1340 { |
| 1336 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1341 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1337 EXPECT_EQ(GetAllRealModelTypes(), GetEncryptedTypes(&trans)); | 1342 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( |
| 1343 syncable::ModelEnumSet::All())); |
| 1338 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1344 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1339 trans.GetWrappedTrans(), | 1345 trans.GetWrappedTrans(), |
| 1340 trans.GetCryptographer(), | 1346 trans.GetCryptographer(), |
| 1341 syncable::BOOKMARKS, | 1347 syncable::BOOKMARKS, |
| 1342 true /* is encrypted */)); | 1348 true /* is encrypted */)); |
| 1343 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1349 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1344 trans.GetWrappedTrans(), | 1350 trans.GetWrappedTrans(), |
| 1345 trans.GetCryptographer(), | 1351 trans.GetCryptographer(), |
| 1346 syncable::SESSIONS, | 1352 syncable::SESSIONS, |
| 1347 true /* is encrypted */)); | 1353 true /* is encrypted */)); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1487 { | 1493 { |
| 1488 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1494 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1489 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1495 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1490 trans.GetWrappedTrans(), | 1496 trans.GetWrappedTrans(), |
| 1491 trans.GetCryptographer(), | 1497 trans.GetCryptographer(), |
| 1492 syncable::BOOKMARKS, | 1498 syncable::BOOKMARKS, |
| 1493 false /* not encrypted */)); | 1499 false /* not encrypted */)); |
| 1494 } | 1500 } |
| 1495 | 1501 |
| 1496 EXPECT_CALL(observer_, | 1502 EXPECT_CALL(observer_, |
| 1497 OnEncryptedTypesChanged(GetAllRealModelTypes(), true)); | 1503 OnEncryptedTypesChanged( |
| 1504 HasModelTypes(syncable::ModelEnumSet::All()), true)); |
| 1498 EXPECT_CALL(observer_, OnEncryptionComplete()); | 1505 EXPECT_CALL(observer_, OnEncryptionComplete()); |
| 1499 sync_manager_.EnableEncryptEverything(); | 1506 sync_manager_.EnableEncryptEverything(); |
| 1500 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); | 1507 EXPECT_TRUE(sync_manager_.EncryptEverythingEnabledForTest()); |
| 1501 | 1508 |
| 1502 { | 1509 { |
| 1503 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1510 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1504 EXPECT_EQ(GetAllRealModelTypes(), GetEncryptedTypes(&trans)); | 1511 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( |
| 1512 syncable::ModelEnumSet::All())); |
| 1505 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1513 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1506 trans.GetWrappedTrans(), | 1514 trans.GetWrappedTrans(), |
| 1507 trans.GetCryptographer(), | 1515 trans.GetCryptographer(), |
| 1508 syncable::BOOKMARKS, | 1516 syncable::BOOKMARKS, |
| 1509 true /* is encrypted */)); | 1517 true /* is encrypted */)); |
| 1510 | 1518 |
| 1511 ReadNode node(&trans); | 1519 ReadNode node(&trans); |
| 1512 EXPECT_TRUE(node.InitByIdLookup(node_id1)); | 1520 EXPECT_TRUE(node.InitByIdLookup(node_id1)); |
| 1513 EXPECT_EQ(syncable::BOOKMARKS, node.GetModelType()); | 1521 EXPECT_EQ(syncable::BOOKMARKS, node.GetModelType()); |
| 1514 EXPECT_EQ(title, node.GetTitle()); | 1522 EXPECT_EQ(title, node.GetTitle()); |
| 1515 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); | 1523 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); |
| 1516 EXPECT_EQ(url, node.GetBookmarkSpecifics().url()); | 1524 EXPECT_EQ(url, node.GetBookmarkSpecifics().url()); |
| 1517 | 1525 |
| 1518 ReadNode node2(&trans); | 1526 ReadNode node2(&trans); |
| 1519 EXPECT_TRUE(node2.InitByIdLookup(node_id2)); | 1527 EXPECT_TRUE(node2.InitByIdLookup(node_id2)); |
| 1520 EXPECT_EQ(syncable::BOOKMARKS, node2.GetModelType()); | 1528 EXPECT_EQ(syncable::BOOKMARKS, node2.GetModelType()); |
| 1521 // We should de-canonicalize the title in GetTitle(), but the title in the | 1529 // We should de-canonicalize the title in GetTitle(), but the title in the |
| 1522 // specifics should be stored in the server legal form. | 1530 // specifics should be stored in the server legal form. |
| 1523 EXPECT_EQ(raw_title2, node2.GetTitle()); | 1531 EXPECT_EQ(raw_title2, node2.GetTitle()); |
| 1524 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title()); | 1532 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title()); |
| 1525 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url()); | 1533 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url()); |
| 1526 } | 1534 } |
| 1527 } | 1535 } |
| 1528 | 1536 |
| 1529 } // namespace browser_sync | 1537 } // namespace browser_sync |
| OLD | NEW |