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

Side by Side Diff: chrome/test/base/testing_pref_service.h

Issue 12223091: Split testing_pref_service.h/.cc into two parts, generic vs. Chrome-specific. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
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 CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_ 5 #ifndef CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_
6 #define CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_ 6 #define CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_
7 7
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/pref_registry.h" 10 #include "base/prefs/pref_registry.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/prefs/testing_pref_store.h" 12 #include "base/prefs/testing_pref_store.h"
13 #include "chrome/browser/prefs/pref_service_syncable.h"
14 13
15 class PrefModelAssociator;
16 class PrefNotifierImpl; 14 class PrefNotifierImpl;
17 class PrefRegistrySimple; 15 class PrefRegistrySimple;
18 class PrefRegistrySyncable;
19 class TestingBrowserProcess;
20 class TestingPrefStore; 16 class TestingPrefStore;
21 17
22 // A PrefService subclass for testing. It operates totally in memory and 18 // A PrefService subclass for testing. It operates totally in memory and
23 // provides additional API for manipulating preferences at the different levels 19 // provides additional API for manipulating preferences at the different levels
24 // (managed, extension, user) conveniently. 20 // (managed, extension, user) conveniently.
25 // 21 //
26 // Use this via its specializations, TestingPrefServiceSimple and 22 // Use this via its specializations, e.g. TestingPrefServiceSimple.
27 // TestingPrefServiceSyncable.
28 template <class SuperPrefService> 23 template <class SuperPrefService>
29 class TestingPrefServiceBase : public SuperPrefService { 24 class TestingPrefServiceBase : public SuperPrefService {
30 public: 25 public:
31 virtual ~TestingPrefServiceBase(); 26 virtual ~TestingPrefServiceBase();
32 27
33 // Read the value of a preference from the managed layer. Returns NULL if the 28 // Read the value of a preference from the managed layer. Returns NULL if the
34 // preference is not defined at the managed layer. 29 // preference is not defined at the managed layer.
35 const Value* GetManagedPref(const char* path) const; 30 const Value* GetManagedPref(const char* path) const;
36 31
37 // Set a preference on the managed layer and fire observers if the preference 32 // Set a preference on the managed layer and fire observers if the preference
38 // changed. Assumes ownership of |value|. 33 // changed. Assumes ownership of |value|.
39 void SetManagedPref(const char* path, Value* value); 34 void SetManagedPref(const char* path, Value* value);
40 35
41 // Clear the preference on the managed layer and fire observers if the 36 // Clear the preference on the managed layer and fire observers if the
42 // preference has been defined previously. 37 // preference has been defined previously.
43 void RemoveManagedPref(const char* path); 38 void RemoveManagedPref(const char* path);
44 39
45 // Similar to the above, but for user preferences. 40 // Similar to the above, but for user preferences.
46 const Value* GetUserPref(const char* path) const; 41 const Value* GetUserPref(const char* path) const;
47 void SetUserPref(const char* path, Value* value); 42 void SetUserPref(const char* path, Value* value);
48 void RemoveUserPref(const char* path); 43 void RemoveUserPref(const char* path);
49 44
50 // Similar to the above, but for recommended policy preferences. 45 // Similar to the above, but for recommended policy preferences.
51 const Value* GetRecommendedPref(const char* path) const; 46 const Value* GetRecommendedPref(const char* path) const;
52 void SetRecommendedPref(const char* path, Value* value); 47 void SetRecommendedPref(const char* path, Value* value);
53 void RemoveRecommendedPref(const char* path); 48 void RemoveRecommendedPref(const char* path);
54 49
50 // Do-nothing implementation for TestingPrefService.
51 static void HandleReadError(PersistentPrefStore::PrefReadError error) {}
52
55 protected: 53 protected:
56 TestingPrefServiceBase( 54 TestingPrefServiceBase(
57 TestingPrefStore* managed_prefs, 55 TestingPrefStore* managed_prefs,
58 TestingPrefStore* user_prefs, 56 TestingPrefStore* user_prefs,
59 TestingPrefStore* recommended_prefs, 57 TestingPrefStore* recommended_prefs,
60 PrefRegistry* pref_registry, 58 PrefRegistry* pref_registry,
61 PrefNotifierImpl* pref_notifier); 59 PrefNotifierImpl* pref_notifier);
62 60
63 private: 61 private:
64 // Reads the value of the preference indicated by |path| from |pref_store|. 62 // Reads the value of the preference indicated by |path| from |pref_store|.
(...skipping 25 matching lines...) Expand all
90 // an existing TestingPrefServiceSimple instance. On a production 88 // an existing TestingPrefServiceSimple instance. On a production
91 // PrefService you would do all registrations before constructing 89 // PrefService you would do all registrations before constructing
92 // it, passing it a PrefRegistry via its constructor (or via 90 // it, passing it a PrefRegistry via its constructor (or via
93 // e.g. PrefServiceBuilder). 91 // e.g. PrefServiceBuilder).
94 PrefRegistrySimple* registry(); 92 PrefRegistrySimple* registry();
95 93
96 private: 94 private:
97 DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSimple); 95 DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSimple);
98 }; 96 };
99 97
100 // Test version of PrefServiceSyncable.
101 class TestingPrefServiceSyncable
102 : public TestingPrefServiceBase<PrefServiceSyncable> {
103 public:
104 TestingPrefServiceSyncable();
105 virtual ~TestingPrefServiceSyncable();
106
107 // This is provided as a convenience; on a production PrefService
108 // you would do all registrations before constructing it, passing it
109 // a PrefRegistry via its constructor (or via
110 // e.g. PrefServiceBuilder).
111 PrefRegistrySyncable* registry();
112
113 private:
114 DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSyncable);
115 };
116
117 // Helper class to temporarily set up a |local_state| in the global
118 // TestingBrowserProcess (for most unit tests it's NULL).
119 class ScopedTestingLocalState {
120 public:
121 explicit ScopedTestingLocalState(TestingBrowserProcess* browser_process);
122 ~ScopedTestingLocalState();
123
124 TestingPrefServiceSimple* Get() {
125 return &local_state_;
126 }
127
128 private:
129 TestingBrowserProcess* browser_process_;
130 TestingPrefServiceSimple local_state_;
131
132 DISALLOW_COPY_AND_ASSIGN(ScopedTestingLocalState);
133 };
134
135 template<> 98 template<>
136 TestingPrefServiceBase<PrefService>::TestingPrefServiceBase( 99 TestingPrefServiceBase<PrefService>::TestingPrefServiceBase(
137 TestingPrefStore* managed_prefs, 100 TestingPrefStore* managed_prefs,
138 TestingPrefStore* user_prefs, 101 TestingPrefStore* user_prefs,
139 TestingPrefStore* recommended_prefs, 102 TestingPrefStore* recommended_prefs,
140 PrefRegistry* pref_registry, 103 PrefRegistry* pref_registry,
141 PrefNotifierImpl* pref_notifier); 104 PrefNotifierImpl* pref_notifier);
142 105
143 template<>
144 TestingPrefServiceBase<PrefServiceSyncable>::TestingPrefServiceBase(
145 TestingPrefStore* managed_prefs,
146 TestingPrefStore* user_prefs,
147 TestingPrefStore* recommended_prefs,
148 PrefRegistry* pref_registry,
149 PrefNotifierImpl* pref_notifier);
150
151 template<class SuperPrefService> 106 template<class SuperPrefService>
152 TestingPrefServiceBase<SuperPrefService>::~TestingPrefServiceBase() { 107 TestingPrefServiceBase<SuperPrefService>::~TestingPrefServiceBase() {
153 } 108 }
154 109
155 template<class SuperPrefService> 110 template<class SuperPrefService>
156 const Value* TestingPrefServiceBase<SuperPrefService>::GetManagedPref( 111 const Value* TestingPrefServiceBase<SuperPrefService>::GetManagedPref(
157 const char* path) const { 112 const char* path) const {
158 return GetPref(managed_prefs_, path); 113 return GetPref(managed_prefs_, path);
159 } 114 }
160 115
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 pref_store->SetValue(path, value); 174 pref_store->SetValue(path, value);
220 } 175 }
221 176
222 template<class SuperPrefService> 177 template<class SuperPrefService>
223 void TestingPrefServiceBase<SuperPrefService>::RemovePref( 178 void TestingPrefServiceBase<SuperPrefService>::RemovePref(
224 TestingPrefStore* pref_store, const char* path) { 179 TestingPrefStore* pref_store, const char* path) {
225 pref_store->RemoveValue(path); 180 pref_store->RemoveValue(path);
226 } 181 }
227 182
228 #endif // CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_ 183 #endif // CHROME_TEST_BASE_TESTING_PREF_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698