• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
5 #ifndef CHROME_BROWSER_PREFS_MOCK_VALIDATION_DELEGATE_H_
6 #define CHROME_BROWSER_PREFS_MOCK_VALIDATION_DELEGATE_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "base/compiler_specific.h"
12 #include "base/macros.h"
13 #include "chrome/browser/prefs/pref_hash_filter.h"
14 #include "chrome/browser/prefs/pref_hash_store_transaction.h"
15 #include "chrome/browser/prefs/tracked/tracked_preference_helper.h"
16 #include "chrome/browser/prefs/tracked/tracked_preference_validation_delegate.h"
17 
18 // A mock tracked preference validation delegate for use by tests.
19 class MockValidationDelegate : public TrackedPreferenceValidationDelegate {
20  public:
21   struct ValidationEvent {
ValidationEventValidationEvent22     ValidationEvent(const std::string& path,
23                     PrefHashStoreTransaction::ValueState state,
24                     TrackedPreferenceHelper::ResetAction action,
25                     PrefHashFilter::PrefTrackingStrategy tracking_strategy)
26         : pref_path(path),
27           value_state(state),
28           reset_action(action),
29           strategy(tracking_strategy) {}
30 
31     std::string pref_path;
32     PrefHashStoreTransaction::ValueState value_state;
33     TrackedPreferenceHelper::ResetAction reset_action;
34     PrefHashFilter::PrefTrackingStrategy strategy;
35   };
36 
37   MockValidationDelegate();
38   virtual ~MockValidationDelegate();
39 
40   // Returns the number of recorded validations.
recorded_validations_count()41   size_t recorded_validations_count() const { return validations_.size(); }
42 
43   // Returns the number of validations of a given value state.
44   size_t CountValidationsOfState(
45       PrefHashStoreTransaction::ValueState value_state) const;
46 
47   // Returns the event for the preference with a given path.
48   const ValidationEvent* GetEventForPath(const std::string& pref_path) const;
49 
50   // TrackedPreferenceValidationDelegate implementation.
51   virtual void OnAtomicPreferenceValidation(
52       const std::string& pref_path,
53       const base::Value* value,
54       PrefHashStoreTransaction::ValueState value_state,
55       TrackedPreferenceHelper::ResetAction reset_action) OVERRIDE;
56   virtual void OnSplitPreferenceValidation(
57       const std::string& pref_path,
58       const base::DictionaryValue* dict_value,
59       const std::vector<std::string>& invalid_keys,
60       PrefHashStoreTransaction::ValueState value_state,
61       TrackedPreferenceHelper::ResetAction reset_action) OVERRIDE;
62 
63  private:
64   // Adds a new validation event.
65   void RecordValidation(const std::string& pref_path,
66                         PrefHashStoreTransaction::ValueState value_state,
67                         TrackedPreferenceHelper::ResetAction reset_action,
68                         PrefHashFilter::PrefTrackingStrategy strategy);
69 
70   std::vector<ValidationEvent> validations_;
71 
72   DISALLOW_COPY_AND_ASSIGN(MockValidationDelegate);
73 };
74 
75 #endif  // CHROME_BROWSER_PREFS_MOCK_VALIDATION_DELEGATE_H_
76