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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
11 #include "chrome/browser/extensions/api/storage/leveldb_settings_storage_factory
.h" | 11 #include "chrome/browser/extensions/api/storage/leveldb_settings_storage_factory
.h" |
12 #include "chrome/browser/extensions/api/storage/settings_frontend.h" | 12 #include "chrome/browser/extensions/api/storage/settings_frontend.h" |
13 #include "chrome/browser/extensions/api/storage/settings_storage_factory.h" | 13 #include "chrome/browser/extensions/api/storage/settings_storage_factory.h" |
14 #include "chrome/browser/extensions/api/storage/settings_sync_util.h" | 14 #include "chrome/browser/extensions/api/storage/settings_sync_util.h" |
15 #include "chrome/browser/extensions/api/storage/settings_test_util.h" | 15 #include "chrome/browser/extensions/api/storage/settings_test_util.h" |
16 #include "chrome/browser/extensions/api/storage/syncable_settings_storage.h" | 16 #include "chrome/browser/extensions/api/storage/syncable_settings_storage.h" |
17 #include "chrome/browser/extensions/extension_system.h" | 17 #include "chrome/browser/extensions/extension_system.h" |
18 #include "chrome/browser/extensions/test_extension_service.h" | 18 #include "chrome/browser/extensions/test_extension_service.h" |
19 #include "chrome/browser/value_store/testing_value_store.h" | 19 #include "chrome/browser/value_store/testing_value_store.h" |
| 20 #include "chrome/common/extensions/manifest.h" |
20 #include "content/public/test/test_browser_thread.h" | 21 #include "content/public/test/test_browser_thread.h" |
21 #include "sync/api/sync_change_processor.h" | 22 #include "sync/api/sync_change_processor.h" |
22 #include "sync/api/sync_error_factory.h" | 23 #include "sync/api/sync_error_factory.h" |
23 #include "sync/api/sync_error_factory_mock.h" | 24 #include "sync/api/sync_error_factory_mock.h" |
24 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
25 | 26 |
26 using content::BrowserThread; | 27 using content::BrowserThread; |
27 | 28 |
28 namespace extensions { | 29 namespace extensions { |
29 | 30 |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 frontend_.reset(); | 219 frontend_.reset(); |
219 profile_.reset(); | 220 profile_.reset(); |
220 // Execute any pending deletion tasks. | 221 // Execute any pending deletion tasks. |
221 message_loop_.RunUntilIdle(); | 222 message_loop_.RunUntilIdle(); |
222 } | 223 } |
223 | 224 |
224 protected: | 225 protected: |
225 // Adds a record of an extension or app to the extension service, then returns | 226 // Adds a record of an extension or app to the extension service, then returns |
226 // its storage area. | 227 // its storage area. |
227 ValueStore* AddExtensionAndGetStorage( | 228 ValueStore* AddExtensionAndGetStorage( |
228 const std::string& id, Extension::Type type) { | 229 const std::string& id, Manifest::Type type) { |
229 ExtensionServiceInterface* esi = | 230 ExtensionServiceInterface* esi = |
230 extensions::ExtensionSystem::Get(profile_.get())->extension_service(); | 231 extensions::ExtensionSystem::Get(profile_.get())->extension_service(); |
231 static_cast<extensions::settings_test_util::MockExtensionService*>(esi)-> | 232 static_cast<extensions::settings_test_util::MockExtensionService*>(esi)-> |
232 AddExtensionWithId(id, type); | 233 AddExtensionWithId(id, type); |
233 return util::GetStorage(id, frontend_.get()); | 234 return util::GetStorage(id, frontend_.get()); |
234 } | 235 } |
235 | 236 |
236 // Gets the syncer::SyncableService for the given sync type. | 237 // Gets the syncer::SyncableService for the given sync type. |
237 syncer::SyncableService* GetSyncableService(syncer::ModelType model_type) { | 238 syncer::SyncableService* GetSyncableService(syncer::ModelType model_type) { |
238 MessageLoop::current()->RunUntilIdle(); | 239 MessageLoop::current()->RunUntilIdle(); |
(...skipping 26 matching lines...) Expand all Loading... |
265 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_; | 266 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_; |
266 scoped_ptr<MockSyncChangeProcessor> sync_processor_; | 267 scoped_ptr<MockSyncChangeProcessor> sync_processor_; |
267 scoped_ptr<SyncChangeProcessorDelegate> sync_processor_delegate_; | 268 scoped_ptr<SyncChangeProcessorDelegate> sync_processor_delegate_; |
268 }; | 269 }; |
269 | 270 |
270 // Get a semblance of coverage for both EXTENSION_SETTINGS and APP_SETTINGS | 271 // Get a semblance of coverage for both EXTENSION_SETTINGS and APP_SETTINGS |
271 // sync by roughly alternative which one to test. | 272 // sync by roughly alternative which one to test. |
272 | 273 |
273 TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { | 274 TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { |
274 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 275 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
275 Extension::Type type = Extension::TYPE_EXTENSION; | 276 Manifest::Type type = Manifest::TYPE_EXTENSION; |
276 | 277 |
277 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 278 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
278 | 279 |
279 // Have one extension created before sync is set up, the other created after. | 280 // Have one extension created before sync is set up, the other created after. |
280 AddExtensionAndGetStorage("s1", type); | 281 AddExtensionAndGetStorage("s1", type); |
281 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 282 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
282 | 283 |
283 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 284 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
284 model_type, | 285 model_type, |
285 syncer::SyncDataList(), | 286 syncer::SyncDataList(), |
286 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 287 sync_processor_delegate_.PassAs<syncer::SyncChangeProcessor>(), |
287 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 288 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
288 | 289 |
289 AddExtensionAndGetStorage("s2", type); | 290 AddExtensionAndGetStorage("s2", type); |
290 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 291 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
291 | 292 |
292 GetSyncableService(model_type)->StopSyncing(model_type); | 293 GetSyncableService(model_type)->StopSyncing(model_type); |
293 | 294 |
294 EXPECT_EQ(0u, sync_processor_->changes().size()); | 295 EXPECT_EQ(0u, sync_processor_->changes().size()); |
295 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); | 296 EXPECT_EQ(0u, GetAllSyncData(model_type).size()); |
296 } | 297 } |
297 | 298 |
298 TEST_F(ExtensionSettingsSyncTest, InSyncDataDoesNotInvokeSync) { | 299 TEST_F(ExtensionSettingsSyncTest, InSyncDataDoesNotInvokeSync) { |
299 syncer::ModelType model_type = syncer::APP_SETTINGS; | 300 syncer::ModelType model_type = syncer::APP_SETTINGS; |
300 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 301 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
301 | 302 |
302 StringValue value1("fooValue"); | 303 StringValue value1("fooValue"); |
303 ListValue value2; | 304 ListValue value2; |
304 value2.Append(StringValue::CreateStringValue("barValue")); | 305 value2.Append(StringValue::CreateStringValue("barValue")); |
305 | 306 |
306 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 307 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
307 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 308 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
308 | 309 |
309 storage1->Set(DEFAULTS, "foo", value1); | 310 storage1->Set(DEFAULTS, "foo", value1); |
310 storage2->Set(DEFAULTS, "bar", value2); | 311 storage2->Set(DEFAULTS, "bar", value2); |
(...skipping 29 matching lines...) Expand all Loading... |
340 EXPECT_EQ(1u, sync_processor_->changes().size()); | 341 EXPECT_EQ(1u, sync_processor_->changes().size()); |
341 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "foo"); | 342 SettingSyncData change = sync_processor_->GetOnlyChange("s1", "foo"); |
342 EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); | 343 EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); |
343 EXPECT_TRUE(value2.Equals(&change.value())); | 344 EXPECT_TRUE(value2.Equals(&change.value())); |
344 | 345 |
345 GetSyncableService(model_type)->StopSyncing(model_type); | 346 GetSyncableService(model_type)->StopSyncing(model_type); |
346 } | 347 } |
347 | 348 |
348 TEST_F(ExtensionSettingsSyncTest, LocalDataWithNoSyncDataIsPushedToSync) { | 349 TEST_F(ExtensionSettingsSyncTest, LocalDataWithNoSyncDataIsPushedToSync) { |
349 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 350 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
350 Extension::Type type = Extension::TYPE_EXTENSION; | 351 Manifest::Type type = Manifest::TYPE_EXTENSION; |
351 | 352 |
352 StringValue value1("fooValue"); | 353 StringValue value1("fooValue"); |
353 ListValue value2; | 354 ListValue value2; |
354 value2.Append(StringValue::CreateStringValue("barValue")); | 355 value2.Append(StringValue::CreateStringValue("barValue")); |
355 | 356 |
356 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 357 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
357 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 358 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
358 | 359 |
359 storage1->Set(DEFAULTS, "foo", value1); | 360 storage1->Set(DEFAULTS, "foo", value1); |
360 storage2->Set(DEFAULTS, "bar", value2); | 361 storage2->Set(DEFAULTS, "bar", value2); |
(...skipping 11 matching lines...) Expand all Loading... |
372 EXPECT_TRUE(value1.Equals(&change.value())); | 373 EXPECT_TRUE(value1.Equals(&change.value())); |
373 change = sync_processor_->GetOnlyChange("s2", "bar"); | 374 change = sync_processor_->GetOnlyChange("s2", "bar"); |
374 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); | 375 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change.change_type()); |
375 EXPECT_TRUE(value2.Equals(&change.value())); | 376 EXPECT_TRUE(value2.Equals(&change.value())); |
376 | 377 |
377 GetSyncableService(model_type)->StopSyncing(model_type); | 378 GetSyncableService(model_type)->StopSyncing(model_type); |
378 } | 379 } |
379 | 380 |
380 TEST_F(ExtensionSettingsSyncTest, AnySyncDataOverwritesLocalData) { | 381 TEST_F(ExtensionSettingsSyncTest, AnySyncDataOverwritesLocalData) { |
381 syncer::ModelType model_type = syncer::APP_SETTINGS; | 382 syncer::ModelType model_type = syncer::APP_SETTINGS; |
382 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 383 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
383 | 384 |
384 StringValue value1("fooValue"); | 385 StringValue value1("fooValue"); |
385 ListValue value2; | 386 ListValue value2; |
386 value2.Append(StringValue::CreateStringValue("barValue")); | 387 value2.Append(StringValue::CreateStringValue("barValue")); |
387 | 388 |
388 // Maintain dictionaries mirrored to the expected values of the settings in | 389 // Maintain dictionaries mirrored to the expected values of the settings in |
389 // each storage area. | 390 // each storage area. |
390 DictionaryValue expected1, expected2; | 391 DictionaryValue expected1, expected2; |
391 | 392 |
392 // Pre-populate one of the storage areas. | 393 // Pre-populate one of the storage areas. |
(...skipping 19 matching lines...) Expand all Loading... |
412 | 413 |
413 // Sync settings should have been pushed to local settings. | 414 // Sync settings should have been pushed to local settings. |
414 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); | 415 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); |
415 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); | 416 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); |
416 | 417 |
417 GetSyncableService(model_type)->StopSyncing(model_type); | 418 GetSyncableService(model_type)->StopSyncing(model_type); |
418 } | 419 } |
419 | 420 |
420 TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { | 421 TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { |
421 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 422 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
422 Extension::Type type = Extension::TYPE_EXTENSION; | 423 Manifest::Type type = Manifest::TYPE_EXTENSION; |
423 | 424 |
424 StringValue value1("fooValue"); | 425 StringValue value1("fooValue"); |
425 ListValue value2; | 426 ListValue value2; |
426 value2.Append(StringValue::CreateStringValue("barValue")); | 427 value2.Append(StringValue::CreateStringValue("barValue")); |
427 | 428 |
428 // Maintain dictionaries mirrored to the expected values of the settings in | 429 // Maintain dictionaries mirrored to the expected values of the settings in |
429 // each storage area. | 430 // each storage area. |
430 DictionaryValue expected1, expected2; | 431 DictionaryValue expected1, expected2; |
431 | 432 |
432 // Make storage1 initialised from local data, storage2 initialised from sync. | 433 // Make storage1 initialised from local data, storage2 initialised from sync. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 expected2.Remove("foo", NULL); | 486 expected2.Remove("foo", NULL); |
486 | 487 |
487 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); | 488 EXPECT_PRED_FORMAT2(SettingsEq, expected1, storage1->Get()); |
488 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); | 489 EXPECT_PRED_FORMAT2(SettingsEq, expected2, storage2->Get()); |
489 | 490 |
490 GetSyncableService(model_type)->StopSyncing(model_type); | 491 GetSyncableService(model_type)->StopSyncing(model_type); |
491 } | 492 } |
492 | 493 |
493 TEST_F(ExtensionSettingsSyncTest, PushToSync) { | 494 TEST_F(ExtensionSettingsSyncTest, PushToSync) { |
494 syncer::ModelType model_type = syncer::APP_SETTINGS; | 495 syncer::ModelType model_type = syncer::APP_SETTINGS; |
495 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 496 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
496 | 497 |
497 StringValue value1("fooValue"); | 498 StringValue value1("fooValue"); |
498 ListValue value2; | 499 ListValue value2; |
499 value2.Append(StringValue::CreateStringValue("barValue")); | 500 value2.Append(StringValue::CreateStringValue("barValue")); |
500 | 501 |
501 // Make storage1/2 initialised from local data, storage3/4 initialised from | 502 // Make storage1/2 initialised from local data, storage3/4 initialised from |
502 // sync. | 503 // sync. |
503 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); | 504 ValueStore* storage1 = AddExtensionAndGetStorage("s1", type); |
504 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); | 505 ValueStore* storage2 = AddExtensionAndGetStorage("s2", type); |
505 ValueStore* storage3 = AddExtensionAndGetStorage("s3", type); | 506 ValueStore* storage3 = AddExtensionAndGetStorage("s3", type); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 GetSyncableService(model_type)->StopSyncing(model_type); | 633 GetSyncableService(model_type)->StopSyncing(model_type); |
633 } | 634 } |
634 | 635 |
635 TEST_F(ExtensionSettingsSyncTest, ExtensionAndAppSettingsSyncSeparately) { | 636 TEST_F(ExtensionSettingsSyncTest, ExtensionAndAppSettingsSyncSeparately) { |
636 StringValue value1("fooValue"); | 637 StringValue value1("fooValue"); |
637 ListValue value2; | 638 ListValue value2; |
638 value2.Append(StringValue::CreateStringValue("barValue")); | 639 value2.Append(StringValue::CreateStringValue("barValue")); |
639 | 640 |
640 // storage1 is an extension, storage2 is an app. | 641 // storage1 is an extension, storage2 is an app. |
641 ValueStore* storage1 = AddExtensionAndGetStorage( | 642 ValueStore* storage1 = AddExtensionAndGetStorage( |
642 "s1", Extension::TYPE_EXTENSION); | 643 "s1", Manifest::TYPE_EXTENSION); |
643 ValueStore* storage2 = AddExtensionAndGetStorage( | 644 ValueStore* storage2 = AddExtensionAndGetStorage( |
644 "s2", Extension::TYPE_LEGACY_PACKAGED_APP); | 645 "s2", Manifest::TYPE_LEGACY_PACKAGED_APP); |
645 | 646 |
646 storage1->Set(DEFAULTS, "foo", value1); | 647 storage1->Set(DEFAULTS, "foo", value1); |
647 storage2->Set(DEFAULTS, "bar", value2); | 648 storage2->Set(DEFAULTS, "bar", value2); |
648 | 649 |
649 std::map<std::string, SettingSyncDataList> extension_sync_data = | 650 std::map<std::string, SettingSyncDataList> extension_sync_data = |
650 GetAllSyncData(syncer::EXTENSION_SETTINGS); | 651 GetAllSyncData(syncer::EXTENSION_SETTINGS); |
651 EXPECT_EQ(1u, extension_sync_data.size()); | 652 EXPECT_EQ(1u, extension_sync_data.size()); |
652 EXPECT_EQ(1u, extension_sync_data["s1"].size()); | 653 EXPECT_EQ(1u, extension_sync_data["s1"].size()); |
653 EXPECT_PRED_FORMAT2(ValuesEq, &value1, &extension_sync_data["s1"][0].value()); | 654 EXPECT_PRED_FORMAT2(ValuesEq, &value1, &extension_sync_data["s1"][0].value()); |
654 | 655 |
(...skipping 28 matching lines...) Expand all Loading... |
683 sync_data, | 684 sync_data, |
684 app_settings_delegate_.PassAs<syncer::SyncChangeProcessor>(), | 685 app_settings_delegate_.PassAs<syncer::SyncChangeProcessor>(), |
685 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 686 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
686 GetSyncableService(syncer::APP_SETTINGS)-> | 687 GetSyncableService(syncer::APP_SETTINGS)-> |
687 StopSyncing(syncer::APP_SETTINGS); | 688 StopSyncing(syncer::APP_SETTINGS); |
688 EXPECT_EQ(0u, sync_processor_->changes().size()); | 689 EXPECT_EQ(0u, sync_processor_->changes().size()); |
689 } | 690 } |
690 | 691 |
691 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) { | 692 TEST_F(ExtensionSettingsSyncTest, FailingStartSyncingDisablesSync) { |
692 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 693 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
693 Extension::Type type = Extension::TYPE_EXTENSION; | 694 Manifest::Type type = Manifest::TYPE_EXTENSION; |
694 | 695 |
695 StringValue fooValue("fooValue"); | 696 StringValue fooValue("fooValue"); |
696 StringValue barValue("barValue"); | 697 StringValue barValue("barValue"); |
697 | 698 |
698 // 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; |
699 // hand out TestingValueStore object then toggle them failing/succeeding | 700 // hand out TestingValueStore object then toggle them failing/succeeding |
700 // as necessary. | 701 // as necessary. |
701 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 702 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
702 storage_factory_->Reset(testing_factory); | 703 storage_factory_->Reset(testing_factory); |
703 | 704 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 DictionaryValue dict; | 884 DictionaryValue dict; |
884 dict.Set("bar", fooValue.DeepCopy()); | 885 dict.Set("bar", fooValue.DeepCopy()); |
885 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 886 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
886 } | 887 } |
887 } | 888 } |
888 | 889 |
889 TEST_F(ExtensionSettingsSyncTest, FailingProcessChangesDisablesSync) { | 890 TEST_F(ExtensionSettingsSyncTest, FailingProcessChangesDisablesSync) { |
890 // The test above tests a failing ProcessSyncChanges too, but here test with | 891 // The test above tests a failing ProcessSyncChanges too, but here test with |
891 // an initially passing MergeDataAndStartSyncing. | 892 // an initially passing MergeDataAndStartSyncing. |
892 syncer::ModelType model_type = syncer::APP_SETTINGS; | 893 syncer::ModelType model_type = syncer::APP_SETTINGS; |
893 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 894 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
894 | 895 |
895 StringValue fooValue("fooValue"); | 896 StringValue fooValue("fooValue"); |
896 StringValue barValue("barValue"); | 897 StringValue barValue("barValue"); |
897 | 898 |
898 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 899 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
899 storage_factory_->Reset(testing_factory); | 900 storage_factory_->Reset(testing_factory); |
900 | 901 |
901 ValueStore* good = AddExtensionAndGetStorage("good", type); | 902 ValueStore* good = AddExtensionAndGetStorage("good", type); |
902 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 903 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
903 | 904 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 } | 982 } |
982 { | 983 { |
983 DictionaryValue dict; | 984 DictionaryValue dict; |
984 dict.Set("foo", barValue.DeepCopy()); | 985 dict.Set("foo", barValue.DeepCopy()); |
985 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); | 986 EXPECT_PRED_FORMAT2(SettingsEq, dict, bad->Get()); |
986 } | 987 } |
987 } | 988 } |
988 | 989 |
989 TEST_F(ExtensionSettingsSyncTest, FailingGetAllSyncDataDoesntStopSync) { | 990 TEST_F(ExtensionSettingsSyncTest, FailingGetAllSyncDataDoesntStopSync) { |
990 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 991 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
991 Extension::Type type = Extension::TYPE_EXTENSION; | 992 Manifest::Type type = Manifest::TYPE_EXTENSION; |
992 | 993 |
993 StringValue fooValue("fooValue"); | 994 StringValue fooValue("fooValue"); |
994 StringValue barValue("barValue"); | 995 StringValue barValue("barValue"); |
995 | 996 |
996 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 997 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
997 storage_factory_->Reset(testing_factory); | 998 storage_factory_->Reset(testing_factory); |
998 | 999 |
999 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1000 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1000 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1001 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1001 | 1002 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 syncer::SyncChange::ACTION_ADD, | 1037 syncer::SyncChange::ACTION_ADD, |
1037 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1038 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
1038 EXPECT_EQ( | 1039 EXPECT_EQ( |
1039 syncer::SyncChange::ACTION_ADD, | 1040 syncer::SyncChange::ACTION_ADD, |
1040 sync_processor_->GetOnlyChange("bad", "bar").change_type()); | 1041 sync_processor_->GetOnlyChange("bad", "bar").change_type()); |
1041 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1042 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1042 } | 1043 } |
1043 | 1044 |
1044 TEST_F(ExtensionSettingsSyncTest, FailureToReadChangesToPushDisablesSync) { | 1045 TEST_F(ExtensionSettingsSyncTest, FailureToReadChangesToPushDisablesSync) { |
1045 syncer::ModelType model_type = syncer::APP_SETTINGS; | 1046 syncer::ModelType model_type = syncer::APP_SETTINGS; |
1046 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 1047 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
1047 | 1048 |
1048 StringValue fooValue("fooValue"); | 1049 StringValue fooValue("fooValue"); |
1049 StringValue barValue("barValue"); | 1050 StringValue barValue("barValue"); |
1050 | 1051 |
1051 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 1052 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1052 storage_factory_->Reset(testing_factory); | 1053 storage_factory_->Reset(testing_factory); |
1053 | 1054 |
1054 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1055 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1055 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1056 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1056 | 1057 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1140 syncer::SyncChange::ACTION_UPDATE, | 1141 syncer::SyncChange::ACTION_UPDATE, |
1141 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1142 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
1142 EXPECT_EQ( | 1143 EXPECT_EQ( |
1143 syncer::SyncChange::ACTION_UPDATE, | 1144 syncer::SyncChange::ACTION_UPDATE, |
1144 sync_processor_->GetOnlyChange("good", "bar").change_type()); | 1145 sync_processor_->GetOnlyChange("good", "bar").change_type()); |
1145 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1146 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1146 } | 1147 } |
1147 | 1148 |
1148 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalStateDisablesSync) { | 1149 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalStateDisablesSync) { |
1149 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 1150 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
1150 Extension::Type type = Extension::TYPE_EXTENSION; | 1151 Manifest::Type type = Manifest::TYPE_EXTENSION; |
1151 | 1152 |
1152 StringValue fooValue("fooValue"); | 1153 StringValue fooValue("fooValue"); |
1153 StringValue barValue("barValue"); | 1154 StringValue barValue("barValue"); |
1154 | 1155 |
1155 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 1156 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1156 storage_factory_->Reset(testing_factory); | 1157 storage_factory_->Reset(testing_factory); |
1157 | 1158 |
1158 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1159 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1159 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1160 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1160 | 1161 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 syncer::SyncChange::ACTION_UPDATE, | 1232 syncer::SyncChange::ACTION_UPDATE, |
1232 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1233 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
1233 EXPECT_EQ( | 1234 EXPECT_EQ( |
1234 syncer::SyncChange::ACTION_UPDATE, | 1235 syncer::SyncChange::ACTION_UPDATE, |
1235 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1236 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
1236 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1237 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1237 } | 1238 } |
1238 | 1239 |
1239 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalChangeDisablesSync) { | 1240 TEST_F(ExtensionSettingsSyncTest, FailureToPushLocalChangeDisablesSync) { |
1240 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 1241 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
1241 Extension::Type type = Extension::TYPE_EXTENSION; | 1242 Manifest::Type type = Manifest::TYPE_EXTENSION; |
1242 | 1243 |
1243 StringValue fooValue("fooValue"); | 1244 StringValue fooValue("fooValue"); |
1244 StringValue barValue("barValue"); | 1245 StringValue barValue("barValue"); |
1245 | 1246 |
1246 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); | 1247 TestingValueStoreFactory* testing_factory = new TestingValueStoreFactory(); |
1247 storage_factory_->Reset(testing_factory); | 1248 storage_factory_->Reset(testing_factory); |
1248 | 1249 |
1249 ValueStore* good = AddExtensionAndGetStorage("good", type); | 1250 ValueStore* good = AddExtensionAndGetStorage("good", type); |
1250 ValueStore* bad = AddExtensionAndGetStorage("bad", type); | 1251 ValueStore* bad = AddExtensionAndGetStorage("bad", type); |
1251 | 1252 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1329 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1330 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
1330 EXPECT_EQ( | 1331 EXPECT_EQ( |
1331 syncer::SyncChange::ACTION_UPDATE, | 1332 syncer::SyncChange::ACTION_UPDATE, |
1332 sync_processor_->GetOnlyChange("good", "foo").change_type()); | 1333 sync_processor_->GetOnlyChange("good", "foo").change_type()); |
1333 EXPECT_EQ(2u, sync_processor_->changes().size()); | 1334 EXPECT_EQ(2u, sync_processor_->changes().size()); |
1334 } | 1335 } |
1335 | 1336 |
1336 TEST_F(ExtensionSettingsSyncTest, | 1337 TEST_F(ExtensionSettingsSyncTest, |
1337 LargeOutgoingChangeRejectedButIncomingAccepted) { | 1338 LargeOutgoingChangeRejectedButIncomingAccepted) { |
1338 syncer::ModelType model_type = syncer::APP_SETTINGS; | 1339 syncer::ModelType model_type = syncer::APP_SETTINGS; |
1339 Extension::Type type = Extension::TYPE_LEGACY_PACKAGED_APP; | 1340 Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP; |
1340 | 1341 |
1341 // This value should be larger than the limit in settings_backend.cc. | 1342 // This value should be larger than the limit in settings_backend.cc. |
1342 std::string string_5k; | 1343 std::string string_5k; |
1343 for (size_t i = 0; i < 5000; ++i) { | 1344 for (size_t i = 0; i < 5000; ++i) { |
1344 string_5k.append("a"); | 1345 string_5k.append("a"); |
1345 } | 1346 } |
1346 StringValue large_value(string_5k); | 1347 StringValue large_value(string_5k); |
1347 | 1348 |
1348 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1349 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
1349 model_type, | 1350 model_type, |
(...skipping 21 matching lines...) Expand all Loading... |
1371 expected.Set("large_value", large_value.DeepCopy()); | 1372 expected.Set("large_value", large_value.DeepCopy()); |
1372 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get()); | 1373 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage1->Get()); |
1373 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get()); | 1374 EXPECT_PRED_FORMAT2(SettingsEq, expected, storage2->Get()); |
1374 } | 1375 } |
1375 | 1376 |
1376 GetSyncableService(model_type)->StopSyncing(model_type); | 1377 GetSyncableService(model_type)->StopSyncing(model_type); |
1377 } | 1378 } |
1378 | 1379 |
1379 TEST_F(ExtensionSettingsSyncTest, Dots) { | 1380 TEST_F(ExtensionSettingsSyncTest, Dots) { |
1380 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; | 1381 syncer::ModelType model_type = syncer::EXTENSION_SETTINGS; |
1381 Extension::Type type = Extension::TYPE_EXTENSION; | 1382 Manifest::Type type = Manifest::TYPE_EXTENSION; |
1382 | 1383 |
1383 ValueStore* storage = AddExtensionAndGetStorage("ext", type); | 1384 ValueStore* storage = AddExtensionAndGetStorage("ext", type); |
1384 | 1385 |
1385 { | 1386 { |
1386 syncer::SyncDataList sync_data_list; | 1387 syncer::SyncDataList sync_data_list; |
1387 scoped_ptr<Value> string_value(Value::CreateStringValue("value")); | 1388 scoped_ptr<Value> string_value(Value::CreateStringValue("value")); |
1388 sync_data_list.push_back(settings_sync_util::CreateData( | 1389 sync_data_list.push_back(settings_sync_util::CreateData( |
1389 "ext", "key.with.dot", *string_value, model_type)); | 1390 "ext", "key.with.dot", *string_value, model_type)); |
1390 | 1391 |
1391 GetSyncableService(model_type)->MergeDataAndStartSyncing( | 1392 GetSyncableService(model_type)->MergeDataAndStartSyncing( |
(...skipping 24 matching lines...) Expand all Loading... |
1416 ASSERT_EQ(1u, sync_processor_->changes().size()); | 1417 ASSERT_EQ(1u, sync_processor_->changes().size()); |
1417 SettingSyncData sync_data = sync_processor_->changes()[0]; | 1418 SettingSyncData sync_data = sync_processor_->changes()[0]; |
1418 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, sync_data.change_type()); | 1419 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, sync_data.change_type()); |
1419 EXPECT_EQ("ext", sync_data.extension_id()); | 1420 EXPECT_EQ("ext", sync_data.extension_id()); |
1420 EXPECT_EQ("key.with.spot", sync_data.key()); | 1421 EXPECT_EQ("key.with.spot", sync_data.key()); |
1421 EXPECT_TRUE(sync_data.value().Equals(string_value.get())); | 1422 EXPECT_TRUE(sync_data.value().Equals(string_value.get())); |
1422 } | 1423 } |
1423 } | 1424 } |
1424 | 1425 |
1425 } // namespace extensions | 1426 } // namespace extensions |
OLD | NEW |