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..36e3e2dc86de80c16a4a64407bc7e0a3731b9c45 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 PrefResetCallback& 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. |
@@ -124,3 +142,7 @@ void PrefHashFilter::FilterSerializeData( |
base::TimeTicks::Now() - checkpoint); |
} |
} |
+ |
+void PrefHashFilter::WriteResetEvent() { |
+ |
Bernhard Bauer
2014/02/07 08:14:53
What does this do?
robertshield
2014/02/07 19:08:28
Needlessly occupies valuable screen real estate. S
|
+} |