Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5222)

Unified Diff: chrome/browser/prefs/pref_hash_filter.h

Issue 151003004: Add an automatic settings reset banner. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved reset logic to chrome_pref_service_factory Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prefs/pref_hash_filter.h
diff --git a/chrome/browser/prefs/pref_hash_filter.h b/chrome/browser/prefs/pref_hash_filter.h
index 38caa89494c46290e20f30180868c4d00ead0e24..f67e9bff95e58266a10036af5819c5d1cb8151c7 100644
--- a/chrome/browser/prefs/pref_hash_filter.h
+++ b/chrome/browser/prefs/pref_hash_filter.h
@@ -10,6 +10,8 @@
#include <string>
#include "base/basictypes.h"
+#include "base/bind.h"
+#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/containers/scoped_ptr_hash_map.h"
#include "base/memory/scoped_ptr.h"
@@ -17,6 +19,7 @@
#include "chrome/browser/prefs/pref_hash_store.h"
#include "chrome/browser/prefs/tracked/tracked_preference.h"
+class PrefRegistrySimple;
class PrefStore;
namespace base {
@@ -29,6 +32,8 @@ class Value;
// are changed.
class PrefHashFilter : public PrefFilter {
public:
+ typedef base::Callback<void(void)> PrefResetCallback;
+
// Enforcement levels are defined in order of intensity; the next level always
// implies the previous one and more.
enum EnforcementLevel {
@@ -65,15 +70,19 @@ class PrefHashFilter : public PrefFilter {
// |reporting_ids_count| is the count of all possible IDs (possibly greater
// than |tracked_preferences_size|). |enforcement_level| determines when this
// filter will enforce factory defaults upon detecting an untrusted preference
- // value.
+ // value. |reset_callback| is called when a reset event occurs.
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);
virtual ~PrefHashFilter();
+ // Registers required local state preferences.
+ static void RegisterPrefs(PrefRegistrySimple* registry);
+
// Initializes the PrefHashStore with hashes of the tracked preferences
// in |pref_store|.
void Initialize(PrefStore* pref_store);
@@ -85,6 +94,11 @@ class PrefHashFilter : public PrefFilter {
virtual void FilterSerializeData(
const base::DictionaryValue* pref_store_contents) OVERRIDE;
+ protected:
+ // Called when it is determined that a reset event has occurred. Exposed as
+ // protected for testing.
+ virtual void WriteResetEvent();
+
private:
// A map of paths to TrackedPreferences; this map owns this individual
// TrackedPreference objects.
@@ -107,6 +121,8 @@ class PrefHashFilter : public PrefFilter {
// FilterSerializeData.
ChangedPathsMap changed_paths_;
+ PrefResetCallback reset_callback_;
+
DISALLOW_COPY_AND_ASSIGN(PrefHashFilter);
};

Powered by Google App Engine
This is Rietveld 408576698