| 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 5a2dc7c8410c4f0294c28fcf002cc67382e8e964..36392ce05e929a467ecd06502d7df3fd213289e7 100644
|
| --- a/chrome/browser/prefs/pref_hash_filter.cc
|
| +++ b/chrome/browser/prefs/pref_hash_filter.cc
|
| @@ -20,8 +20,10 @@ PrefHashFilter::PrefHashFilter(
|
| const TrackedPreferenceMetadata tracked_preferences[],
|
| size_t tracked_preferences_size,
|
| size_t reporting_ids_count,
|
| - EnforcementLevel enforcement_level) :
|
| - pref_hash_store_(pref_hash_store.Pass()) {
|
| + EnforcementLevel enforcement_level,
|
| + const base::Closure& reset_callback)
|
| + : pref_hash_store_(pref_hash_store.Pass()),
|
| + reset_callback_(reset_callback) {
|
| DCHECK(pref_hash_store_);
|
| DCHECK_GE(reporting_ids_count, tracked_preferences_size);
|
|
|
| @@ -78,15 +80,23 @@ void PrefHashFilter::Initialize(const 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;
|
| {
|
| scoped_ptr<PrefHashStoreTransaction> hash_store_transaction(
|
| pref_hash_store_->BeginTransaction());
|
| for (TrackedPreferencesMap::const_iterator it = tracked_paths_.begin();
|
| it != tracked_paths_.end(); ++it) {
|
| - it->second->EnforceAndReport(pref_store_contents,
|
| - hash_store_transaction.get());
|
| + if (it->second->EnforceAndReport(pref_store_contents,
|
| + hash_store_transaction.get())) {
|
| + 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.
|
|
|