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

Side by Side Diff: chrome/browser/prefs/pref_service_unittest.cc

Issue 3774003: Cleanup and style guideline conformance for policy implementation (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: fix windows build and tests Created 10 years, 1 month 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 | « chrome/browser/prefs/dummy_pref_store.h ('k') | chrome/chrome_browser.gypi » ('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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include <string> 5 #include <string>
6 6
7 #include "app/test/data/resource.h" 7 #include "app/test/data/resource.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 13 matching lines...) Expand all
24 #include "chrome/common/pref_names.h" 24 #include "chrome/common/pref_names.h"
25 #include "chrome/test/testing_pref_service.h" 25 #include "chrome/test/testing_pref_service.h"
26 #include "testing/gmock/include/gmock/gmock.h" 26 #include "testing/gmock/include/gmock/gmock.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 28
29 using testing::_; 29 using testing::_;
30 using testing::Mock; 30 using testing::Mock;
31 using testing::Pointee; 31 using testing::Pointee;
32 using testing::Property; 32 using testing::Property;
33 33
34 namespace {
35
34 class TestPrefObserver : public NotificationObserver { 36 class TestPrefObserver : public NotificationObserver {
35 public: 37 public:
36 TestPrefObserver(const PrefService* prefs, 38 TestPrefObserver(const PrefService* prefs,
37 const std::string& pref_name, 39 const std::string& pref_name,
38 const std::string& new_pref_value) 40 const std::string& new_pref_value)
39 : observer_fired_(false), 41 : observer_fired_(false),
40 prefs_(prefs), 42 prefs_(prefs),
41 pref_name_(pref_name), 43 pref_name_(pref_name),
42 new_pref_value_(new_pref_value) { 44 new_pref_value_(new_pref_value) {}
43 }
44 virtual ~TestPrefObserver() {} 45 virtual ~TestPrefObserver() {}
45 46
46 virtual void Observe(NotificationType type, 47 virtual void Observe(NotificationType type,
47 const NotificationSource& source, 48 const NotificationSource& source,
48 const NotificationDetails& details) { 49 const NotificationDetails& details) {
49 EXPECT_EQ(type.value, NotificationType::PREF_CHANGED); 50 EXPECT_EQ(type.value, NotificationType::PREF_CHANGED);
50 PrefService* prefs_in = Source<PrefService>(source).ptr(); 51 const PrefService* prefs_in = Source<PrefService>(source).ptr();
51 EXPECT_EQ(prefs_in, prefs_); 52 EXPECT_EQ(prefs_in, prefs_);
52 std::string* pref_name_in = Details<std::string>(details).ptr(); 53 const std::string* pref_name_in = Details<std::string>(details).ptr();
53 EXPECT_EQ(*pref_name_in, pref_name_); 54 EXPECT_EQ(*pref_name_in, pref_name_);
54 EXPECT_EQ(new_pref_value_, prefs_in->GetString("homepage")); 55 EXPECT_EQ(new_pref_value_, prefs_in->GetString("homepage"));
55 observer_fired_ = true; 56 observer_fired_ = true;
56 } 57 }
57 58
58 bool observer_fired() { return observer_fired_; } 59 bool observer_fired() { return observer_fired_; }
59 60
60 void Reset(const std::string& new_pref_value) { 61 void Reset(const std::string& new_pref_value) {
61 observer_fired_ = false; 62 observer_fired_ = false;
62 new_pref_value_ = new_pref_value; 63 new_pref_value_ = new_pref_value;
63 } 64 }
64 65
65 private: 66 private:
66 bool observer_fired_; 67 bool observer_fired_;
67 const PrefService* prefs_; 68 const PrefService* prefs_;
68 const std::string pref_name_; 69 const std::string pref_name_;
69 std::string new_pref_value_; 70 std::string new_pref_value_;
70 }; 71 };
71 72
73 } // namespace
74
72 // TODO(port): port this test to POSIX. 75 // TODO(port): port this test to POSIX.
73 #if defined(OS_WIN) 76 #if defined(OS_WIN)
74 TEST(PrefServiceTest, LocalizedPrefs) { 77 TEST(PrefServiceTest, LocalizedPrefs) {
75 TestingPrefService prefs; 78 TestingPrefService prefs;
76 const char kBoolean[] = "boolean"; 79 const char kBoolean[] = "boolean";
77 const char kInteger[] = "integer"; 80 const char kInteger[] = "integer";
78 const char kString[] = "string"; 81 const char kString[] = "string";
79 prefs.RegisterLocalizedBooleanPref(kBoolean, IDS_LOCALE_BOOL); 82 prefs.RegisterLocalizedBooleanPref(kBoolean, IDS_LOCALE_BOOL);
80 prefs.RegisterLocalizedIntegerPref(kInteger, IDS_LOCALE_INT); 83 prefs.RegisterLocalizedIntegerPref(kInteger, IDS_LOCALE_INT);
81 prefs.RegisterLocalizedStringPref(kString, IDS_LOCALE_STRING); 84 prefs.RegisterLocalizedStringPref(kString, IDS_LOCALE_STRING);
82 85
83 // The locale default should take preference over the user default. 86 // The locale default should take preference over the user default.
84 EXPECT_FALSE(prefs.GetBoolean(kBoolean)); 87 EXPECT_FALSE(prefs.GetBoolean(kBoolean));
85 EXPECT_EQ(1, prefs.GetInteger(kInteger)); 88 EXPECT_EQ(1, prefs.GetInteger(kInteger));
86 EXPECT_EQ("hello", prefs.GetString(kString)); 89 EXPECT_EQ("hello", prefs.GetString(kString));
87 90
88 prefs.SetBoolean(kBoolean, true); 91 prefs.SetBoolean(kBoolean, true);
89 EXPECT_TRUE(prefs.GetBoolean(kBoolean)); 92 EXPECT_TRUE(prefs.GetBoolean(kBoolean));
90 prefs.SetInteger(kInteger, 5); 93 prefs.SetInteger(kInteger, 5);
91 EXPECT_EQ(5, prefs.GetInteger(kInteger)); 94 EXPECT_EQ(5, prefs.GetInteger(kInteger));
92 prefs.SetString(kString, "foo"); 95 prefs.SetString(kString, "foo");
93 EXPECT_EQ("foo", prefs.GetString(kString)); 96 EXPECT_EQ("foo", prefs.GetString(kString));
94 } 97 }
95 #endif 98 #endif
96 99
97 TEST(PrefServiceTest, NoObserverFire) { 100 TEST(PrefServiceTest, NoObserverFire) {
98 TestingPrefService prefs; 101 TestingPrefService prefs;
99 102
100 const char pref_name[] = "homepage"; 103 const char pref_name[] = "homepage";
101 prefs.RegisterStringPref(pref_name, ""); 104 prefs.RegisterStringPref(pref_name, std::string());
102 105
103 const std::string new_pref_value("http://www.google.com/"); 106 const std::string new_pref_value("http://www.google.com/");
104 TestPrefObserver obs(&prefs, pref_name, new_pref_value); 107 TestPrefObserver obs(&prefs, pref_name, new_pref_value);
105 108
106 PrefChangeRegistrar registrar; 109 PrefChangeRegistrar registrar;
107 registrar.Init(&prefs); 110 registrar.Init(&prefs);
108 registrar.Add(pref_name, &obs); 111 registrar.Add(pref_name, &obs);
109 // This should fire the checks in TestPrefObserver::Observe. 112 // This should fire the checks in TestPrefObserver::Observe.
110 prefs.SetString(pref_name, new_pref_value); 113 prefs.SetString(pref_name, new_pref_value);
111 114
112 // Make sure the observer was actually fired. 115 // Make sure the observer was actually fired.
113 EXPECT_TRUE(obs.observer_fired()); 116 EXPECT_TRUE(obs.observer_fired());
114 117
115 // Setting the pref to the same value should not set the pref value a second 118 // Setting the pref to the same value should not set the pref value a second
116 // time. 119 // time.
117 obs.Reset(new_pref_value); 120 obs.Reset(new_pref_value);
118 prefs.SetString(pref_name, new_pref_value); 121 prefs.SetString(pref_name, new_pref_value);
119 EXPECT_FALSE(obs.observer_fired()); 122 EXPECT_FALSE(obs.observer_fired());
120 123
121 // Clearing the pref should cause the pref to fire. 124 // Clearing the pref should cause the pref to fire.
122 obs.Reset(""); 125 obs.Reset(std::string());
123 prefs.ClearPref(pref_name); 126 prefs.ClearPref(pref_name);
124 EXPECT_TRUE(obs.observer_fired()); 127 EXPECT_TRUE(obs.observer_fired());
125 128
126 // Clearing the pref again should not cause the pref to fire. 129 // Clearing the pref again should not cause the pref to fire.
127 obs.Reset(""); 130 obs.Reset(std::string());
128 prefs.ClearPref(pref_name); 131 prefs.ClearPref(pref_name);
129 EXPECT_FALSE(obs.observer_fired()); 132 EXPECT_FALSE(obs.observer_fired());
130 } 133 }
131 134
132 TEST(PrefServiceTest, HasPrefPath) { 135 TEST(PrefServiceTest, HasPrefPath) {
133 TestingPrefService prefs; 136 TestingPrefService prefs;
134 137
135 const char path[] = "fake.path"; 138 const char path[] = "fake.path";
136 139
137 // Shouldn't initially have a path. 140 // Shouldn't initially have a path.
138 EXPECT_FALSE(prefs.HasPrefPath(path)); 141 EXPECT_FALSE(prefs.HasPrefPath(path));
139 142
140 // Register the path. This doesn't set a value, so the path still shouldn't 143 // Register the path. This doesn't set a value, so the path still shouldn't
141 // exist. 144 // exist.
142 prefs.RegisterStringPref(path, std::string()); 145 prefs.RegisterStringPref(path, std::string());
143 EXPECT_FALSE(prefs.HasPrefPath(path)); 146 EXPECT_FALSE(prefs.HasPrefPath(path));
144 147
145 // Set a value and make sure we have a path. 148 // Set a value and make sure we have a path.
146 prefs.SetString(path, "blah"); 149 prefs.SetString(path, "blah");
147 EXPECT_TRUE(prefs.HasPrefPath(path)); 150 EXPECT_TRUE(prefs.HasPrefPath(path));
148 } 151 }
149 152
150 TEST(PrefServiceTest, Observers) { 153 TEST(PrefServiceTest, Observers) {
151 const char pref_name[] = "homepage"; 154 const char pref_name[] = "homepage";
152 155
153 TestingPrefService prefs; 156 TestingPrefService prefs;
154 prefs.SetUserPref(pref_name, Value::CreateStringValue("http://www.cnn.com")); 157 prefs.SetUserPref(pref_name, Value::CreateStringValue("http://www.cnn.com"));
155 prefs.RegisterStringPref(pref_name, ""); 158 prefs.RegisterStringPref(pref_name, std::string());
156 159
157 const std::string new_pref_value("http://www.google.com/"); 160 const std::string new_pref_value("http://www.google.com/");
158 TestPrefObserver obs(&prefs, pref_name, new_pref_value); 161 TestPrefObserver obs(&prefs, pref_name, new_pref_value);
159 PrefChangeRegistrar registrar; 162 PrefChangeRegistrar registrar;
160 registrar.Init(&prefs); 163 registrar.Init(&prefs);
161 registrar.Add(pref_name, &obs); 164 registrar.Add(pref_name, &obs);
162 // This should fire the checks in TestPrefObserver::Observe. 165 // This should fire the checks in TestPrefObserver::Observe.
163 prefs.SetString(pref_name, new_pref_value); 166 prefs.SetString(pref_name, new_pref_value);
164 167
165 // Make sure the tests were actually run. 168 // Make sure the tests were actually run.
166 EXPECT_TRUE(obs.observer_fired()); 169 EXPECT_TRUE(obs.observer_fired());
167 170
168 // Now try adding a second pref observer. 171 // Now try adding a second pref observer.
169 const std::string new_pref_value2("http://www.youtube.com/"); 172 const std::string new_pref_value2("http://www.youtube.com/");
170 obs.Reset(new_pref_value2); 173 obs.Reset(new_pref_value2);
171 TestPrefObserver obs2(&prefs, pref_name, new_pref_value2); 174 TestPrefObserver obs2(&prefs, pref_name, new_pref_value2);
172 registrar.Add(pref_name, &obs2); 175 registrar.Add(pref_name, &obs2);
173 // This should fire the checks in obs and obs2. 176 // This should fire the checks in obs and obs2.
174 prefs.SetString(pref_name, new_pref_value2); 177 prefs.SetString(pref_name, new_pref_value2);
175 EXPECT_TRUE(obs.observer_fired()); 178 EXPECT_TRUE(obs.observer_fired());
176 EXPECT_TRUE(obs2.observer_fired()); 179 EXPECT_TRUE(obs2.observer_fired());
177 180
178 // Make sure obs2 still works after removing obs. 181 // Make sure obs2 still works after removing obs.
179 registrar.Remove(pref_name, &obs); 182 registrar.Remove(pref_name, &obs);
180 obs.Reset(""); 183 obs.Reset(std::string());
181 obs2.Reset(new_pref_value); 184 obs2.Reset(new_pref_value);
182 // This should only fire the observer in obs2. 185 // This should only fire the observer in obs2.
183 prefs.SetString(pref_name, new_pref_value); 186 prefs.SetString(pref_name, new_pref_value);
184 EXPECT_FALSE(obs.observer_fired()); 187 EXPECT_FALSE(obs.observer_fired());
185 EXPECT_TRUE(obs2.observer_fired()); 188 EXPECT_TRUE(obs2.observer_fired());
186 } 189 }
187 190
188 TEST(PrefServiceTest, ProxyFromCommandLineNotPolicy) { 191 TEST(PrefServiceTest, ProxyFromCommandLineNotPolicy) {
189 CommandLine command_line(CommandLine::NO_PROGRAM); 192 CommandLine command_line(CommandLine::NO_PROGRAM);
190 command_line.AppendSwitch(switches::kProxyAutoDetect); 193 command_line.AppendSwitch(switches::kProxyAutoDetect);
191 TestingPrefService prefs(NULL, &command_line); 194 TestingPrefService prefs(NULL, &command_line);
192 browser::RegisterUserPrefs(&prefs); 195 browser::RegisterUserPrefs(&prefs);
193 EXPECT_TRUE(prefs.GetBoolean(prefs::kProxyAutoDetect)); 196 EXPECT_TRUE(prefs.GetBoolean(prefs::kProxyAutoDetect));
194 const PrefService::Preference* pref = 197 const PrefService::Preference* pref =
195 prefs.FindPreference(prefs::kProxyAutoDetect); 198 prefs.FindPreference(prefs::kProxyAutoDetect);
196 ASSERT_TRUE(pref); 199 ASSERT_TRUE(pref);
197 EXPECT_FALSE(pref->IsManaged()); 200 EXPECT_FALSE(pref->IsManaged());
198 } 201 }
199 202
200 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineOptions) { 203 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineOptions) {
201 CommandLine command_line(CommandLine::NO_PROGRAM); 204 CommandLine command_line(CommandLine::NO_PROGRAM);
202 command_line.AppendSwitchASCII(switches::kProxyBypassList, "123"); 205 command_line.AppendSwitchASCII(switches::kProxyBypassList, "123");
203 command_line.AppendSwitchASCII(switches::kProxyPacUrl, "456"); 206 command_line.AppendSwitchASCII(switches::kProxyPacUrl, "456");
204 command_line.AppendSwitchASCII(switches::kProxyServer, "789"); 207 command_line.AppendSwitchASCII(switches::kProxyServer, "789");
205 scoped_ptr<policy::MockConfigurationPolicyProvider> provider( 208 scoped_ptr<policy::MockConfigurationPolicyProvider> provider(
206 new policy::MockConfigurationPolicyProvider()); 209 new policy::MockConfigurationPolicyProvider());
207 Value* mode_value = Value::CreateIntegerValue( 210 Value* mode_value = Value::CreateIntegerValue(
208 policy::ConfigurationPolicyStore::kPolicyManuallyConfiguredProxyMode); 211 policy::kPolicyManuallyConfiguredProxyMode);
209 provider->AddPolicy( 212 provider->AddPolicy(policy::kPolicyProxyServerMode, mode_value);
210 policy::ConfigurationPolicyStore::kPolicyProxyServerMode, 213 provider->AddPolicy(policy::kPolicyProxyBypassList,
211 mode_value); 214 Value::CreateStringValue("abc"));
212 provider->AddPolicy( 215 provider->AddPolicy(policy::kPolicyProxyPacUrl,
213 policy::ConfigurationPolicyStore::kPolicyProxyBypassList, 216 Value::CreateStringValue("def"));
214 Value::CreateStringValue("abc")); 217 provider->AddPolicy(policy::kPolicyProxyServer,
215 provider->AddPolicy( 218 Value::CreateStringValue("ghi"));
216 policy::ConfigurationPolicyStore::kPolicyProxyPacUrl,
217 Value::CreateStringValue("def"));
218 provider->AddPolicy(
219 policy::ConfigurationPolicyStore::kPolicyProxyServer,
220 Value::CreateStringValue("ghi"));
221 219
222 // First verify that command-line options are set correctly when 220 // First verify that command-line options are set correctly when
223 // there is no policy in effect. 221 // there is no policy in effect.
224 TestingPrefService prefs(NULL, &command_line); 222 TestingPrefService prefs(NULL, &command_line);
225 browser::RegisterUserPrefs(&prefs); 223 browser::RegisterUserPrefs(&prefs);
226 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect)); 224 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect));
227 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer)); 225 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer));
228 EXPECT_EQ("789", prefs.GetString(prefs::kProxyServer)); 226 EXPECT_EQ("789", prefs.GetString(prefs::kProxyServer));
229 EXPECT_EQ("456", prefs.GetString(prefs::kProxyPacUrl)); 227 EXPECT_EQ("456", prefs.GetString(prefs::kProxyPacUrl));
230 EXPECT_EQ("123", prefs.GetString(prefs::kProxyBypassList)); 228 EXPECT_EQ("123", prefs.GetString(prefs::kProxyBypassList));
(...skipping 11 matching lines...) Expand all
242 } 240 }
243 241
244 TEST(PrefServiceTest, ProxyPolicyOverridesUnrelatedCommandLineOptions) { 242 TEST(PrefServiceTest, ProxyPolicyOverridesUnrelatedCommandLineOptions) {
245 CommandLine command_line(CommandLine::NO_PROGRAM); 243 CommandLine command_line(CommandLine::NO_PROGRAM);
246 command_line.AppendSwitchASCII(switches::kProxyBypassList, "123"); 244 command_line.AppendSwitchASCII(switches::kProxyBypassList, "123");
247 command_line.AppendSwitchASCII(switches::kProxyPacUrl, "456"); 245 command_line.AppendSwitchASCII(switches::kProxyPacUrl, "456");
248 command_line.AppendSwitchASCII(switches::kProxyServer, "789"); 246 command_line.AppendSwitchASCII(switches::kProxyServer, "789");
249 scoped_ptr<policy::MockConfigurationPolicyProvider> provider( 247 scoped_ptr<policy::MockConfigurationPolicyProvider> provider(
250 new policy::MockConfigurationPolicyProvider()); 248 new policy::MockConfigurationPolicyProvider());
251 Value* mode_value = Value::CreateIntegerValue( 249 Value* mode_value = Value::CreateIntegerValue(
252 policy::ConfigurationPolicyStore::kPolicyUseSystemProxyMode); 250 policy::kPolicyUseSystemProxyMode);
253 provider->AddPolicy( 251 provider->AddPolicy(policy::kPolicyProxyServerMode, mode_value);
254 policy::ConfigurationPolicyStore::kPolicyProxyServerMode,
255 mode_value);
256 252
257 // First verify that command-line options are set correctly when 253 // First verify that command-line options are set correctly when
258 // there is no policy in effect. 254 // there is no policy in effect.
259 TestingPrefService prefs(NULL, &command_line); 255 TestingPrefService prefs(NULL, &command_line);
260 browser::RegisterUserPrefs(&prefs); 256 browser::RegisterUserPrefs(&prefs);
261 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect)); 257 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect));
262 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer)); 258 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer));
263 EXPECT_EQ("789", prefs.GetString(prefs::kProxyServer)); 259 EXPECT_EQ("789", prefs.GetString(prefs::kProxyServer));
264 EXPECT_EQ("456", prefs.GetString(prefs::kProxyPacUrl)); 260 EXPECT_EQ("456", prefs.GetString(prefs::kProxyPacUrl));
265 EXPECT_EQ("123", prefs.GetString(prefs::kProxyBypassList)); 261 EXPECT_EQ("123", prefs.GetString(prefs::kProxyBypassList));
266 262
267 // Try a second time time with the managed PrefStore in place, the 263 // Try a second time time with the managed PrefStore in place, the
268 // no proxy policy should have removed all traces of the command 264 // no proxy policy should have removed all traces of the command
269 // line proxy settings, even though they were not the specific one 265 // line proxy settings, even though they were not the specific one
270 // set in policy. 266 // set in policy.
271 TestingPrefService prefs2(provider.get(), &command_line); 267 TestingPrefService prefs2(provider.get(), &command_line);
272 browser::RegisterUserPrefs(&prefs2); 268 browser::RegisterUserPrefs(&prefs2);
273 EXPECT_FALSE(prefs2.GetBoolean(prefs::kProxyAutoDetect)); 269 EXPECT_FALSE(prefs2.GetBoolean(prefs::kProxyAutoDetect));
274 EXPECT_FALSE(prefs2.GetBoolean(prefs::kNoProxyServer)); 270 EXPECT_FALSE(prefs2.GetBoolean(prefs::kNoProxyServer));
275 EXPECT_EQ("", prefs2.GetString(prefs::kProxyServer)); 271 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyServer));
276 EXPECT_EQ("", prefs2.GetString(prefs::kProxyPacUrl)); 272 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyPacUrl));
277 EXPECT_EQ("", prefs2.GetString(prefs::kProxyBypassList)); 273 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyBypassList));
278 } 274 }
279 275
280 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineNoProxy) { 276 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineNoProxy) {
281 CommandLine command_line(CommandLine::NO_PROGRAM); 277 CommandLine command_line(CommandLine::NO_PROGRAM);
282 command_line.AppendSwitch(switches::kNoProxyServer); 278 command_line.AppendSwitch(switches::kNoProxyServer);
283 scoped_ptr<policy::MockConfigurationPolicyProvider> provider( 279 scoped_ptr<policy::MockConfigurationPolicyProvider> provider(
284 new policy::MockConfigurationPolicyProvider()); 280 new policy::MockConfigurationPolicyProvider());
285 Value* mode_value = Value::CreateIntegerValue( 281 Value* mode_value = Value::CreateIntegerValue(
286 policy::ConfigurationPolicyStore::kPolicyAutoDetectProxyMode); 282 policy::kPolicyAutoDetectProxyMode);
287 provider->AddPolicy( 283 provider->AddPolicy(policy::kPolicyProxyServerMode, mode_value);
288 policy::ConfigurationPolicyStore::kPolicyProxyServerMode,
289 mode_value);
290 284
291 // First verify that command-line options are set correctly when 285 // First verify that command-line options are set correctly when
292 // there is no policy in effect. 286 // there is no policy in effect.
293 TestingPrefService prefs(NULL, &command_line); 287 TestingPrefService prefs(NULL, &command_line);
294 browser::RegisterUserPrefs(&prefs); 288 browser::RegisterUserPrefs(&prefs);
295 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect)); 289 EXPECT_FALSE(prefs.GetBoolean(prefs::kProxyAutoDetect));
296 EXPECT_TRUE(prefs.GetBoolean(prefs::kNoProxyServer)); 290 EXPECT_TRUE(prefs.GetBoolean(prefs::kNoProxyServer));
297 EXPECT_EQ("", prefs.GetString(prefs::kProxyServer)); 291 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyServer));
298 EXPECT_EQ("", prefs.GetString(prefs::kProxyPacUrl)); 292 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyPacUrl));
299 EXPECT_EQ("", prefs.GetString(prefs::kProxyBypassList)); 293 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyBypassList));
300 294
301 // Try a second time time with the managed PrefStore in place, the 295 // Try a second time time with the managed PrefStore in place, the
302 // auto-detect should be overridden. The default pref store must be 296 // auto-detect should be overridden. The default pref store must be
303 // in place with the appropriate default value for this to work. 297 // in place with the appropriate default value for this to work.
304 TestingPrefService prefs2(provider.get(), &command_line); 298 TestingPrefService prefs2(provider.get(), &command_line);
305 browser::RegisterUserPrefs(&prefs2); 299 browser::RegisterUserPrefs(&prefs2);
306 EXPECT_TRUE(prefs2.GetBoolean(prefs::kProxyAutoDetect)); 300 EXPECT_TRUE(prefs2.GetBoolean(prefs::kProxyAutoDetect));
307 EXPECT_FALSE(prefs2.GetBoolean(prefs::kNoProxyServer)); 301 EXPECT_FALSE(prefs2.GetBoolean(prefs::kNoProxyServer));
308 EXPECT_EQ("", prefs2.GetString(prefs::kProxyServer)); 302 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyServer));
309 EXPECT_EQ("", prefs2.GetString(prefs::kProxyPacUrl)); 303 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyPacUrl));
310 EXPECT_EQ("", prefs2.GetString(prefs::kProxyBypassList)); 304 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyBypassList));
311 } 305 }
312 306
313 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineAutoDetect) { 307 TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineAutoDetect) {
314 CommandLine command_line(CommandLine::NO_PROGRAM); 308 CommandLine command_line(CommandLine::NO_PROGRAM);
315 command_line.AppendSwitch(switches::kProxyAutoDetect); 309 command_line.AppendSwitch(switches::kProxyAutoDetect);
316 scoped_ptr<policy::MockConfigurationPolicyProvider> provider( 310 scoped_ptr<policy::MockConfigurationPolicyProvider> provider(
317 new policy::MockConfigurationPolicyProvider()); 311 new policy::MockConfigurationPolicyProvider());
318 Value* mode_value = Value::CreateIntegerValue( 312 Value* mode_value = Value::CreateIntegerValue(
319 policy::ConfigurationPolicyStore::kPolicyNoProxyServerMode); 313 policy::kPolicyNoProxyServerMode);
320 provider->AddPolicy( 314 provider->AddPolicy(policy::kPolicyProxyServerMode, mode_value);
321 policy::ConfigurationPolicyStore::kPolicyProxyServerMode,
322 mode_value);
323 315
324 // First verify that the auto-detect is set if there is no managed 316 // First verify that the auto-detect is set if there is no managed
325 // PrefStore. 317 // PrefStore.
326 TestingPrefService prefs(NULL, &command_line); 318 TestingPrefService prefs(NULL, &command_line);
327 browser::RegisterUserPrefs(&prefs); 319 browser::RegisterUserPrefs(&prefs);
328 EXPECT_TRUE(prefs.GetBoolean(prefs::kProxyAutoDetect)); 320 EXPECT_TRUE(prefs.GetBoolean(prefs::kProxyAutoDetect));
329 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer)); 321 EXPECT_FALSE(prefs.GetBoolean(prefs::kNoProxyServer));
330 EXPECT_EQ("", prefs.GetString(prefs::kProxyServer)); 322 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyServer));
331 EXPECT_EQ("", prefs.GetString(prefs::kProxyPacUrl)); 323 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyPacUrl));
332 EXPECT_EQ("", prefs.GetString(prefs::kProxyBypassList)); 324 EXPECT_EQ(std::string(), prefs.GetString(prefs::kProxyBypassList));
333 325
334 // Try a second time time with the managed PrefStore in place, the 326 // Try a second time time with the managed PrefStore in place, the
335 // auto-detect should be overridden. The default pref store must be 327 // auto-detect should be overridden. The default pref store must be
336 // in place with the appropriate default value for this to work. 328 // in place with the appropriate default value for this to work.
337 TestingPrefService prefs2(provider.get(), &command_line); 329 TestingPrefService prefs2(provider.get(), &command_line);
338 browser::RegisterUserPrefs(&prefs2); 330 browser::RegisterUserPrefs(&prefs2);
339 EXPECT_FALSE(prefs2.GetBoolean(prefs::kProxyAutoDetect)); 331 EXPECT_FALSE(prefs2.GetBoolean(prefs::kProxyAutoDetect));
340 EXPECT_TRUE(prefs2.GetBoolean(prefs::kNoProxyServer)); 332 EXPECT_TRUE(prefs2.GetBoolean(prefs::kNoProxyServer));
341 EXPECT_EQ("", prefs2.GetString(prefs::kProxyServer)); 333 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyServer));
342 EXPECT_EQ("", prefs2.GetString(prefs::kProxyPacUrl)); 334 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyPacUrl));
343 EXPECT_EQ("", prefs2.GetString(prefs::kProxyBypassList)); 335 EXPECT_EQ(std::string(), prefs2.GetString(prefs::kProxyBypassList));
344 } 336 }
345 337
346 class PrefServiceSetValueTest : public testing::Test { 338 class PrefServiceSetValueTest : public testing::Test {
347 protected: 339 protected:
348 static const char name_[]; 340 static const char kName[];
349 static const char value_[]; 341 static const char kValue[];
350 342
351 PrefServiceSetValueTest() 343 PrefServiceSetValueTest()
352 : name_string_(name_), 344 : name_string_(kName),
353 null_value_(Value::CreateNullValue()) {} 345 null_value_(Value::CreateNullValue()) {}
354 346
355 void SetExpectNoNotification() { 347 void SetExpectNoNotification() {
356 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); 348 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0);
357 } 349 }
358 350
359 void SetExpectPrefChanged() { 351 void SetExpectPrefChanged() {
360 EXPECT_CALL(observer_, 352 EXPECT_CALL(observer_,
361 Observe(NotificationType(NotificationType::PREF_CHANGED), _, 353 Observe(NotificationType(NotificationType::PREF_CHANGED), _,
362 Property(&Details<std::string>::ptr, 354 Property(&Details<std::string>::ptr,
363 Pointee(name_string_)))); 355 Pointee(name_string_))));
364 } 356 }
365 357
366 TestingPrefService prefs_; 358 TestingPrefService prefs_;
367 std::string name_string_; 359 std::string name_string_;
368 scoped_ptr<Value> null_value_; 360 scoped_ptr<Value> null_value_;
369 NotificationObserverMock observer_; 361 NotificationObserverMock observer_;
370 }; 362 };
371 363
372 const char PrefServiceSetValueTest::name_[] = "name"; 364 const char PrefServiceSetValueTest::kName[] = "name";
373 const char PrefServiceSetValueTest::value_[] = "value"; 365 const char PrefServiceSetValueTest::kValue[] = "value";
374 366
375 TEST_F(PrefServiceSetValueTest, SetStringValue) { 367 TEST_F(PrefServiceSetValueTest, SetStringValue) {
376 const char default_string[] = "default"; 368 const char default_string[] = "default";
377 scoped_ptr<Value> default_value(Value::CreateStringValue(default_string)); 369 const scoped_ptr<Value> default_value(
378 prefs_.RegisterStringPref(name_, default_string); 370 Value::CreateStringValue(default_string));
371 prefs_.RegisterStringPref(kName, default_string);
379 372
380 PrefChangeRegistrar registrar; 373 PrefChangeRegistrar registrar;
381 registrar.Init(&prefs_); 374 registrar.Init(&prefs_);
382 registrar.Add(name_, &observer_); 375 registrar.Add(kName, &observer_);
383 376
384 // Changing the controlling store from default to user triggers notification. 377 // Changing the controlling store from default to user triggers notification.
385 SetExpectPrefChanged(); 378 SetExpectPrefChanged();
386 prefs_.Set(name_, *default_value); 379 prefs_.Set(kName, *default_value);
387 Mock::VerifyAndClearExpectations(&observer_); 380 Mock::VerifyAndClearExpectations(&observer_);
388 381
389 SetExpectNoNotification(); 382 SetExpectNoNotification();
390 prefs_.Set(name_, *default_value); 383 prefs_.Set(kName, *default_value);
391 Mock::VerifyAndClearExpectations(&observer_); 384 Mock::VerifyAndClearExpectations(&observer_);
392 385
393 scoped_ptr<Value> new_value(Value::CreateStringValue(value_)); 386 const scoped_ptr<Value> new_value(Value::CreateStringValue(kValue));
394 SetExpectPrefChanged(); 387 SetExpectPrefChanged();
395 prefs_.Set(name_, *new_value); 388 prefs_.Set(kName, *new_value);
396 EXPECT_EQ(value_, prefs_.GetString(name_)); 389 EXPECT_EQ(kValue, prefs_.GetString(kName));
397 } 390 }
398 391
399 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { 392 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) {
400 prefs_.RegisterDictionaryPref(name_); 393 prefs_.RegisterDictionaryPref(kName);
401 PrefChangeRegistrar registrar; 394 PrefChangeRegistrar registrar;
402 registrar.Init(&prefs_); 395 registrar.Init(&prefs_);
403 registrar.Add(name_, &observer_); 396 registrar.Add(kName, &observer_);
404 397
405 // Dictionary values are special: setting one to NULL is the same as clearing 398 // Dictionary values are special: setting one to NULL is the same as clearing
406 // the user value, allowing the NULL default to take (or keep) control. 399 // the user value, allowing the NULL default to take (or keep) control.
407 SetExpectNoNotification(); 400 SetExpectNoNotification();
408 prefs_.Set(name_, *null_value_); 401 prefs_.Set(kName, *null_value_);
409 Mock::VerifyAndClearExpectations(&observer_); 402 Mock::VerifyAndClearExpectations(&observer_);
410 403
411 DictionaryValue new_value; 404 DictionaryValue new_value;
412 new_value.SetString(name_, value_); 405 new_value.SetString(kName, kValue);
413 SetExpectPrefChanged(); 406 SetExpectPrefChanged();
414 prefs_.Set(name_, new_value); 407 prefs_.Set(kName, new_value);
415 Mock::VerifyAndClearExpectations(&observer_); 408 Mock::VerifyAndClearExpectations(&observer_);
416 DictionaryValue* dict = prefs_.GetMutableDictionary(name_); 409 DictionaryValue* dict = prefs_.GetMutableDictionary(kName);
417 EXPECT_EQ(1U, dict->size()); 410 EXPECT_EQ(1U, dict->size());
418 std::string out_value; 411 std::string out_value;
419 dict->GetString(name_, &out_value); 412 dict->GetString(kName, &out_value);
420 EXPECT_EQ(value_, out_value); 413 EXPECT_EQ(kValue, out_value);
421 414
422 SetExpectNoNotification(); 415 SetExpectNoNotification();
423 prefs_.Set(name_, new_value); 416 prefs_.Set(kName, new_value);
424 Mock::VerifyAndClearExpectations(&observer_); 417 Mock::VerifyAndClearExpectations(&observer_);
425 418
426 SetExpectPrefChanged(); 419 SetExpectPrefChanged();
427 prefs_.Set(name_, *null_value_); 420 prefs_.Set(kName, *null_value_);
428 Mock::VerifyAndClearExpectations(&observer_); 421 Mock::VerifyAndClearExpectations(&observer_);
429 dict = prefs_.GetMutableDictionary(name_); 422 dict = prefs_.GetMutableDictionary(kName);
430 EXPECT_EQ(0U, dict->size()); 423 EXPECT_EQ(0U, dict->size());
431 } 424 }
432 425
433 TEST_F(PrefServiceSetValueTest, SetListValue) { 426 TEST_F(PrefServiceSetValueTest, SetListValue) {
434 prefs_.RegisterListPref(name_); 427 prefs_.RegisterListPref(kName);
435 PrefChangeRegistrar registrar; 428 PrefChangeRegistrar registrar;
436 registrar.Init(&prefs_); 429 registrar.Init(&prefs_);
437 registrar.Add(name_, &observer_); 430 registrar.Add(kName, &observer_);
438 431
439 // List values are special: setting one to NULL is the same as clearing the 432 // List values are special: setting one to NULL is the same as clearing the
440 // user value, allowing the NULL default to take (or keep) control. 433 // user value, allowing the NULL default to take (or keep) control.
441 SetExpectNoNotification(); 434 SetExpectNoNotification();
442 prefs_.Set(name_, *null_value_); 435 prefs_.Set(kName, *null_value_);
443 Mock::VerifyAndClearExpectations(&observer_); 436 Mock::VerifyAndClearExpectations(&observer_);
444 437
445 ListValue new_value; 438 ListValue new_value;
446 new_value.Append(Value::CreateStringValue(value_)); 439 new_value.Append(Value::CreateStringValue(kValue));
447 SetExpectPrefChanged(); 440 SetExpectPrefChanged();
448 prefs_.Set(name_, new_value); 441 prefs_.Set(kName, new_value);
449 Mock::VerifyAndClearExpectations(&observer_); 442 Mock::VerifyAndClearExpectations(&observer_);
450 ListValue* list = prefs_.GetMutableList(name_); 443 const ListValue* list = prefs_.GetMutableList(kName);
451 ASSERT_EQ(1U, list->GetSize()); 444 ASSERT_EQ(1U, list->GetSize());
452 std::string out_value; 445 std::string out_value;
453 list->GetString(0, &out_value); 446 list->GetString(0, &out_value);
454 EXPECT_EQ(value_, out_value); 447 EXPECT_EQ(kValue, out_value);
455 448
456 SetExpectNoNotification(); 449 SetExpectNoNotification();
457 prefs_.Set(name_, new_value); 450 prefs_.Set(kName, new_value);
458 Mock::VerifyAndClearExpectations(&observer_); 451 Mock::VerifyAndClearExpectations(&observer_);
459 452
460 SetExpectPrefChanged(); 453 SetExpectPrefChanged();
461 prefs_.Set(name_, *null_value_); 454 prefs_.Set(kName, *null_value_);
462 Mock::VerifyAndClearExpectations(&observer_); 455 Mock::VerifyAndClearExpectations(&observer_);
463 list = prefs_.GetMutableList(name_); 456 list = prefs_.GetMutableList(kName);
464 EXPECT_EQ(0U, list->GetSize()); 457 EXPECT_EQ(0U, list->GetSize());
465 } 458 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/dummy_pref_store.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698