tracked_split_preference.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef SERVICES_PREFERENCES_TRACKED_TRACKED_SPLIT_PREFERENCE_H_
  5. #define SERVICES_PREFERENCES_TRACKED_TRACKED_SPLIT_PREFERENCE_H_
  6. #include <stddef.h>
  7. #include <string>
  8. #include "base/compiler_specific.h"
  9. #include "base/memory/raw_ptr.h"
  10. #include "services/preferences/tracked/pref_hash_filter.h"
  11. #include "services/preferences/tracked/tracked_preference.h"
  12. #include "services/preferences/tracked/tracked_preference_helper.h"
  13. namespace prefs {
  14. namespace mojom {
  15. class TrackedPreferenceValidationDelegate;
  16. }
  17. }
  18. // A TrackedSplitPreference must be tracking a dictionary pref. Each top-level
  19. // entry in its dictionary is tracked and enforced independently. An optional
  20. // delegate is notified of the status of the preference during enforcement.
  21. class TrackedSplitPreference : public TrackedPreference {
  22. public:
  23. // Constructs a TrackedSplitPreference. |pref_path| must be a dictionary pref.
  24. TrackedSplitPreference(
  25. const std::string& pref_path,
  26. size_t reporting_id,
  27. size_t reporting_ids_count,
  28. prefs::mojom::TrackedPreferenceMetadata::EnforcementLevel
  29. enforcement_level,
  30. prefs::mojom::TrackedPreferenceMetadata::ValueType value_type,
  31. prefs::mojom::TrackedPreferenceValidationDelegate* delegate);
  32. TrackedSplitPreference(const TrackedSplitPreference&) = delete;
  33. TrackedSplitPreference& operator=(const TrackedSplitPreference&) = delete;
  34. // TrackedPreference implementation.
  35. TrackedPreferenceType GetType() const override;
  36. void OnNewValue(const base::Value* value,
  37. PrefHashStoreTransaction* transaction) const override;
  38. bool EnforceAndReport(
  39. base::DictionaryValue* pref_store_contents,
  40. PrefHashStoreTransaction* transaction,
  41. PrefHashStoreTransaction* external_validation_transaction) const override;
  42. private:
  43. const std::string pref_path_;
  44. const TrackedPreferenceHelper helper_;
  45. raw_ptr<prefs::mojom::TrackedPreferenceValidationDelegate> delegate_;
  46. };
  47. #endif // SERVICES_PREFERENCES_TRACKED_TRACKED_SPLIT_PREFERENCE_H_