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 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 return recipient_->ProcessSyncChanges(from_here, change_list); | 160 return recipient_->ProcessSyncChanges(from_here, change_list); |
161 } | 161 } |
162 | 162 |
163 private: | 163 private: |
164 // The recipient of all sync changes. | 164 // The recipient of all sync changes. |
165 SyncChangeProcessor* recipient_; | 165 SyncChangeProcessor* recipient_; |
166 | 166 |
167 DISALLOW_COPY_AND_ASSIGN(SyncChangeProcessorDelegate); | 167 DISALLOW_COPY_AND_ASSIGN(SyncChangeProcessorDelegate); |
168 }; | 168 }; |
169 | 169 |
170 // SettingsStorageFactory which always returns TestingSettingsStorage objects, | 170 // SettingsStorageFactory which always returns TestingValueStore objects, |
171 // and allows individually created objects to be returned. | 171 // and allows individually created objects to be returned. |
172 class TestingSettingsStorageFactory : public SettingsStorageFactory { | 172 class TestingValueStoreFactory : public SettingsStorageFactory { |
173 public: | 173 public: |
174 TestingSettingsStorage* GetExisting(const std::string& extension_id) { | 174 TestingValueStore* GetExisting(const std::string& extension_id) { |
175 DCHECK(created_.count(extension_id)); | 175 DCHECK(created_.count(extension_id)); |
176 return created_[extension_id]; | 176 return created_[extension_id]; |
177 } | 177 } |
178 | 178 |
179 // SettingsStorageFactory implementation. | 179 // SettingsStorageFactory implementation. |
180 virtual ValueStore* Create( | 180 virtual ValueStore* Create( |
181 const FilePath& base_path, const std::string& extension_id) OVERRIDE { | 181 const FilePath& base_path, const std::string& extension_id) OVERRIDE { |
182 TestingSettingsStorage* new_storage = new TestingSettingsStorage(); | 182 TestingValueStore* new_storage = new TestingValueStore(); |
183 DCHECK(!created_.count(extension_id)); | 183 DCHECK(!created_.count(extension_id)); |
184 created_[extension_id] = new_storage; | 184 created_[extension_id] = new_storage; |
185 return new_storage; | 185 return new_storage; |
186 } | 186 } |
187 | 187 |
188 private: | 188 private: |
189 // SettingsStorageFactory is refcounted. | 189 // SettingsStorageFactory is refcounted. |
190 virtual ~TestingSettingsStorageFactory() {} | 190 virtual ~TestingValueStoreFactory() {} |
191 | 191 |
192 // None of these storage areas are owned by this factory, so care must be | 192 // None of these storage areas are owned by this factory, so care must be |
193 // taken when calling GetExisting. | 193 // taken when calling GetExisting. |
194 std::map<std::string, TestingSettingsStorage*> created_; | 194 std::map<std::string, TestingValueStore*> created_; |
195 }; | 195 }; |
196 | 196 |
197 void AssignSettingsService(SyncableService** dst, | 197 void AssignSettingsService(SyncableService** dst, |
198 const SettingsFrontend* frontend, | 198 const SettingsFrontend* frontend, |
199 syncable::ModelType type) { | 199 syncable::ModelType type) { |
200 *dst = frontend->GetBackendForSync(type); | 200 *dst = frontend->GetBackendForSync(type); |
201 } | 201 } |
202 | 202 |
203 } // namespace | 203 } // namespace |
204 | 204 |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 } | 690 } |
691 | 691 |
692 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) { | 692 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) { |
693 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; | 693 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; |
694 Extension::Type type = Extension::TYPE_EXTENSION; | 694 Extension::Type type = Extension::TYPE_EXTENSION; |
695 | 695 |
696 StringValue fooValue("fooValue"); | 696 StringValue fooValue("fooValue"); |
697 StringValue barValue("barValue"); | 697 StringValue barValue("barValue"); |
698 | 698 |
699 // There is a bit of a convoluted method to get storage areas that can fail; | 699 // There is a bit of a convoluted method to get storage areas that can fail; |
700 // hand out TestingSettingsStorage object then toggle them failing/succeeding | 700 // hand out TestingValueStore object then toggle them failing/succeeding |
701 // as necessary. | 701 // as necessary. |
702 TestingSettingsStorageFactory* testing_factory = | 702 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
703 new TestingSettingsStorageFactory(); | |
704 storage_factory_->Reset(testing_factory); | 703 storage_factory_->Reset(testing_factory); |
705 | 704 |
706 ValueStore* good = AddExtensionAndGetStorage("good", type); | 705 ValueStore* good = AddExtensionAndGetStorage("good", type); |
707 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 706 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
708 | 707 |
709 // Make bad fail for incoming sync changes. | 708 // Make bad fail for incoming sync changes. |
710 testing_factory->GetExisting("bad")->SetFailAllRequests(true); | 709 testing_factory->GetExisting("bad")->SetFailAllRequests(true); |
711 { | 710 { |
712 SyncDataList sync_data; | 711 SyncDataList sync_data; |
713 sync_data.push_back(settings_sync_util::CreateData( | 712 sync_data.push_back(settings_sync_util::CreateData( |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 | 888 |
890 TEST_F(ExtensionSettingsSyncTest, FailingProcessChangesDisablesSync) { | 889 TEST_F(ExtensionSettingsSyncTest, FailingProcessChangesDisablesSync) { |
891 // The test above tests a failing ProcessSyncChanges too, but here test with | 890 // The test above tests a failing ProcessSyncChanges too, but here test with |
892 // an initially passing MergeDataAndStartSyncing. | 891 // an initially passing MergeDataAndStartSyncing. |
893 syncable::ModelType model_type = syncable::APP_SETTINGS; | 892 syncable::ModelType model_type = syncable::APP_SETTINGS; |
894 Extension::Type type = Extension::TYPE_PACKAGED_APP; | 893 Extension::Type type = Extension::TYPE_PACKAGED_APP; |
895 | 894 |
896 StringValue fooValue("fooValue"); | 895 StringValue fooValue("fooValue"); |
897 StringValue barValue("barValue"); | 896 StringValue barValue("barValue"); |
898 | 897 |
899 TestingSettingsStorageFactory* testing_factory = | 898 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
900 new TestingSettingsStorageFactory(); | |
901 storage_factory_->Reset(testing_factory); | 899 storage_factory_->Reset(testing_factory); |
902 | 900 |
903 ValueStore* good = AddExtensionAndGetStorage("good", type); | 901 ValueStore* good = AddExtensionAndGetStorage("good", type); |
904 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 902 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
905 | 903 |
906 // Unlike before, initially succeeding MergeDataAndStartSyncing. | 904 // Unlike before, initially succeeding MergeDataAndStartSyncing. |
907 { | 905 { |
908 SyncDataList sync_data; | 906 SyncDataList sync_data; |
909 sync_data.push_back(settings_sync_util::CreateData( | 907 sync_data.push_back(settings_sync_util::CreateData( |
910 "good", "foo", fooValue, model_type)); | 908 "good", "foo", fooValue, model_type)); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 } | 985 } |
988 } | 986 } |
989 | 987 |
990 TEST_F(ExtensionSettingsSyncTest, FailingGetAllSyncDataDoesntStopSync) { | 988 TEST_F(ExtensionSettingsSyncTest, FailingGetAllSyncDataDoesntStopSync) { |
991 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; | 989 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; |
992 Extension::Type type = Extension::TYPE_EXTENSION; | 990 Extension::Type type = Extension::TYPE_EXTENSION; |
993 | 991 |
994 StringValue fooValue("fooValue"); | 992 StringValue fooValue("fooValue"); |
995 StringValue barValue("barValue"); | 993 StringValue barValue("barValue"); |
996 | 994 |
997 TestingSettingsStorageFactory* testing_factory = | 995 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
998 new TestingSettingsStorageFactory(); | |
999 storage_factory_->Reset(testing_factory); | 996 storage_factory_->Reset(testing_factory); |
1000 | 997 |
1001 ValueStore* good = AddExtensionAndGetStorage("good", type); | 998 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1002 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 999 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1003 | 1000 |
1004 good->Set(DEFAULTS, "foo", fooValue); | 1001 good->Set(DEFAULTS, "foo", fooValue); |
1005 bad->Set(DEFAULTS, "foo", fooValue); | 1002 bad->Set(DEFAULTS, "foo", fooValue); |
1006 | 1003 |
1007 // Even though bad will fail to get all sync data, sync data should still | 1004 // Even though bad will fail to get all sync data, sync data should still |
1008 // include that from good. | 1005 // include that from good. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1040 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1044 } | 1041 } |
1045 | 1042 |
1046 TEST_F(ExtensionSettingsSyncTest, FailureToReadChangesToPushDisablesSync) { | 1043 TEST_F(ExtensionSettingsSyncTest, FailureToReadChangesToPushDisablesSync) { |
1047 syncable::ModelType model_type = syncable::APP_SETTINGS; | 1044 syncable::ModelType model_type = syncable::APP_SETTINGS; |
1048 Extension::Type type = Extension::TYPE_PACKAGED_APP; | 1045 Extension::Type type = Extension::TYPE_PACKAGED_APP; |
1049 | 1046 |
1050 StringValue fooValue("fooValue"); | 1047 StringValue fooValue("fooValue"); |
1051 StringValue barValue("barValue"); | 1048 StringValue barValue("barValue"); |
1052 | 1049 |
1053 TestingSettingsStorageFactory* testing_factory = | 1050 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1054 new TestingSettingsStorageFactory(); | |
1055 storage_factory_->Reset(testing_factory); | 1051 storage_factory_->Reset(testing_factory); |
1056 | 1052 |
1057 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1053 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1058 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1054 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1059 | 1055 |
1060 good->Set(DEFAULTS, "foo", fooValue); | 1056 good->Set(DEFAULTS, "foo", fooValue); |
1061 bad->Set(DEFAULTS, "foo", fooValue); | 1057 bad->Set(DEFAULTS, "foo", fooValue); |
1062 | 1058 |
1063 // good will successfully push foo:fooValue to sync, but bad will fail to | 1059 // good will successfully push foo:fooValue to sync, but bad will fail to |
1064 // get them so won't. | 1060 // get them so won't. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1144 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1149 } | 1145 } |
1150 | 1146 |
1151 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalStateDisablesSync) { | 1147 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalStateDisablesSync) { |
1152 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; | 1148 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; |
1153 Extension::Type type = Extension::TYPE_EXTENSION; | 1149 Extension::Type type = Extension::TYPE_EXTENSION; |
1154 | 1150 |
1155 StringValue fooValue("fooValue"); | 1151 StringValue fooValue("fooValue"); |
1156 StringValue barValue("barValue"); | 1152 StringValue barValue("barValue"); |
1157 | 1153 |
1158 TestingSettingsStorageFactory* testing_factory = | 1154 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1159 new TestingSettingsStorageFactory(); | |
1160 storage_factory_->Reset(testing_factory); | 1155 storage_factory_->Reset(testing_factory); |
1161 | 1156 |
1162 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1157 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1163 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1158 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1164 | 1159 |
1165 // Only set bad; setting good will cause it to fail below. | 1160 // Only set bad; setting good will cause it to fail below. |
1166 bad->Set(DEFAULTS, "foo", fooValue); | 1161 bad->Set(DEFAULTS, "foo", fooValue); |
1167 | 1162 |
1168 sync_processor_->SetFailAllRequests(true); | 1163 sync_processor_->SetFailAllRequests(true); |
1169 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1164 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1235 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1241 } | 1236 } |
1242 | 1237 |
1243 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalChangeDisablesSync) { | 1238 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalChangeDisablesSync) { |
1244 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; | 1239 syncable::ModelType model_type = syncable::EXTENSION_SETTINGS; |
1245 Extension::Type type = Extension::TYPE_EXTENSION; | 1240 Extension::Type type = Extension::TYPE_EXTENSION; |
1246 | 1241 |
1247 StringValue fooValue("fooValue"); | 1242 StringValue fooValue("fooValue"); |
1248 StringValue barValue("barValue"); | 1243 StringValue barValue("barValue"); |
1249 | 1244 |
1250 TestingSettingsStorageFactory* testing_factory = | 1245 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1251 new TestingSettingsStorageFactory(); | |
1252 storage_factory_->Reset(testing_factory); | 1246 storage_factory_->Reset(testing_factory); |
1253 | 1247 |
1254 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1248 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1255 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1249 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1256 | 1250 |
1257 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1251 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
1258 model_type, | 1252 model_type, |
1259 SyncDataList(), | 1253 SyncDataList(), |
1260 sync_processor_delegate_.PassAs<SyncChangeProcessor>(), | 1254 sync_processor_delegate_.PassAs<SyncChangeProcessor>(), |
1261 scoped_ptr<SyncErrorFactory>(new SyncErrorFactoryMock())); | 1255 scoped_ptr<SyncErrorFactory>(new SyncErrorFactoryMock())); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1375 DictionaryValue expected; | 1369 DictionaryValue expected; |
1376 expected.Set("large_value", large_value.DeepCopy()); | 1370 expected.Set("large_value", large_value.DeepCopy()); |
1377 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get()); | 1371 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get()); |
1378 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get()); | 1372 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get()); |
1379 } | 1373 } |
1380 | 1374 |
1381 GetSyncableService(model_type)->StopSyncing(model_type); | 1375 GetSyncableService(model_type)->StopSyncing(model_type); |
1382 } | 1376 } |
1383 | 1377 |
1384 } // namespace extensions | 1378 } // namespace extensions |
OLD | NEW |