| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 const PolicyMap& policies, const char* policy_name) { | 220 const PolicyMap& policies, const char* policy_name) { |
| 221 // See note on the ProxyPolicyHandler implementation above. | 221 // See note on the ProxyPolicyHandler implementation above. |
| 222 const base::Value* value = policies.GetValue(key::kProxySettings); | 222 const base::Value* value = policies.GetValue(key::kProxySettings); |
| 223 const base::DictionaryValue* settings; | 223 const base::DictionaryValue* settings; |
| 224 if (!value || !value->GetAsDictionary(&settings)) | 224 if (!value || !value->GetAsDictionary(&settings)) |
| 225 return NULL; | 225 return NULL; |
| 226 | 226 |
| 227 const base::Value* policy_value = NULL; | 227 const base::Value* policy_value = NULL; |
| 228 std::string tmp; | 228 std::string tmp; |
| 229 if (!settings->Get(policy_name, &policy_value) || | 229 if (!settings->Get(policy_name, &policy_value) || |
| 230 policy_value->IsType(base::Value::TYPE_NULL) || | 230 policy_value->IsType(base::Value::Type::NONE) || |
| 231 (policy_value->IsType(base::Value::TYPE_STRING) && | 231 (policy_value->IsType(base::Value::Type::STRING) && |
| 232 policy_value->GetAsString(&tmp) && | 232 policy_value->GetAsString(&tmp) && |
| 233 tmp.empty())) { | 233 tmp.empty())) { |
| 234 return NULL; | 234 return NULL; |
| 235 } | 235 } |
| 236 return policy_value; | 236 return policy_value; |
| 237 } | 237 } |
| 238 | 238 |
| 239 bool ProxyPolicyHandler::CheckProxyModeAndServerMode(const PolicyMap& policies, | 239 bool ProxyPolicyHandler::CheckProxyModeAndServerMode(const PolicyMap& policies, |
| 240 PolicyErrorMap* errors, | 240 PolicyErrorMap* errors, |
| 241 std::string* mode_value) { | 241 std::string* mode_value) { |
| 242 const base::Value* mode = GetProxyPolicyValue(policies, key::kProxyMode); | 242 const base::Value* mode = GetProxyPolicyValue(policies, key::kProxyMode); |
| 243 const base::Value* server = GetProxyPolicyValue(policies, key::kProxyServer); | 243 const base::Value* server = GetProxyPolicyValue(policies, key::kProxyServer); |
| 244 const base::Value* server_mode = | 244 const base::Value* server_mode = |
| 245 GetProxyPolicyValue(policies, key::kProxyServerMode); | 245 GetProxyPolicyValue(policies, key::kProxyServerMode); |
| 246 const base::Value* pac_url = GetProxyPolicyValue(policies, key::kProxyPacUrl); | 246 const base::Value* pac_url = GetProxyPolicyValue(policies, key::kProxyPacUrl); |
| 247 | 247 |
| 248 // If there's a server mode, convert it into a mode. | 248 // If there's a server mode, convert it into a mode. |
| 249 // When both are specified, the mode takes precedence. | 249 // When both are specified, the mode takes precedence. |
| 250 if (mode) { | 250 if (mode) { |
| 251 if (server_mode) { | 251 if (server_mode) { |
| 252 errors->AddError(key::kProxySettings, | 252 errors->AddError(key::kProxySettings, |
| 253 key::kProxyServerMode, | 253 key::kProxyServerMode, |
| 254 IDS_POLICY_OVERRIDDEN, | 254 IDS_POLICY_OVERRIDDEN, |
| 255 key::kProxyMode); | 255 key::kProxyMode); |
| 256 } | 256 } |
| 257 if (!mode->GetAsString(mode_value)) { | 257 if (!mode->GetAsString(mode_value)) { |
| 258 errors->AddError(key::kProxySettings, key::kProxyMode, | 258 errors->AddError(key::kProxySettings, key::kProxyMode, |
| 259 IDS_POLICY_TYPE_ERROR, | 259 IDS_POLICY_TYPE_ERROR, |
| 260 base::Value::GetTypeName(base::Value::TYPE_BOOLEAN)); | 260 base::Value::GetTypeName(base::Value::Type::BOOLEAN)); |
| 261 return false; | 261 return false; |
| 262 } | 262 } |
| 263 | 263 |
| 264 ProxyPrefs::ProxyMode mode; | 264 ProxyPrefs::ProxyMode mode; |
| 265 if (!ProxyPrefs::StringToProxyMode(*mode_value, &mode)) { | 265 if (!ProxyPrefs::StringToProxyMode(*mode_value, &mode)) { |
| 266 errors->AddError(key::kProxySettings, | 266 errors->AddError(key::kProxySettings, |
| 267 key::kProxyMode, | 267 key::kProxyMode, |
| 268 IDS_POLICY_INVALID_PROXY_MODE_ERROR); | 268 IDS_POLICY_INVALID_PROXY_MODE_ERROR); |
| 269 return false; | 269 return false; |
| 270 } | 270 } |
| 271 | 271 |
| 272 if (mode == ProxyPrefs::MODE_PAC_SCRIPT && !pac_url) { | 272 if (mode == ProxyPrefs::MODE_PAC_SCRIPT && !pac_url) { |
| 273 errors->AddError(key::kProxySettings, | 273 errors->AddError(key::kProxySettings, |
| 274 key::kProxyPacUrl, | 274 key::kProxyPacUrl, |
| 275 IDS_POLICY_NOT_SPECIFIED_ERROR); | 275 IDS_POLICY_NOT_SPECIFIED_ERROR); |
| 276 return false; | 276 return false; |
| 277 } | 277 } |
| 278 if (mode == ProxyPrefs::MODE_FIXED_SERVERS && !server) { | 278 if (mode == ProxyPrefs::MODE_FIXED_SERVERS && !server) { |
| 279 errors->AddError(key::kProxySettings, | 279 errors->AddError(key::kProxySettings, |
| 280 key::kProxyServer, | 280 key::kProxyServer, |
| 281 IDS_POLICY_NOT_SPECIFIED_ERROR); | 281 IDS_POLICY_NOT_SPECIFIED_ERROR); |
| 282 return false; | 282 return false; |
| 283 } | 283 } |
| 284 } else if (server_mode) { | 284 } else if (server_mode) { |
| 285 int server_mode_value; | 285 int server_mode_value; |
| 286 if (!server_mode->GetAsInteger(&server_mode_value)) { | 286 if (!server_mode->GetAsInteger(&server_mode_value)) { |
| 287 errors->AddError(key::kProxySettings, key::kProxyServerMode, | 287 errors->AddError(key::kProxySettings, key::kProxyServerMode, |
| 288 IDS_POLICY_TYPE_ERROR, | 288 IDS_POLICY_TYPE_ERROR, |
| 289 base::Value::GetTypeName(base::Value::TYPE_INTEGER)); | 289 base::Value::GetTypeName(base::Value::Type::INTEGER)); |
| 290 return false; | 290 return false; |
| 291 } | 291 } |
| 292 | 292 |
| 293 switch (server_mode_value) { | 293 switch (server_mode_value) { |
| 294 case PROXY_SERVER_MODE: | 294 case PROXY_SERVER_MODE: |
| 295 *mode_value = ProxyPrefs::kDirectProxyModeName; | 295 *mode_value = ProxyPrefs::kDirectProxyModeName; |
| 296 break; | 296 break; |
| 297 case PROXY_AUTO_DETECT_PROXY_SERVER_MODE: | 297 case PROXY_AUTO_DETECT_PROXY_SERVER_MODE: |
| 298 *mode_value = ProxyPrefs::kAutoDetectProxyModeName; | 298 *mode_value = ProxyPrefs::kAutoDetectProxyModeName; |
| 299 break; | 299 break; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 329 key::kProxyServerMode, | 329 key::kProxyServerMode, |
| 330 IDS_POLICY_OUT_OF_RANGE_ERROR, | 330 IDS_POLICY_OUT_OF_RANGE_ERROR, |
| 331 base::IntToString(server_mode_value)); | 331 base::IntToString(server_mode_value)); |
| 332 return false; | 332 return false; |
| 333 } | 333 } |
| 334 } | 334 } |
| 335 return true; | 335 return true; |
| 336 } | 336 } |
| 337 | 337 |
| 338 } // namespace policy | 338 } // namespace policy |
| OLD | NEW |