Chromium Code Reviews| Index: chrome/browser/prefs/profile_pref_store_manager.cc |
| diff --git a/chrome/browser/prefs/profile_pref_store_manager.cc b/chrome/browser/prefs/profile_pref_store_manager.cc |
| index f4264b78014f8d34676a41f65ded519f92d0aa01..edee0251e37f59799cc624f2d7e955928a8b074d 100644 |
| --- a/chrome/browser/prefs/profile_pref_store_manager.cc |
| +++ b/chrome/browser/prefs/profile_pref_store_manager.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/prefs/profile_pref_store_manager.h" |
| #include "base/bind.h" |
| +#include "base/callback.h" |
| #include "base/file_util.h" |
| #include "base/json/json_file_value_serializer.h" |
| #include "base/logging.h" |
| @@ -16,9 +17,11 @@ |
| #include "chrome/browser/prefs/tracked/pref_service_hash_store_contents.h" |
| #include "chrome/browser/prefs/tracked/segregated_pref_store.h" |
| #include "chrome/browser/prefs/tracked/tracked_preferences_migration.h" |
| +#include "chrome/browser/sync/glue/sync_start_util.h" |
| #include "chrome/common/chrome_constants.h" |
| #include "chrome/common/pref_names.h" |
| #include "components/pref_registry/pref_registry_syncable.h" |
| +#include "sync/internal_api/public/base/model_type.h" |
| // TODO(erikwright): Enable this on Chrome OS and Android once MACs are moved |
| // out of Local State. This will resolve a race condition on Android and a |
| @@ -108,15 +111,27 @@ PersistentPrefStore* ProfilePrefStoreManager::CreateProfilePrefStore( |
| } |
| } |
| + // Used to kick sync early in case of a reset event. This is done since sync |
| + // may bring back the user's server value post-reset which could potentially |
| + // cause a "settings flash" between the factory default and the |
| + // re-instantiated server value. Starting sync ASAP minimizes the window |
| + // before the server value is re-instantiated (this window can otherwise be |
| + // as long as 10 seconds by default). |
| + const base::Closure start_sync_flare_for_prefs = |
|
erikwright (departed)
2014/07/16 20:23:43
This should be a dependency passed in by chrome_pr
gab
2014/07/16 20:30:39
How is it more testable? I thought about it, but I
|
| + base::Bind(sync_start_util::GetFlareForSyncableService(profile_path_), |
| + syncer::PREFERENCES); |
| + |
| scoped_ptr<PrefHashFilter> unprotected_pref_hash_filter( |
| new PrefHashFilter(GetPrefHashStore(false), |
| unprotected_configuration, |
| + base::Closure(), |
| validation_delegate, |
| reporting_ids_count_, |
| false)); |
| scoped_ptr<PrefHashFilter> protected_pref_hash_filter( |
| new PrefHashFilter(GetPrefHashStore(true), |
| protected_configuration, |
| + start_sync_flare_for_prefs, |
| validation_delegate, |
| reporting_ids_count_, |
| true)); |
| @@ -175,6 +190,7 @@ bool ProfilePrefStoreManager::InitializePrefsFromMasterPrefs( |
| to_serialize = copy.get(); |
| PrefHashFilter(GetPrefHashStore(false), |
| tracking_configuration_, |
| + base::Closure(), |
| NULL, |
| reporting_ids_count_, |
| false).Initialize(copy.get()); |
| @@ -209,6 +225,7 @@ ProfilePrefStoreManager::CreateDeprecatedCombinedProfilePrefStore( |
| pref_filter.reset( |
| new PrefHashFilter(pref_hash_store_impl.PassAs<PrefHashStore>(), |
| tracking_configuration_, |
| + base::Closure(), |
| NULL, |
| reporting_ids_count_, |
| false)); |