-#include "chrome/common/pref_names.h"
-
-namespace {
-
-void ReportValidationResult(PrefHashStore::ValueState value_state,
- size_t value_index,
- size_t num_values) {
- switch (value_state) {
- case PrefHashStore::UNCHANGED:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceUnchanged",
- value_index, num_values);
- return;
- case PrefHashStore::CLEARED:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceCleared",
- value_index, num_values);
- return;
- case PrefHashStore::MIGRATED:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceMigrated",
- value_index, num_values);
- return;
- case PrefHashStore::CHANGED:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceChanged",
- value_index, num_values);
- return;
- case PrefHashStore::UNTRUSTED_UNKNOWN_VALUE:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceInitialized",
- value_index, num_values);
- return;
- case PrefHashStore::TRUSTED_UNKNOWN_VALUE:
- UMA_HISTOGRAM_ENUMERATION("Settings.TrackedPreferenceTrustedInitialized",
- value_index, num_values);
- return;
- }
- NOTREACHED() << "Unexpected PrefHashStore::ValueState: " << value_state;
-}
-
-} // namespace
-
-PrefHashFilter::PrefHashFilter(scoped_ptr<PrefHashStore> pref_hash_store,
- const TrackedPreference tracked_preferences[],
- size_t tracked_preferences_size,
- size_t reporting_ids_count,
- EnforcementLevel enforcement_level)
- : pref_hash_store_(pref_hash_store.Pass()),
- reporting_ids_count_(reporting_ids_count),
- enforce_(enforcement_level >= ENFORCE),
- no_seeding_(enforcement_level >= ENFORCE_NO_SEEDING),
- no_migration_(enforcement_level >= ENFORCE_NO_SEEDING_NO_MIGRATION) {
+#include "chrome/browser/prefs/pref_hash_store_transaction.h"
+#include "chrome/browser/prefs/tracked/tracked_atomic_preference.h"
+#include "chrome/browser/prefs/tracked/tracked_split_preference.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,
+ const base::Closure& reset_callback)
+ : pref_hash_store_(pref_hash_store.Pass()),
+ reset_callback_(reset_callback) {
+ DCHECK(pref_hash_store_);