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

Side by Side Diff: base/prefs/testing_pref_service.h

Issue 1648403002: Move base/prefs to components/prefs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « base/prefs/scoped_user_pref_update_unittest.cc ('k') | base/prefs/testing_pref_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_PREFS_TESTING_PREF_SERVICE_H_ 5 // TODO(brettw) remove this forwarding header when prefs is completely moved to
6 #define BASE_PREFS_TESTING_PREF_SERVICE_H_ 6 // components.
7 7 #include "components/prefs/testing_pref_service.h"
8 #include "base/macros.h"
9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/prefs/pref_registry.h"
12 #include "base/prefs/pref_service.h"
13 #include "base/prefs/testing_pref_store.h"
14
15 class PrefNotifierImpl;
16 class PrefRegistrySimple;
17 class TestingPrefStore;
18
19 // A PrefService subclass for testing. It operates totally in memory and
20 // provides additional API for manipulating preferences at the different levels
21 // (managed, extension, user) conveniently.
22 //
23 // Use this via its specializations, e.g. TestingPrefServiceSimple.
24 template <class SuperPrefService, class ConstructionPrefRegistry>
25 class TestingPrefServiceBase : public SuperPrefService {
26 public:
27 virtual ~TestingPrefServiceBase();
28
29 // Read the value of a preference from the managed layer. Returns NULL if the
30 // preference is not defined at the managed layer.
31 const base::Value* GetManagedPref(const std::string& path) const;
32
33 // Set a preference on the managed layer and fire observers if the preference
34 // changed. Assumes ownership of |value|.
35 void SetManagedPref(const std::string& path, base::Value* value);
36
37 // Clear the preference on the managed layer and fire observers if the
38 // preference has been defined previously.
39 void RemoveManagedPref(const std::string& path);
40
41 // Similar to the above, but for user preferences.
42 const base::Value* GetUserPref(const std::string& path) const;
43 void SetUserPref(const std::string& path, base::Value* value);
44 void RemoveUserPref(const std::string& path);
45
46 // Similar to the above, but for recommended policy preferences.
47 const base::Value* GetRecommendedPref(const std::string& path) const;
48 void SetRecommendedPref(const std::string& path, base::Value* value);
49 void RemoveRecommendedPref(const std::string& path);
50
51 // Do-nothing implementation for TestingPrefService.
52 static void HandleReadError(PersistentPrefStore::PrefReadError error) {}
53
54 protected:
55 TestingPrefServiceBase(
56 TestingPrefStore* managed_prefs,
57 TestingPrefStore* user_prefs,
58 TestingPrefStore* recommended_prefs,
59 ConstructionPrefRegistry* pref_registry,
60 PrefNotifierImpl* pref_notifier);
61
62 private:
63 // Reads the value of the preference indicated by |path| from |pref_store|.
64 // Returns NULL if the preference was not found.
65 const base::Value* GetPref(TestingPrefStore* pref_store,
66 const std::string& path) const;
67
68 // Sets the value for |path| in |pref_store|.
69 void SetPref(TestingPrefStore* pref_store,
70 const std::string& path,
71 base::Value* value);
72
73 // Removes the preference identified by |path| from |pref_store|.
74 void RemovePref(TestingPrefStore* pref_store, const std::string& path);
75
76 // Pointers to the pref stores our value store uses.
77 scoped_refptr<TestingPrefStore> managed_prefs_;
78 scoped_refptr<TestingPrefStore> user_prefs_;
79 scoped_refptr<TestingPrefStore> recommended_prefs_;
80
81 DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceBase);
82 };
83
84 // Test version of PrefService.
85 class TestingPrefServiceSimple
86 : public TestingPrefServiceBase<PrefService, PrefRegistry> {
87 public:
88 TestingPrefServiceSimple();
89 ~TestingPrefServiceSimple() override;
90
91 // This is provided as a convenience for registering preferences on
92 // an existing TestingPrefServiceSimple instance. On a production
93 // PrefService you would do all registrations before constructing
94 // it, passing it a PrefRegistry via its constructor (or via
95 // e.g. PrefServiceFactory).
96 PrefRegistrySimple* registry();
97
98 private:
99 DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSimple);
100 };
101
102 template<>
103 TestingPrefServiceBase<PrefService, PrefRegistry>::TestingPrefServiceBase(
104 TestingPrefStore* managed_prefs,
105 TestingPrefStore* user_prefs,
106 TestingPrefStore* recommended_prefs,
107 PrefRegistry* pref_registry,
108 PrefNotifierImpl* pref_notifier);
109
110 template<class SuperPrefService, class ConstructionPrefRegistry>
111 TestingPrefServiceBase<
112 SuperPrefService, ConstructionPrefRegistry>::~TestingPrefServiceBase() {
113 }
114
115 template <class SuperPrefService, class ConstructionPrefRegistry>
116 const base::Value* TestingPrefServiceBase<
117 SuperPrefService,
118 ConstructionPrefRegistry>::GetManagedPref(const std::string& path) const {
119 return GetPref(managed_prefs_.get(), path);
120 }
121
122 template <class SuperPrefService, class ConstructionPrefRegistry>
123 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
124 SetManagedPref(const std::string& path, base::Value* value) {
125 SetPref(managed_prefs_.get(), path, value);
126 }
127
128 template <class SuperPrefService, class ConstructionPrefRegistry>
129 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
130 RemoveManagedPref(const std::string& path) {
131 RemovePref(managed_prefs_.get(), path);
132 }
133
134 template <class SuperPrefService, class ConstructionPrefRegistry>
135 const base::Value*
136 TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::GetUserPref(
137 const std::string& path) const {
138 return GetPref(user_prefs_.get(), path);
139 }
140
141 template <class SuperPrefService, class ConstructionPrefRegistry>
142 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
143 SetUserPref(const std::string& path, base::Value* value) {
144 SetPref(user_prefs_.get(), path, value);
145 }
146
147 template <class SuperPrefService, class ConstructionPrefRegistry>
148 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
149 RemoveUserPref(const std::string& path) {
150 RemovePref(user_prefs_.get(), path);
151 }
152
153 template <class SuperPrefService, class ConstructionPrefRegistry>
154 const base::Value*
155 TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
156 GetRecommendedPref(const std::string& path) const {
157 return GetPref(recommended_prefs_, path);
158 }
159
160 template <class SuperPrefService, class ConstructionPrefRegistry>
161 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
162 SetRecommendedPref(const std::string& path, base::Value* value) {
163 SetPref(recommended_prefs_.get(), path, value);
164 }
165
166 template <class SuperPrefService, class ConstructionPrefRegistry>
167 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
168 RemoveRecommendedPref(const std::string& path) {
169 RemovePref(recommended_prefs_.get(), path);
170 }
171
172 template <class SuperPrefService, class ConstructionPrefRegistry>
173 const base::Value*
174 TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::GetPref(
175 TestingPrefStore* pref_store,
176 const std::string& path) const {
177 const base::Value* res;
178 return pref_store->GetValue(path, &res) ? res : NULL;
179 }
180
181 template <class SuperPrefService, class ConstructionPrefRegistry>
182 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
183 SetPref(TestingPrefStore* pref_store,
184 const std::string& path,
185 base::Value* value) {
186 pref_store->SetValue(path, make_scoped_ptr(value),
187 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
188 }
189
190 template <class SuperPrefService, class ConstructionPrefRegistry>
191 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
192 RemovePref(TestingPrefStore* pref_store, const std::string& path) {
193 pref_store->RemoveValue(path, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
194 }
195
196 #endif // BASE_PREFS_TESTING_PREF_SERVICE_H_
OLDNEW
« no previous file with comments | « base/prefs/scoped_user_pref_update_unittest.cc ('k') | base/prefs/testing_pref_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698