| 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 |