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 "chrome/browser/net/proxy_policy_handler.h" | 5 #include "chrome/browser/net/proxy_policy_handler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/prefs/pref_value_map.h" | 8 #include "base/prefs/pref_value_map.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 break; | 205 break; |
206 case ProxyPrefs::kModeCount: | 206 case ProxyPrefs::kModeCount: |
207 NOTREACHED(); | 207 NOTREACHED(); |
208 } | 208 } |
209 } | 209 } |
210 | 210 |
211 const base::Value* ProxyPolicyHandler::GetProxyPolicyValue( | 211 const base::Value* ProxyPolicyHandler::GetProxyPolicyValue( |
212 const PolicyMap& policies, const char* policy_name) { | 212 const PolicyMap& policies, const char* policy_name) { |
213 // See note on the ProxyPolicyHandler implementation above. | 213 // See note on the ProxyPolicyHandler implementation above. |
214 const base::Value* value = policies.GetValue(key::kProxySettings); | 214 const base::Value* value = policies.GetValue(key::kProxySettings); |
215 const DictionaryValue* settings; | 215 const base::DictionaryValue* settings; |
216 if (!value || !value->GetAsDictionary(&settings)) | 216 if (!value || !value->GetAsDictionary(&settings)) |
217 return NULL; | 217 return NULL; |
218 | 218 |
219 const base::Value* policy_value = NULL; | 219 const base::Value* policy_value = NULL; |
220 std::string tmp; | 220 std::string tmp; |
221 if (!settings->Get(policy_name, &policy_value) || | 221 if (!settings->Get(policy_name, &policy_value) || |
222 policy_value->IsType(Value::TYPE_NULL) || | 222 policy_value->IsType(base::Value::TYPE_NULL) || |
223 (policy_value->IsType(Value::TYPE_STRING) && | 223 (policy_value->IsType(base::Value::TYPE_STRING) && |
224 policy_value->GetAsString(&tmp) && | 224 policy_value->GetAsString(&tmp) && |
225 tmp.empty())) { | 225 tmp.empty())) { |
226 return NULL; | 226 return NULL; |
227 } | 227 } |
228 return policy_value; | 228 return policy_value; |
229 } | 229 } |
230 | 230 |
231 bool ProxyPolicyHandler::CheckProxyModeAndServerMode(const PolicyMap& policies, | 231 bool ProxyPolicyHandler::CheckProxyModeAndServerMode(const PolicyMap& policies, |
232 PolicyErrorMap* errors, | 232 PolicyErrorMap* errors, |
233 std::string* mode_value) { | 233 std::string* mode_value) { |
234 const base::Value* mode = GetProxyPolicyValue(policies, key::kProxyMode); | 234 const base::Value* mode = GetProxyPolicyValue(policies, key::kProxyMode); |
235 const base::Value* server = GetProxyPolicyValue(policies, key::kProxyServer); | 235 const base::Value* server = GetProxyPolicyValue(policies, key::kProxyServer); |
236 const base::Value* server_mode = | 236 const base::Value* server_mode = |
237 GetProxyPolicyValue(policies, key::kProxyServerMode); | 237 GetProxyPolicyValue(policies, key::kProxyServerMode); |
238 const base::Value* pac_url = GetProxyPolicyValue(policies, key::kProxyPacUrl); | 238 const base::Value* pac_url = GetProxyPolicyValue(policies, key::kProxyPacUrl); |
239 | 239 |
240 // If there's a server mode, convert it into a mode. | 240 // If there's a server mode, convert it into a mode. |
241 // When both are specified, the mode takes precedence. | 241 // When both are specified, the mode takes precedence. |
242 if (mode) { | 242 if (mode) { |
243 if (server_mode) { | 243 if (server_mode) { |
244 errors->AddError(key::kProxySettings, | 244 errors->AddError(key::kProxySettings, |
245 key::kProxyServerMode, | 245 key::kProxyServerMode, |
246 IDS_POLICY_OVERRIDDEN, | 246 IDS_POLICY_OVERRIDDEN, |
247 key::kProxyMode); | 247 key::kProxyMode); |
248 } | 248 } |
249 if (!mode->GetAsString(mode_value)) { | 249 if (!mode->GetAsString(mode_value)) { |
250 errors->AddError(key::kProxySettings, | 250 errors->AddError(key::kProxySettings, |
251 key::kProxyMode, | 251 key::kProxyMode, |
252 IDS_POLICY_TYPE_ERROR, | 252 IDS_POLICY_TYPE_ERROR, |
253 ValueTypeToString(Value::TYPE_BOOLEAN)); | 253 ValueTypeToString(base::Value::TYPE_BOOLEAN)); |
254 return false; | 254 return false; |
255 } | 255 } |
256 | 256 |
257 ProxyPrefs::ProxyMode mode; | 257 ProxyPrefs::ProxyMode mode; |
258 if (!ProxyPrefs::StringToProxyMode(*mode_value, &mode)) { | 258 if (!ProxyPrefs::StringToProxyMode(*mode_value, &mode)) { |
259 errors->AddError(key::kProxySettings, | 259 errors->AddError(key::kProxySettings, |
260 key::kProxyMode, | 260 key::kProxyMode, |
261 IDS_POLICY_INVALID_PROXY_MODE_ERROR); | 261 IDS_POLICY_INVALID_PROXY_MODE_ERROR); |
262 return false; | 262 return false; |
263 } | 263 } |
264 | 264 |
265 if (mode == ProxyPrefs::MODE_PAC_SCRIPT && !pac_url) { | 265 if (mode == ProxyPrefs::MODE_PAC_SCRIPT && !pac_url) { |
266 errors->AddError(key::kProxySettings, | 266 errors->AddError(key::kProxySettings, |
267 key::kProxyPacUrl, | 267 key::kProxyPacUrl, |
268 IDS_POLICY_NOT_SPECIFIED_ERROR); | 268 IDS_POLICY_NOT_SPECIFIED_ERROR); |
269 return false; | 269 return false; |
270 } else if (mode == ProxyPrefs::MODE_FIXED_SERVERS && !server) { | 270 } else if (mode == ProxyPrefs::MODE_FIXED_SERVERS && !server) { |
271 errors->AddError(key::kProxySettings, | 271 errors->AddError(key::kProxySettings, |
272 key::kProxyServer, | 272 key::kProxyServer, |
273 IDS_POLICY_NOT_SPECIFIED_ERROR); | 273 IDS_POLICY_NOT_SPECIFIED_ERROR); |
274 return false; | 274 return false; |
275 } | 275 } |
276 } else if (server_mode) { | 276 } else if (server_mode) { |
277 int server_mode_value; | 277 int server_mode_value; |
278 if (!server_mode->GetAsInteger(&server_mode_value)) { | 278 if (!server_mode->GetAsInteger(&server_mode_value)) { |
279 errors->AddError(key::kProxySettings, | 279 errors->AddError(key::kProxySettings, |
280 key::kProxyServerMode, | 280 key::kProxyServerMode, |
281 IDS_POLICY_TYPE_ERROR, | 281 IDS_POLICY_TYPE_ERROR, |
282 ValueTypeToString(Value::TYPE_INTEGER)); | 282 ValueTypeToString(base::Value::TYPE_INTEGER)); |
283 return false; | 283 return false; |
284 } | 284 } |
285 | 285 |
286 switch (server_mode_value) { | 286 switch (server_mode_value) { |
287 case PROXY_SERVER_MODE: | 287 case PROXY_SERVER_MODE: |
288 *mode_value = ProxyPrefs::kDirectProxyModeName; | 288 *mode_value = ProxyPrefs::kDirectProxyModeName; |
289 break; | 289 break; |
290 case PROXY_AUTO_DETECT_PROXY_SERVER_MODE: | 290 case PROXY_AUTO_DETECT_PROXY_SERVER_MODE: |
291 *mode_value = ProxyPrefs::kAutoDetectProxyModeName; | 291 *mode_value = ProxyPrefs::kAutoDetectProxyModeName; |
292 break; | 292 break; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 key::kProxyServerMode, | 324 key::kProxyServerMode, |
325 IDS_POLICY_OUT_OF_RANGE_ERROR, | 325 IDS_POLICY_OUT_OF_RANGE_ERROR, |
326 base::IntToString(server_mode_value)); | 326 base::IntToString(server_mode_value)); |
327 return false; | 327 return false; |
328 } | 328 } |
329 } | 329 } |
330 return true; | 330 return true; |
331 } | 331 } |
332 | 332 |
333 } // namespace policy | 333 } // namespace policy |
OLD | NEW |