| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/user_prefs/tracked/tracked_preferences_migration.h" | 5 #include "components/user_prefs/tracked/tracked_preferences_migration.h" | 
| 6 | 6 | 
| 7 #include <set> | 7 #include <set> | 
| 8 #include <string> | 8 #include <string> | 
|  | 9 #include <utility> | 
| 9 #include <vector> | 10 #include <vector> | 
| 10 | 11 | 
| 11 #include "base/bind.h" | 12 #include "base/bind.h" | 
| 12 #include "base/callback.h" | 13 #include "base/callback.h" | 
| 13 #include "base/macros.h" | 14 #include "base/macros.h" | 
| 14 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" | 
| 15 #include "base/prefs/testing_pref_service.h" | 16 #include "base/prefs/testing_pref_service.h" | 
| 16 #include "base/strings/string_split.h" | 17 #include "base/strings/string_split.h" | 
| 17 #include "base/values.h" | 18 #include "base/values.h" | 
| 18 #include "components/user_prefs/tracked/dictionary_hash_store_contents.h" | 19 #include "components/user_prefs/tracked/dictionary_hash_store_contents.h" | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 51       base::DictionaryValue* pref_store_contents) override { | 52       base::DictionaryValue* pref_store_contents) override { | 
| 52     ADD_FAILURE(); | 53     ADD_FAILURE(); | 
| 53   } | 54   } | 
| 54 | 55 | 
| 55  private: | 56  private: | 
| 56   // InterceptablePrefFilter implementation. | 57   // InterceptablePrefFilter implementation. | 
| 57   void FinalizeFilterOnLoad( | 58   void FinalizeFilterOnLoad( | 
| 58       const PostFilterOnLoadCallback& post_filter_on_load_callback, | 59       const PostFilterOnLoadCallback& post_filter_on_load_callback, | 
| 59       scoped_ptr<base::DictionaryValue> pref_store_contents, | 60       scoped_ptr<base::DictionaryValue> pref_store_contents, | 
| 60       bool prefs_altered) override { | 61       bool prefs_altered) override { | 
| 61     post_filter_on_load_callback.Run(pref_store_contents.Pass(), prefs_altered); | 62     post_filter_on_load_callback.Run(std::move(pref_store_contents), | 
|  | 63                                      prefs_altered); | 
| 62   } | 64   } | 
| 63 }; | 65 }; | 
| 64 | 66 | 
| 65 // A test fixture designed to be used like this: | 67 // A test fixture designed to be used like this: | 
| 66 //  1) Set up initial store prefs with PresetStoreValue(). | 68 //  1) Set up initial store prefs with PresetStoreValue(). | 
| 67 //  2) Hand both sets of prefs to the migrator via HandPrefsToMigrator(). | 69 //  2) Hand both sets of prefs to the migrator via HandPrefsToMigrator(). | 
| 68 //  3) Migration completes synchronously when the second store hands its prefs | 70 //  3) Migration completes synchronously when the second store hands its prefs | 
| 69 //     over. | 71 //     over. | 
| 70 //  4) Verifications can be made via various methods of this fixture. | 72 //  4) Verifications can be made via various methods of this fixture. | 
| 71 // Call Reset() to perform a second migration. | 73 // Call Reset() to perform a second migration. | 
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 269                                           static_cast<std::string*>(NULL)); | 271                                           static_cast<std::string*>(NULL)); | 
| 270   } | 272   } | 
| 271 | 273 | 
| 272   // Both stores need to hand their prefs over in order for migration to kick | 274   // Both stores need to hand their prefs over in order for migration to kick | 
| 273   // in. | 275   // in. | 
| 274   void HandPrefsToMigrator(MockPrefStoreID store_id) { | 276   void HandPrefsToMigrator(MockPrefStoreID store_id) { | 
| 275     switch (store_id) { | 277     switch (store_id) { | 
| 276       case MOCK_UNPROTECTED_PREF_STORE: | 278       case MOCK_UNPROTECTED_PREF_STORE: | 
| 277         mock_unprotected_pref_filter_.FilterOnLoad( | 279         mock_unprotected_pref_filter_.FilterOnLoad( | 
| 278             base::Bind(&TrackedPreferencesMigrationTest::GetPrefsBack, | 280             base::Bind(&TrackedPreferencesMigrationTest::GetPrefsBack, | 
| 279                        base::Unretained(this), | 281                        base::Unretained(this), MOCK_UNPROTECTED_PREF_STORE), | 
| 280                        MOCK_UNPROTECTED_PREF_STORE), | 282             std::move(unprotected_prefs_)); | 
| 281             unprotected_prefs_.Pass()); |  | 
| 282         break; | 283         break; | 
| 283       case MOCK_PROTECTED_PREF_STORE: | 284       case MOCK_PROTECTED_PREF_STORE: | 
| 284         mock_protected_pref_filter_.FilterOnLoad( | 285         mock_protected_pref_filter_.FilterOnLoad( | 
| 285             base::Bind(&TrackedPreferencesMigrationTest::GetPrefsBack, | 286             base::Bind(&TrackedPreferencesMigrationTest::GetPrefsBack, | 
| 286                        base::Unretained(this), | 287                        base::Unretained(this), MOCK_PROTECTED_PREF_STORE), | 
| 287                        MOCK_PROTECTED_PREF_STORE), | 288             std::move(protected_prefs_)); | 
| 288             protected_prefs_.Pass()); |  | 
| 289         break; | 289         break; | 
| 290     } | 290     } | 
| 291   } | 291   } | 
| 292 | 292 | 
| 293   bool HasPrefs(MockPrefStoreID store_id) { | 293   bool HasPrefs(MockPrefStoreID store_id) { | 
| 294     switch (store_id) { | 294     switch (store_id) { | 
| 295       case MOCK_UNPROTECTED_PREF_STORE: | 295       case MOCK_UNPROTECTED_PREF_STORE: | 
| 296         return unprotected_prefs_; | 296         return unprotected_prefs_; | 
| 297       case MOCK_PROTECTED_PREF_STORE: | 297       case MOCK_PROTECTED_PREF_STORE: | 
| 298         return protected_prefs_; | 298         return protected_prefs_; | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 349   } | 349   } | 
| 350 | 350 | 
| 351   // Helper given as an InterceptablePrefFilter::FinalizeFilterOnLoadCallback | 351   // Helper given as an InterceptablePrefFilter::FinalizeFilterOnLoadCallback | 
| 352   // to the migrator to be invoked when it's done. | 352   // to the migrator to be invoked when it's done. | 
| 353   void GetPrefsBack(MockPrefStoreID store_id, | 353   void GetPrefsBack(MockPrefStoreID store_id, | 
| 354                     scoped_ptr<base::DictionaryValue> prefs, | 354                     scoped_ptr<base::DictionaryValue> prefs, | 
| 355                     bool prefs_altered) { | 355                     bool prefs_altered) { | 
| 356     switch (store_id) { | 356     switch (store_id) { | 
| 357       case MOCK_UNPROTECTED_PREF_STORE: | 357       case MOCK_UNPROTECTED_PREF_STORE: | 
| 358         EXPECT_FALSE(unprotected_prefs_); | 358         EXPECT_FALSE(unprotected_prefs_); | 
| 359         unprotected_prefs_ = prefs.Pass(); | 359         unprotected_prefs_ = std::move(prefs); | 
| 360         migration_modified_unprotected_store_ = prefs_altered; | 360         migration_modified_unprotected_store_ = prefs_altered; | 
| 361         unprotected_store_migration_complete_ = true; | 361         unprotected_store_migration_complete_ = true; | 
| 362         break; | 362         break; | 
| 363       case MOCK_PROTECTED_PREF_STORE: | 363       case MOCK_PROTECTED_PREF_STORE: | 
| 364         EXPECT_FALSE(protected_prefs_); | 364         EXPECT_FALSE(protected_prefs_); | 
| 365         protected_prefs_ = prefs.Pass(); | 365         protected_prefs_ = std::move(prefs); | 
| 366         migration_modified_protected_store_ = prefs_altered; | 366         migration_modified_protected_store_ = prefs_altered; | 
| 367         protected_store_migration_complete_ = true; | 367         protected_store_migration_complete_ = true; | 
| 368         break; | 368         break; | 
| 369     } | 369     } | 
| 370   } | 370   } | 
| 371 | 371 | 
| 372   // Helper given as a cleaning callback to the migrator. | 372   // Helper given as a cleaning callback to the migrator. | 
| 373   void RemovePathFromStore(MockPrefStoreID store_id, const std::string& key) { | 373   void RemovePathFromStore(MockPrefStoreID store_id, const std::string& key) { | 
| 374     switch (store_id) { | 374     switch (store_id) { | 
| 375       case MOCK_UNPROTECTED_PREF_STORE: | 375       case MOCK_UNPROTECTED_PREF_STORE: | 
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 897                        expected_unprotected_values); | 897                        expected_unprotected_values); | 
| 898 | 898 | 
| 899     base::StringPairs expected_protected_values; | 899     base::StringPairs expected_protected_values; | 
| 900     expected_protected_values.push_back(std::make_pair( | 900     expected_protected_values.push_back(std::make_pair( | 
| 901         kProtectedPref, kProtectedPrefValue)); | 901         kProtectedPref, kProtectedPrefValue)); | 
| 902     expected_protected_values.push_back(std::make_pair( | 902     expected_protected_values.push_back(std::make_pair( | 
| 903         kPreviouslyUnprotectedPref, kPreviouslyUnprotectedPrefValue)); | 903         kPreviouslyUnprotectedPref, kPreviouslyUnprotectedPrefValue)); | 
| 904     VerifyValuesStored(MOCK_PROTECTED_PREF_STORE, expected_protected_values); | 904     VerifyValuesStored(MOCK_PROTECTED_PREF_STORE, expected_protected_values); | 
| 905   } | 905   } | 
| 906 } | 906 } | 
| OLD | NEW | 
|---|