| Index: chrome/browser/prefs/pref_hash_filter.cc
|
| diff --git a/chrome/browser/prefs/pref_hash_filter.cc b/chrome/browser/prefs/pref_hash_filter.cc
|
| index 1935708f9e22ca39964f2580d8dd402d1d39d9b9..e91ed2015ee527acc6d40d4272757f3558f8cd8f 100644
|
| --- a/chrome/browser/prefs/pref_hash_filter.cc
|
| +++ b/chrome/browser/prefs/pref_hash_filter.cc
|
| @@ -4,20 +4,26 @@
|
|
|
| #include "chrome/browser/prefs/pref_hash_filter.h"
|
|
|
| +#include "base/callback.h"
|
| #include "base/logging.h"
|
| #include "base/metrics/histogram.h"
|
| +#include "base/prefs/pref_registry_simple.h"
|
| +#include "base/prefs/pref_service.h"
|
| #include "base/prefs/pref_store.h"
|
| #include "base/time/time.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/prefs/tracked/tracked_atomic_preference.h"
|
| #include "chrome/browser/prefs/tracked/tracked_split_preference.h"
|
| +#include "chrome/common/pref_names.h"
|
|
|
| PrefHashFilter::PrefHashFilter(
|
| scoped_ptr<PrefHashStore> pref_hash_store,
|
| const TrackedPreferenceMetadata tracked_preferences[],
|
| size_t tracked_preferences_size,
|
| size_t reporting_ids_count,
|
| - EnforcementLevel enforcement_level) {
|
| + EnforcementLevel enforcement_level,
|
| + const base::Closure& reset_callback) : reset_callback_(reset_callback) {
|
| DCHECK(pref_hash_store);
|
| DCHECK_GE(reporting_ids_count, tracked_preferences_size);
|
|
|
| @@ -63,6 +69,12 @@ PrefHashFilter::~PrefHashFilter() {
|
| DCHECK(changed_paths_.empty());
|
| }
|
|
|
| +void PrefHashFilter::RegisterPrefs(PrefRegistrySimple* registry) {
|
| + // Register the pref that maintains state about the last time a reset event
|
| + // occurred. Used to decide whether to show UI.
|
| + registry->RegisterInt64Pref(prefs::kProfilePreferenceResetTime, 0L);
|
| +}
|
| +
|
| void PrefHashFilter::Initialize(PrefStore* pref_store) {
|
| UMA_HISTOGRAM_BOOLEAN(
|
| "Settings.TrackedPreferencesInitializedForUnloadedProfile", true);
|
| @@ -82,10 +94,16 @@ void PrefHashFilter::Initialize(PrefStore* pref_store) {
|
| void PrefHashFilter::FilterOnLoad(base::DictionaryValue* pref_store_contents) {
|
| DCHECK(pref_store_contents);
|
| base::TimeTicks checkpoint = base::TimeTicks::Now();
|
| + bool did_reset = false;
|
| for (TrackedPreferencesMap::const_iterator it = tracked_paths_.begin();
|
| it != tracked_paths_.end(); ++it) {
|
| - it->second->EnforceAndReport(pref_store_contents);
|
| + if (it->second->EnforceAndReport(pref_store_contents))
|
| + did_reset = true;
|
| }
|
| +
|
| + if (did_reset)
|
| + reset_callback_.Run();
|
| +
|
| // TODO(gab): Remove this histogram by Feb 21 2014; after sufficient timing
|
| // data has been gathered from the wild to be confident this doesn't
|
| // significantly affect startup.
|
|
|