| OLD | NEW |
| 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 888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 ModelTypeSet GetEncryptedTypes() { | 899 ModelTypeSet GetEncryptedTypes() { |
| 900 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 900 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 901 return GetEncryptedTypesWithTrans(&trans); | 901 return GetEncryptedTypesWithTrans(&trans); |
| 902 } | 902 } |
| 903 | 903 |
| 904 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) { | 904 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) { |
| 905 return trans->GetDirectory()->GetNigoriHandler()-> | 905 return trans->GetDirectory()->GetNigoriHandler()-> |
| 906 GetEncryptedTypes(trans->GetWrappedTrans()); | 906 GetEncryptedTypes(trans->GetWrappedTrans()); |
| 907 } | 907 } |
| 908 | 908 |
| 909 void SimulateEnableNotificationsForTest() { | 909 void SimulateInvalidatorStateChangeForTest(InvalidatorState state) { |
| 910 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); | 910 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); |
| 911 sync_manager_.OnNotificationsEnabled(); | 911 sync_manager_.OnInvalidatorStateChange(state); |
| 912 } | |
| 913 | |
| 914 void SimulateDisableNotificationsForTest( | |
| 915 NotificationsDisabledReason reason) { | |
| 916 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); | |
| 917 sync_manager_.OnNotificationsDisabled(reason); | |
| 918 } | 912 } |
| 919 | 913 |
| 920 void TriggerOnIncomingNotificationForTest(ModelTypeSet model_types) { | 914 void TriggerOnIncomingNotificationForTest(ModelTypeSet model_types) { |
| 921 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); | 915 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); |
| 922 ModelTypeStateMap type_state_map = | 916 ModelTypeStateMap type_state_map = |
| 923 ModelTypeSetToStateMap(model_types, std::string()); | 917 ModelTypeSetToStateMap(model_types, std::string()); |
| 924 sync_manager_.OnIncomingNotification( | 918 sync_manager_.OnIncomingInvalidation( |
| 925 ModelTypeStateMapToObjectIdStateMap(type_state_map), | 919 ModelTypeStateMapToObjectIdStateMap(type_state_map), |
| 926 REMOTE_NOTIFICATION); | 920 REMOTE_INVALIDATION); |
| 927 } | 921 } |
| 928 | 922 |
| 929 void SetProgressMarkerForType(ModelType type, bool set) { | 923 void SetProgressMarkerForType(ModelType type, bool set) { |
| 930 if (set) { | 924 if (set) { |
| 931 sync_pb::DataTypeProgressMarker marker; | 925 sync_pb::DataTypeProgressMarker marker; |
| 932 marker.set_token("token"); | 926 marker.set_token("token"); |
| 933 marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); | 927 marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); |
| 934 sync_manager_.directory()->SetDownloadProgress(type, marker); | 928 sync_manager_.directory()->SetDownloadProgress(type, marker); |
| 935 } else { | 929 } else { |
| 936 sync_pb::DataTypeProgressMarker marker; | 930 sync_pb::DataTypeProgressMarker marker; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 EXPECT_FALSE(fake_invalidator_->IsHandlerRegistered(&fake_handler)); | 983 EXPECT_FALSE(fake_invalidator_->IsHandlerRegistered(&fake_handler)); |
| 990 } | 984 } |
| 991 | 985 |
| 992 TEST_F(SyncManagerTest, ProcessJsMessage) { | 986 TEST_F(SyncManagerTest, ProcessJsMessage) { |
| 993 const JsArgList kNoArgs; | 987 const JsArgList kNoArgs; |
| 994 | 988 |
| 995 StrictMock<MockJsReplyHandler> reply_handler; | 989 StrictMock<MockJsReplyHandler> reply_handler; |
| 996 | 990 |
| 997 ListValue disabled_args; | 991 ListValue disabled_args; |
| 998 disabled_args.Append( | 992 disabled_args.Append( |
| 999 Value::CreateStringValue("TRANSIENT_NOTIFICATION_ERROR")); | 993 Value::CreateStringValue("TRANSIENT_INVALIDATION_ERROR")); |
| 1000 | 994 |
| 1001 EXPECT_CALL(reply_handler, | 995 EXPECT_CALL(reply_handler, |
| 1002 HandleJsReply("getNotificationState", | 996 HandleJsReply("getNotificationState", |
| 1003 HasArgsAsList(disabled_args))); | 997 HasArgsAsList(disabled_args))); |
| 1004 | 998 |
| 1005 // This message should be dropped. | 999 // This message should be dropped. |
| 1006 SendJsMessage("unknownMessage", kNoArgs, reply_handler.AsWeakHandle()); | 1000 SendJsMessage("unknownMessage", kNoArgs, reply_handler.AsWeakHandle()); |
| 1007 | 1001 |
| 1008 SendJsMessage("getNotificationState", kNoArgs, reply_handler.AsWeakHandle()); | 1002 SendJsMessage("getNotificationState", kNoArgs, reply_handler.AsWeakHandle()); |
| 1009 } | 1003 } |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1277 ASSERT_TRUE(node_list->GetDictionary(0, &first_result)); | 1271 ASSERT_TRUE(node_list->GetDictionary(0, &first_result)); |
| 1278 EXPECT_TRUE(first_result->HasKey("ID")); | 1272 EXPECT_TRUE(first_result->HasKey("ID")); |
| 1279 EXPECT_TRUE(first_result->HasKey("NON_UNIQUE_NAME")); | 1273 EXPECT_TRUE(first_result->HasKey("NON_UNIQUE_NAME")); |
| 1280 } | 1274 } |
| 1281 | 1275 |
| 1282 TEST_F(SyncManagerTest, OnNotificationStateChange) { | 1276 TEST_F(SyncManagerTest, OnNotificationStateChange) { |
| 1283 InSequence dummy; | 1277 InSequence dummy; |
| 1284 StrictMock<MockJsEventHandler> event_handler; | 1278 StrictMock<MockJsEventHandler> event_handler; |
| 1285 | 1279 |
| 1286 DictionaryValue enabled_details; | 1280 DictionaryValue enabled_details; |
| 1287 enabled_details.SetString("state", "NO_NOTIFICATION_ERROR"); | 1281 enabled_details.SetString("state", "INVALIDATIONS_ENABLED"); |
| 1288 DictionaryValue disabled_details; | 1282 DictionaryValue disabled_details; |
| 1289 disabled_details.SetString("state", "TRANSIENT_NOTIFICATION_ERROR"); | 1283 disabled_details.SetString("state", "TRANSIENT_INVALIDATION_ERROR"); |
| 1290 | 1284 |
| 1291 EXPECT_CALL(event_handler, | 1285 EXPECT_CALL(event_handler, |
| 1292 HandleJsEvent("onNotificationStateChange", | 1286 HandleJsEvent("onNotificationStateChange", |
| 1293 HasDetailsAsDictionary(enabled_details))); | 1287 HasDetailsAsDictionary(enabled_details))); |
| 1294 EXPECT_CALL(event_handler, | 1288 EXPECT_CALL(event_handler, |
| 1295 HandleJsEvent("onNotificationStateChange", | 1289 HandleJsEvent("onNotificationStateChange", |
| 1296 HasDetailsAsDictionary(disabled_details))); | 1290 HasDetailsAsDictionary(disabled_details))); |
| 1297 | 1291 |
| 1298 SimulateEnableNotificationsForTest(); | 1292 SimulateInvalidatorStateChangeForTest(INVALIDATIONS_ENABLED); |
| 1299 SimulateDisableNotificationsForTest(TRANSIENT_NOTIFICATION_ERROR); | 1293 SimulateInvalidatorStateChangeForTest(TRANSIENT_INVALIDATION_ERROR); |
| 1300 | 1294 |
| 1301 SetJsEventHandler(event_handler.AsWeakHandle()); | 1295 SetJsEventHandler(event_handler.AsWeakHandle()); |
| 1302 SimulateEnableNotificationsForTest(); | 1296 SimulateInvalidatorStateChangeForTest(INVALIDATIONS_ENABLED); |
| 1303 SimulateDisableNotificationsForTest(TRANSIENT_NOTIFICATION_ERROR); | 1297 SimulateInvalidatorStateChangeForTest(TRANSIENT_INVALIDATION_ERROR); |
| 1304 SetJsEventHandler(WeakHandle<JsEventHandler>()); | 1298 SetJsEventHandler(WeakHandle<JsEventHandler>()); |
| 1305 | 1299 |
| 1306 SimulateEnableNotificationsForTest(); | 1300 SimulateInvalidatorStateChangeForTest(INVALIDATIONS_ENABLED); |
| 1307 SimulateDisableNotificationsForTest(TRANSIENT_NOTIFICATION_ERROR); | 1301 SimulateInvalidatorStateChangeForTest(TRANSIENT_INVALIDATION_ERROR); |
| 1308 | 1302 |
| 1309 // Should trigger the replies. | 1303 // Should trigger the replies. |
| 1310 PumpLoop(); | 1304 PumpLoop(); |
| 1311 } | 1305 } |
| 1312 | 1306 |
| 1313 TEST_F(SyncManagerTest, OnIncomingNotification) { | 1307 TEST_F(SyncManagerTest, OnIncomingNotification) { |
| 1314 StrictMock<MockJsEventHandler> event_handler; | 1308 StrictMock<MockJsEventHandler> event_handler; |
| 1315 | 1309 |
| 1316 const ModelTypeSet empty_model_types; | 1310 const ModelTypeSet empty_model_types; |
| 1317 const ModelTypeSet model_types( | 1311 const ModelTypeSet model_types( |
| 1318 BOOKMARKS, THEMES); | 1312 BOOKMARKS, THEMES); |
| 1319 | 1313 |
| 1320 // Build expected_args to have a single argument with the string | 1314 // Build expected_args to have a single argument with the string |
| 1321 // equivalents of model_types. | 1315 // equivalents of model_types. |
| 1322 DictionaryValue expected_details; | 1316 DictionaryValue expected_details; |
| 1323 { | 1317 { |
| 1324 ListValue* model_type_list = new ListValue(); | 1318 ListValue* model_type_list = new ListValue(); |
| 1325 expected_details.SetString("source", "REMOTE_NOTIFICATION"); | 1319 expected_details.SetString("source", "REMOTE_INVALIDATION"); |
| 1326 expected_details.Set("changedTypes", model_type_list); | 1320 expected_details.Set("changedTypes", model_type_list); |
| 1327 for (ModelTypeSet::Iterator it = model_types.First(); | 1321 for (ModelTypeSet::Iterator it = model_types.First(); |
| 1328 it.Good(); it.Inc()) { | 1322 it.Good(); it.Inc()) { |
| 1329 model_type_list->Append( | 1323 model_type_list->Append( |
| 1330 Value::CreateStringValue(ModelTypeToString(it.Get()))); | 1324 Value::CreateStringValue(ModelTypeToString(it.Get()))); |
| 1331 } | 1325 } |
| 1332 } | 1326 } |
| 1333 | 1327 |
| 1334 EXPECT_CALL(event_handler, | 1328 EXPECT_CALL(event_handler, |
| 1335 HandleJsEvent("onIncomingNotification", | 1329 HandleJsEvent("onIncomingNotification", |
| (...skipping 1550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2886 | 2880 |
| 2887 // Verify only the non-disabled types remain after cleanup. | 2881 // Verify only the non-disabled types remain after cleanup. |
| 2888 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); | 2882 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); |
| 2889 EXPECT_TRUE(new_enabled_types.Equals( | 2883 EXPECT_TRUE(new_enabled_types.Equals( |
| 2890 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); | 2884 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); |
| 2891 EXPECT_TRUE(disabled_types.Equals( | 2885 EXPECT_TRUE(disabled_types.Equals( |
| 2892 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | 2886 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
| 2893 } | 2887 } |
| 2894 | 2888 |
| 2895 } // namespace | 2889 } // namespace |
| OLD | NEW |