| 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 <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/callback.h" | 10 #include "base/callback.h" |
| 9 #include "base/macros.h" | 11 #include "base/macros.h" |
| 10 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 11 #include "base/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
| 12 #include "base/values.h" | 14 #include "base/values.h" |
| 13 #include "components/user_prefs/tracked/dictionary_hash_store_contents.h" | 15 #include "components/user_prefs/tracked/dictionary_hash_store_contents.h" |
| 14 #include "components/user_prefs/tracked/hash_store_contents.h" | 16 #include "components/user_prefs/tracked/hash_store_contents.h" |
| 15 #include "components/user_prefs/tracked/interceptable_pref_filter.h" | 17 #include "components/user_prefs/tracked/interceptable_pref_filter.h" |
| 16 #include "components/user_prefs/tracked/pref_hash_store.h" | 18 #include "components/user_prefs/tracked/pref_hash_store.h" |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 InterceptablePrefFilter* unprotected_pref_filter, | 222 InterceptablePrefFilter* unprotected_pref_filter, |
| 221 InterceptablePrefFilter* protected_pref_filter) | 223 InterceptablePrefFilter* protected_pref_filter) |
| 222 : unprotected_pref_names_(unprotected_pref_names), | 224 : unprotected_pref_names_(unprotected_pref_names), |
| 223 protected_pref_names_(protected_pref_names), | 225 protected_pref_names_(protected_pref_names), |
| 224 unprotected_store_cleaner_(unprotected_store_cleaner), | 226 unprotected_store_cleaner_(unprotected_store_cleaner), |
| 225 protected_store_cleaner_(protected_store_cleaner), | 227 protected_store_cleaner_(protected_store_cleaner), |
| 226 register_on_successful_unprotected_store_write_callback_( | 228 register_on_successful_unprotected_store_write_callback_( |
| 227 register_on_successful_unprotected_store_write_callback), | 229 register_on_successful_unprotected_store_write_callback), |
| 228 register_on_successful_protected_store_write_callback_( | 230 register_on_successful_protected_store_write_callback_( |
| 229 register_on_successful_protected_store_write_callback), | 231 register_on_successful_protected_store_write_callback), |
| 230 unprotected_pref_hash_store_(unprotected_pref_hash_store.Pass()), | 232 unprotected_pref_hash_store_(std::move(unprotected_pref_hash_store)), |
| 231 protected_pref_hash_store_(protected_pref_hash_store.Pass()), | 233 protected_pref_hash_store_(std::move(protected_pref_hash_store)), |
| 232 legacy_pref_hash_store_(legacy_pref_hash_store.Pass()) { | 234 legacy_pref_hash_store_(std::move(legacy_pref_hash_store)) { |
| 233 // The callbacks bound below will own this TrackedPreferencesMigrator by | 235 // The callbacks bound below will own this TrackedPreferencesMigrator by |
| 234 // reference. | 236 // reference. |
| 235 unprotected_pref_filter->InterceptNextFilterOnLoad( | 237 unprotected_pref_filter->InterceptNextFilterOnLoad( |
| 236 base::Bind(&TrackedPreferencesMigrator::InterceptFilterOnLoad, | 238 base::Bind(&TrackedPreferencesMigrator::InterceptFilterOnLoad, |
| 237 this, | 239 this, |
| 238 UNPROTECTED_PREF_FILTER)); | 240 UNPROTECTED_PREF_FILTER)); |
| 239 protected_pref_filter->InterceptNextFilterOnLoad( | 241 protected_pref_filter->InterceptNextFilterOnLoad( |
| 240 base::Bind(&TrackedPreferencesMigrator::InterceptFilterOnLoad, | 242 base::Bind(&TrackedPreferencesMigrator::InterceptFilterOnLoad, |
| 241 this, | 243 this, |
| 242 PROTECTED_PREF_FILTER)); | 244 PROTECTED_PREF_FILTER)); |
| 243 } | 245 } |
| 244 | 246 |
| 245 TrackedPreferencesMigrator::~TrackedPreferencesMigrator() {} | 247 TrackedPreferencesMigrator::~TrackedPreferencesMigrator() {} |
| 246 | 248 |
| 247 void TrackedPreferencesMigrator::InterceptFilterOnLoad( | 249 void TrackedPreferencesMigrator::InterceptFilterOnLoad( |
| 248 PrefFilterID id, | 250 PrefFilterID id, |
| 249 const InterceptablePrefFilter::FinalizeFilterOnLoadCallback& | 251 const InterceptablePrefFilter::FinalizeFilterOnLoadCallback& |
| 250 finalize_filter_on_load, | 252 finalize_filter_on_load, |
| 251 scoped_ptr<base::DictionaryValue> prefs) { | 253 scoped_ptr<base::DictionaryValue> prefs) { |
| 252 switch (id) { | 254 switch (id) { |
| 253 case UNPROTECTED_PREF_FILTER: | 255 case UNPROTECTED_PREF_FILTER: |
| 254 finalize_unprotected_filter_on_load_ = finalize_filter_on_load; | 256 finalize_unprotected_filter_on_load_ = finalize_filter_on_load; |
| 255 unprotected_prefs_ = prefs.Pass(); | 257 unprotected_prefs_ = std::move(prefs); |
| 256 break; | 258 break; |
| 257 case PROTECTED_PREF_FILTER: | 259 case PROTECTED_PREF_FILTER: |
| 258 finalize_protected_filter_on_load_ = finalize_filter_on_load; | 260 finalize_protected_filter_on_load_ = finalize_filter_on_load; |
| 259 protected_prefs_ = prefs.Pass(); | 261 protected_prefs_ = std::move(prefs); |
| 260 break; | 262 break; |
| 261 } | 263 } |
| 262 | 264 |
| 263 MigrateIfReady(); | 265 MigrateIfReady(); |
| 264 } | 266 } |
| 265 | 267 |
| 266 void TrackedPreferencesMigrator::MigrateIfReady() { | 268 void TrackedPreferencesMigrator::MigrateIfReady() { |
| 267 // Wait for both stores to have been read before proceeding. | 269 // Wait for both stores to have been read before proceeding. |
| 268 if (!protected_prefs_ || !unprotected_prefs_) | 270 if (!protected_prefs_ || !unprotected_prefs_) |
| 269 return; | 271 return; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 CleanupMigratedHashes(unprotected_pref_names_, | 304 CleanupMigratedHashes(unprotected_pref_names_, |
| 303 protected_pref_hash_store_.get(), | 305 protected_pref_hash_store_.get(), |
| 304 protected_prefs_.get()); | 306 protected_prefs_.get()); |
| 305 CleanupMigratedHashes(protected_pref_names_, | 307 CleanupMigratedHashes(protected_pref_names_, |
| 306 unprotected_pref_hash_store_.get(), | 308 unprotected_pref_hash_store_.get(), |
| 307 unprotected_prefs_.get()); | 309 unprotected_prefs_.get()); |
| 308 legacy_pref_hash_store_->Reset(); | 310 legacy_pref_hash_store_->Reset(); |
| 309 } | 311 } |
| 310 | 312 |
| 311 // Hand the processed prefs back to their respective filters. | 313 // Hand the processed prefs back to their respective filters. |
| 312 finalize_unprotected_filter_on_load_.Run(unprotected_prefs_.Pass(), | 314 finalize_unprotected_filter_on_load_.Run(std::move(unprotected_prefs_), |
| 313 unprotected_prefs_altered); | 315 unprotected_prefs_altered); |
| 314 finalize_protected_filter_on_load_.Run(protected_prefs_.Pass(), | 316 finalize_protected_filter_on_load_.Run(std::move(protected_prefs_), |
| 315 protected_prefs_altered); | 317 protected_prefs_altered); |
| 316 | 318 |
| 317 if (unprotected_prefs_need_cleanup) { | 319 if (unprotected_prefs_need_cleanup) { |
| 318 // Schedule a cleanup of the |protected_pref_names_| from the unprotected | 320 // Schedule a cleanup of the |protected_pref_names_| from the unprotected |
| 319 // prefs once the protected prefs were successfully written to disk (or | 321 // prefs once the protected prefs were successfully written to disk (or |
| 320 // do it immediately if |!protected_prefs_altered|). | 322 // do it immediately if |!protected_prefs_altered|). |
| 321 ScheduleSourcePrefStoreCleanup( | 323 ScheduleSourcePrefStoreCleanup( |
| 322 register_on_successful_protected_store_write_callback_, | 324 register_on_successful_protected_store_write_callback_, |
| 323 unprotected_store_cleaner_, | 325 unprotected_store_cleaner_, |
| 324 protected_pref_names_, | 326 protected_pref_names_, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 349 register_on_successful_unprotected_store_write_callback, | 351 register_on_successful_unprotected_store_write_callback, |
| 350 const base::Callback<void(const base::Closure&)>& | 352 const base::Callback<void(const base::Closure&)>& |
| 351 register_on_successful_protected_store_write_callback, | 353 register_on_successful_protected_store_write_callback, |
| 352 scoped_ptr<PrefHashStore> unprotected_pref_hash_store, | 354 scoped_ptr<PrefHashStore> unprotected_pref_hash_store, |
| 353 scoped_ptr<PrefHashStore> protected_pref_hash_store, | 355 scoped_ptr<PrefHashStore> protected_pref_hash_store, |
| 354 scoped_ptr<HashStoreContents> legacy_pref_hash_store, | 356 scoped_ptr<HashStoreContents> legacy_pref_hash_store, |
| 355 InterceptablePrefFilter* unprotected_pref_filter, | 357 InterceptablePrefFilter* unprotected_pref_filter, |
| 356 InterceptablePrefFilter* protected_pref_filter) { | 358 InterceptablePrefFilter* protected_pref_filter) { |
| 357 scoped_refptr<TrackedPreferencesMigrator> prefs_migrator( | 359 scoped_refptr<TrackedPreferencesMigrator> prefs_migrator( |
| 358 new TrackedPreferencesMigrator( | 360 new TrackedPreferencesMigrator( |
| 359 unprotected_pref_names, | 361 unprotected_pref_names, protected_pref_names, |
| 360 protected_pref_names, | 362 unprotected_store_cleaner, protected_store_cleaner, |
| 361 unprotected_store_cleaner, | |
| 362 protected_store_cleaner, | |
| 363 register_on_successful_unprotected_store_write_callback, | 363 register_on_successful_unprotected_store_write_callback, |
| 364 register_on_successful_protected_store_write_callback, | 364 register_on_successful_protected_store_write_callback, |
| 365 unprotected_pref_hash_store.Pass(), | 365 std::move(unprotected_pref_hash_store), |
| 366 protected_pref_hash_store.Pass(), | 366 std::move(protected_pref_hash_store), |
| 367 legacy_pref_hash_store.Pass(), | 367 std::move(legacy_pref_hash_store), unprotected_pref_filter, |
| 368 unprotected_pref_filter, | |
| 369 protected_pref_filter)); | 368 protected_pref_filter)); |
| 370 } | 369 } |
| OLD | NEW |