OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/policy/core/browser/proxy_policy_handler.h" | 5 #include "components/policy/core/browser/proxy_policy_handler.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 } | 70 } |
71 ProxyPrefs::ProxyMode mode; | 71 ProxyPrefs::ProxyMode mode; |
72 ASSERT_TRUE(dict.GetMode(&mode)); | 72 ASSERT_TRUE(dict.GetMode(&mode)); |
73 EXPECT_EQ(expected_proxy_mode, mode); | 73 EXPECT_EQ(expected_proxy_mode, mode); |
74 } | 74 } |
75 }; | 75 }; |
76 | 76 |
77 TEST_F(ProxyPolicyHandlerTest, ManualOptions) { | 77 TEST_F(ProxyPolicyHandlerTest, ManualOptions) { |
78 PolicyMap policy; | 78 PolicyMap policy; |
79 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 79 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
80 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 80 POLICY_SOURCE_CLOUD, |
81 "http://chromium.org/override"), | 81 base::MakeUnique<base::Value>("http://chromium.org/override"), |
82 nullptr); | 82 nullptr); |
83 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 83 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
84 POLICY_SOURCE_CLOUD, | 84 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("chromium.org"), |
85 base::MakeUnique<base::StringValue>("chromium.org"), nullptr); | 85 nullptr); |
86 policy.Set( | 86 policy.Set( |
87 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 87 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
88 POLICY_SOURCE_CLOUD, | 88 POLICY_SOURCE_CLOUD, |
89 base::MakeUnique<base::Value>( | 89 base::MakeUnique<base::Value>( |
90 ProxyPolicyHandler::PROXY_MANUALLY_CONFIGURED_PROXY_SERVER_MODE), | 90 ProxyPolicyHandler::PROXY_MANUALLY_CONFIGURED_PROXY_SERVER_MODE), |
91 nullptr); | 91 nullptr); |
92 UpdateProviderPolicy(policy); | 92 UpdateProviderPolicy(policy); |
93 | 93 |
94 VerifyProxyPrefs("chromium.org", | 94 VerifyProxyPrefs("chromium.org", |
95 std::string(), | 95 std::string(), |
96 "http://chromium.org/override", | 96 "http://chromium.org/override", |
97 ProxyPrefs::MODE_FIXED_SERVERS); | 97 ProxyPrefs::MODE_FIXED_SERVERS); |
98 } | 98 } |
99 | 99 |
100 TEST_F(ProxyPolicyHandlerTest, ManualOptionsReversedApplyOrder) { | 100 TEST_F(ProxyPolicyHandlerTest, ManualOptionsReversedApplyOrder) { |
101 PolicyMap policy; | 101 PolicyMap policy; |
102 policy.Set( | 102 policy.Set( |
103 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 103 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
104 POLICY_SOURCE_CLOUD, | 104 POLICY_SOURCE_CLOUD, |
105 base::MakeUnique<base::Value>( | 105 base::MakeUnique<base::Value>( |
106 ProxyPolicyHandler::PROXY_MANUALLY_CONFIGURED_PROXY_SERVER_MODE), | 106 ProxyPolicyHandler::PROXY_MANUALLY_CONFIGURED_PROXY_SERVER_MODE), |
107 nullptr); | 107 nullptr); |
108 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 108 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
109 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 109 POLICY_SOURCE_CLOUD, |
110 "http://chromium.org/override"), | 110 base::MakeUnique<base::Value>("http://chromium.org/override"), |
111 nullptr); | 111 nullptr); |
112 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 112 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
113 POLICY_SOURCE_CLOUD, | 113 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("chromium.org"), |
114 base::MakeUnique<base::StringValue>("chromium.org"), nullptr); | 114 nullptr); |
115 UpdateProviderPolicy(policy); | 115 UpdateProviderPolicy(policy); |
116 | 116 |
117 VerifyProxyPrefs("chromium.org", | 117 VerifyProxyPrefs("chromium.org", |
118 std::string(), | 118 std::string(), |
119 "http://chromium.org/override", | 119 "http://chromium.org/override", |
120 ProxyPrefs::MODE_FIXED_SERVERS); | 120 ProxyPrefs::MODE_FIXED_SERVERS); |
121 } | 121 } |
122 | 122 |
123 TEST_F(ProxyPolicyHandlerTest, ManualOptionsInvalid) { | 123 TEST_F(ProxyPolicyHandlerTest, ManualOptionsInvalid) { |
124 PolicyMap policy; | 124 PolicyMap policy; |
(...skipping 17 matching lines...) Expand all Loading... |
142 base::MakeUnique<base::Value>(ProxyPolicyHandler::PROXY_SERVER_MODE), | 142 base::MakeUnique<base::Value>(ProxyPolicyHandler::PROXY_SERVER_MODE), |
143 nullptr); | 143 nullptr); |
144 UpdateProviderPolicy(policy); | 144 UpdateProviderPolicy(policy); |
145 VerifyProxyPrefs( | 145 VerifyProxyPrefs( |
146 std::string(), std::string(), std::string(), ProxyPrefs::MODE_DIRECT); | 146 std::string(), std::string(), std::string(), ProxyPrefs::MODE_DIRECT); |
147 } | 147 } |
148 | 148 |
149 TEST_F(ProxyPolicyHandlerTest, NoProxyModeName) { | 149 TEST_F(ProxyPolicyHandlerTest, NoProxyModeName) { |
150 PolicyMap policy; | 150 PolicyMap policy; |
151 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 151 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
152 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 152 POLICY_SOURCE_CLOUD, |
153 ProxyPrefs::kDirectProxyModeName), | 153 base::MakeUnique<base::Value>(ProxyPrefs::kDirectProxyModeName), |
154 nullptr); | 154 nullptr); |
155 UpdateProviderPolicy(policy); | 155 UpdateProviderPolicy(policy); |
156 VerifyProxyPrefs( | 156 VerifyProxyPrefs( |
157 std::string(), std::string(), std::string(), ProxyPrefs::MODE_DIRECT); | 157 std::string(), std::string(), std::string(), ProxyPrefs::MODE_DIRECT); |
158 } | 158 } |
159 | 159 |
160 TEST_F(ProxyPolicyHandlerTest, AutoDetectProxyServerMode) { | 160 TEST_F(ProxyPolicyHandlerTest, AutoDetectProxyServerMode) { |
161 PolicyMap policy; | 161 PolicyMap policy; |
162 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 162 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
163 POLICY_SOURCE_CLOUD, | 163 POLICY_SOURCE_CLOUD, |
164 base::MakeUnique<base::Value>( | 164 base::MakeUnique<base::Value>( |
165 ProxyPolicyHandler::PROXY_AUTO_DETECT_PROXY_SERVER_MODE), | 165 ProxyPolicyHandler::PROXY_AUTO_DETECT_PROXY_SERVER_MODE), |
166 nullptr); | 166 nullptr); |
167 UpdateProviderPolicy(policy); | 167 UpdateProviderPolicy(policy); |
168 VerifyProxyPrefs(std::string(), | 168 VerifyProxyPrefs(std::string(), |
169 std::string(), | 169 std::string(), |
170 std::string(), | 170 std::string(), |
171 ProxyPrefs::MODE_AUTO_DETECT); | 171 ProxyPrefs::MODE_AUTO_DETECT); |
172 } | 172 } |
173 | 173 |
174 TEST_F(ProxyPolicyHandlerTest, AutoDetectProxyModeName) { | 174 TEST_F(ProxyPolicyHandlerTest, AutoDetectProxyModeName) { |
175 PolicyMap policy; | 175 PolicyMap policy; |
176 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 176 policy.Set( |
177 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 177 key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
178 ProxyPrefs::kAutoDetectProxyModeName), | 178 POLICY_SOURCE_CLOUD, |
179 nullptr); | 179 base::MakeUnique<base::Value>(ProxyPrefs::kAutoDetectProxyModeName), |
| 180 nullptr); |
180 UpdateProviderPolicy(policy); | 181 UpdateProviderPolicy(policy); |
181 VerifyProxyPrefs(std::string(), | 182 VerifyProxyPrefs(std::string(), |
182 std::string(), | 183 std::string(), |
183 std::string(), | 184 std::string(), |
184 ProxyPrefs::MODE_AUTO_DETECT); | 185 ProxyPrefs::MODE_AUTO_DETECT); |
185 } | 186 } |
186 | 187 |
187 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyMode) { | 188 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyMode) { |
188 PolicyMap policy; | 189 PolicyMap policy; |
189 policy.Set(key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 190 policy.Set(key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
190 POLICY_SOURCE_CLOUD, | 191 POLICY_SOURCE_CLOUD, |
191 base::MakeUnique<base::StringValue>("http://short.org/proxy.pac"), | 192 base::MakeUnique<base::Value>("http://short.org/proxy.pac"), |
192 nullptr); | 193 nullptr); |
193 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 194 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
194 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 195 POLICY_SOURCE_CLOUD, |
195 ProxyPrefs::kPacScriptProxyModeName), | 196 base::MakeUnique<base::Value>(ProxyPrefs::kPacScriptProxyModeName), |
196 nullptr); | 197 nullptr); |
197 UpdateProviderPolicy(policy); | 198 UpdateProviderPolicy(policy); |
198 VerifyProxyPrefs(std::string(), | 199 VerifyProxyPrefs(std::string(), |
199 "http://short.org/proxy.pac", | 200 "http://short.org/proxy.pac", |
200 std::string(), | 201 std::string(), |
201 ProxyPrefs::MODE_PAC_SCRIPT); | 202 ProxyPrefs::MODE_PAC_SCRIPT); |
202 } | 203 } |
203 | 204 |
204 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyModeInvalid) { | 205 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyModeInvalid) { |
205 PolicyMap policy; | 206 PolicyMap policy; |
206 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 207 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
207 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 208 POLICY_SOURCE_CLOUD, |
208 ProxyPrefs::kPacScriptProxyModeName), | 209 base::MakeUnique<base::Value>(ProxyPrefs::kPacScriptProxyModeName), |
209 NULL); | 210 NULL); |
210 UpdateProviderPolicy(policy); | 211 UpdateProviderPolicy(policy); |
211 const base::Value* value = NULL; | 212 const base::Value* value = NULL; |
212 EXPECT_FALSE(store_->GetValue(proxy_config::prefs::kProxy, &value)); | 213 EXPECT_FALSE(store_->GetValue(proxy_config::prefs::kProxy, &value)); |
213 } | 214 } |
214 | 215 |
215 // Regression test for http://crbug.com/78016, CPanel returns empty strings | 216 // Regression test for http://crbug.com/78016, CPanel returns empty strings |
216 // for unset properties. | 217 // for unset properties. |
217 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyModeBug78016) { | 218 TEST_F(ProxyPolicyHandlerTest, PacScriptProxyModeBug78016) { |
218 PolicyMap policy; | 219 PolicyMap policy; |
219 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 220 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
220 POLICY_SOURCE_CLOUD, | 221 POLICY_SOURCE_CLOUD, |
221 base::WrapUnique(new base::StringValue(std::string())), nullptr); | 222 base::WrapUnique(new base::Value(std::string())), nullptr); |
| 223 policy.Set(key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 224 POLICY_SOURCE_CLOUD, |
| 225 base::WrapUnique(new base::Value("http://short.org/proxy.pac")), |
| 226 nullptr); |
222 policy.Set( | 227 policy.Set( |
223 key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 228 key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
224 POLICY_SOURCE_CLOUD, | 229 POLICY_SOURCE_CLOUD, |
225 base::WrapUnique(new base::StringValue("http://short.org/proxy.pac")), | 230 base::WrapUnique(new base::Value(ProxyPrefs::kPacScriptProxyModeName)), |
226 nullptr); | 231 nullptr); |
227 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
228 POLICY_SOURCE_CLOUD, base::WrapUnique(new base::StringValue( | |
229 ProxyPrefs::kPacScriptProxyModeName)), | |
230 nullptr); | |
231 UpdateProviderPolicy(policy); | 232 UpdateProviderPolicy(policy); |
232 VerifyProxyPrefs(std::string(), | 233 VerifyProxyPrefs(std::string(), |
233 "http://short.org/proxy.pac", | 234 "http://short.org/proxy.pac", |
234 std::string(), | 235 std::string(), |
235 ProxyPrefs::MODE_PAC_SCRIPT); | 236 ProxyPrefs::MODE_PAC_SCRIPT); |
236 } | 237 } |
237 | 238 |
238 TEST_F(ProxyPolicyHandlerTest, UseSystemProxyServerMode) { | 239 TEST_F(ProxyPolicyHandlerTest, UseSystemProxyServerMode) { |
239 PolicyMap policy; | 240 PolicyMap policy; |
240 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 241 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
241 POLICY_SOURCE_CLOUD, | 242 POLICY_SOURCE_CLOUD, |
242 base::MakeUnique<base::Value>( | 243 base::MakeUnique<base::Value>( |
243 ProxyPolicyHandler::PROXY_USE_SYSTEM_PROXY_SERVER_MODE), | 244 ProxyPolicyHandler::PROXY_USE_SYSTEM_PROXY_SERVER_MODE), |
244 nullptr); | 245 nullptr); |
245 UpdateProviderPolicy(policy); | 246 UpdateProviderPolicy(policy); |
246 VerifyProxyPrefs( | 247 VerifyProxyPrefs( |
247 std::string(), std::string(), std::string(), ProxyPrefs::MODE_SYSTEM); | 248 std::string(), std::string(), std::string(), ProxyPrefs::MODE_SYSTEM); |
248 } | 249 } |
249 | 250 |
250 TEST_F(ProxyPolicyHandlerTest, UseSystemProxyMode) { | 251 TEST_F(ProxyPolicyHandlerTest, UseSystemProxyMode) { |
251 PolicyMap policy; | 252 PolicyMap policy; |
252 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 253 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
253 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 254 POLICY_SOURCE_CLOUD, |
254 ProxyPrefs::kSystemProxyModeName), | 255 base::MakeUnique<base::Value>(ProxyPrefs::kSystemProxyModeName), |
255 nullptr); | 256 nullptr); |
256 UpdateProviderPolicy(policy); | 257 UpdateProviderPolicy(policy); |
257 VerifyProxyPrefs( | 258 VerifyProxyPrefs( |
258 std::string(), std::string(), std::string(), ProxyPrefs::MODE_SYSTEM); | 259 std::string(), std::string(), std::string(), ProxyPrefs::MODE_SYSTEM); |
259 } | 260 } |
260 | 261 |
261 TEST_F(ProxyPolicyHandlerTest, | 262 TEST_F(ProxyPolicyHandlerTest, |
262 ProxyModeOverridesProxyServerMode) { | 263 ProxyModeOverridesProxyServerMode) { |
263 PolicyMap policy; | 264 PolicyMap policy; |
264 policy.Set( | 265 policy.Set( |
265 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 266 key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
266 POLICY_SOURCE_CLOUD, | 267 POLICY_SOURCE_CLOUD, |
267 base::MakeUnique<base::Value>(ProxyPolicyHandler::PROXY_SERVER_MODE), | 268 base::MakeUnique<base::Value>(ProxyPolicyHandler::PROXY_SERVER_MODE), |
268 nullptr); | 269 nullptr); |
269 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 270 policy.Set( |
270 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 271 key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
271 ProxyPrefs::kAutoDetectProxyModeName), | 272 POLICY_SOURCE_CLOUD, |
272 nullptr); | 273 base::MakeUnique<base::Value>(ProxyPrefs::kAutoDetectProxyModeName), |
| 274 nullptr); |
273 UpdateProviderPolicy(policy); | 275 UpdateProviderPolicy(policy); |
274 VerifyProxyPrefs(std::string(), | 276 VerifyProxyPrefs(std::string(), |
275 std::string(), | 277 std::string(), |
276 std::string(), | 278 std::string(), |
277 ProxyPrefs::MODE_AUTO_DETECT); | 279 ProxyPrefs::MODE_AUTO_DETECT); |
278 } | 280 } |
279 | 281 |
280 TEST_F(ProxyPolicyHandlerTest, ProxyInvalid) { | 282 TEST_F(ProxyPolicyHandlerTest, ProxyInvalid) { |
281 // No mode expects all three parameters being set. | 283 // No mode expects all three parameters being set. |
282 PolicyMap policy; | 284 PolicyMap policy; |
283 policy.Set(key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 285 policy.Set(key::kProxyPacUrl, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
284 POLICY_SOURCE_CLOUD, | 286 POLICY_SOURCE_CLOUD, |
285 base::MakeUnique<base::StringValue>("http://short.org/proxy.pac"), | 287 base::MakeUnique<base::Value>("http://short.org/proxy.pac"), |
286 nullptr); | 288 nullptr); |
287 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 289 policy.Set(key::kProxyBypassList, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
288 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 290 POLICY_SOURCE_CLOUD, |
289 "http://chromium.org/override"), | 291 base::MakeUnique<base::Value>("http://chromium.org/override"), |
290 nullptr); | 292 nullptr); |
291 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 293 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
292 POLICY_SOURCE_CLOUD, | 294 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("chromium.org"), |
293 base::MakeUnique<base::StringValue>("chromium.org"), nullptr); | 295 nullptr); |
294 for (int i = 0; i < ProxyPolicyHandler::MODE_COUNT; ++i) { | 296 for (int i = 0; i < ProxyPolicyHandler::MODE_COUNT; ++i) { |
295 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 297 policy.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
296 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(i), nullptr); | 298 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(i), nullptr); |
297 UpdateProviderPolicy(policy); | 299 UpdateProviderPolicy(policy); |
298 const base::Value* value = nullptr; | 300 const base::Value* value = nullptr; |
299 EXPECT_FALSE(store_->GetValue(proxy_config::prefs::kProxy, &value)); | 301 EXPECT_FALSE(store_->GetValue(proxy_config::prefs::kProxy, &value)); |
300 } | 302 } |
301 } | 303 } |
302 | 304 |
303 } // namespace policy | 305 } // namespace policy |
OLD | NEW |