1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file.
4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#ifndef CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_PREFERENCE_VALIDATION_DELEGATE_H_
66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_PREFERENCE_VALIDATION_DELEGATE_H_
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/compiler_specific.h"
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/macros.h"
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/prefs/tracked/tracked_preference_validation_delegate.h"
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/safe_browsing/incident_reporting/add_incident_callback.h"
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace safe_browsing {
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// A preference validation delegate that adds incidents to a given receiver
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// for preference validation failures.
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class PreferenceValidationDelegate
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    : public TrackedPreferenceValidationDelegate {
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public:
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  explicit PreferenceValidationDelegate(
21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const AddIncidentCallback& add_incident);
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual ~PreferenceValidationDelegate();
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private:
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // TrackedPreferenceValidationDelegate methods.
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void OnAtomicPreferenceValidation(
27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const std::string& pref_path,
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const base::Value* value,
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      PrefHashStoreTransaction::ValueState value_state,
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      TrackedPreferenceHelper::ResetAction reset_action) OVERRIDE;
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void OnSplitPreferenceValidation(
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const std::string& pref_path,
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const base::DictionaryValue* dict_value,
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const std::vector<std::string>& invalid_keys,
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      PrefHashStoreTransaction::ValueState value_state,
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      TrackedPreferenceHelper::ResetAction reset_action) OVERRIDE;
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  AddIncidentCallback add_incident_;
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PreferenceValidationDelegate);
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)};
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}  // namespace safe_browsing
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif  // CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_PREFERENCE_VALIDATION_DELEGATE_H_
46