| OLD | NEW |
| 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 #include "net/proxy/proxy_config.h" | 5 #include "net/proxy/proxy_config.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/string_tokenizer.h" | 9 #include "base/strings/string_tokenizer.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 bool ProxyConfig::HasAutomaticSettings() const { | 225 bool ProxyConfig::HasAutomaticSettings() const { |
| 226 return auto_detect_ || has_pac_url(); | 226 return auto_detect_ || has_pac_url(); |
| 227 } | 227 } |
| 228 | 228 |
| 229 void ProxyConfig::ClearAutomaticSettings() { | 229 void ProxyConfig::ClearAutomaticSettings() { |
| 230 auto_detect_ = false; | 230 auto_detect_ = false; |
| 231 pac_url_ = GURL(); | 231 pac_url_ = GURL(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 base::DictionaryValue* ProxyConfig::ToValue() const { | 234 base::DictionaryValue* ProxyConfig::ToValue() const { |
| 235 base::DictionaryValue* dict = new base::DictionaryValue(); | 235 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
| 236 | 236 |
| 237 // Output the automatic settings. | 237 // Output the automatic settings. |
| 238 if (auto_detect_) | 238 if (auto_detect_) |
| 239 dict->SetBoolean("auto_detect", auto_detect_); | 239 dict->SetBoolean("auto_detect", auto_detect_); |
| 240 if (has_pac_url()) { | 240 if (has_pac_url()) { |
| 241 dict->SetString("pac_url", pac_url_.possibly_invalid_spec()); | 241 dict->SetString("pac_url", pac_url_.possibly_invalid_spec()); |
| 242 if (pac_mandatory_) | 242 if (pac_mandatory_) |
| 243 dict->SetBoolean("pac_mandatory", pac_mandatory_); | 243 dict->SetBoolean("pac_mandatory", pac_mandatory_); |
| 244 } | 244 } |
| 245 | 245 |
| 246 // Output the manual settings. | 246 // Output the manual settings. |
| 247 if (proxy_rules_.type != ProxyRules::TYPE_NO_RULES) { | 247 if (proxy_rules_.type != ProxyRules::TYPE_NO_RULES) { |
| 248 switch (proxy_rules_.type) { | 248 switch (proxy_rules_.type) { |
| 249 case ProxyRules::TYPE_SINGLE_PROXY: | 249 case ProxyRules::TYPE_SINGLE_PROXY: |
| 250 AddProxyListToValue("single_proxy", | 250 AddProxyListToValue("single_proxy", proxy_rules_.single_proxies, |
| 251 proxy_rules_.single_proxies, dict); | 251 dict.get()); |
| 252 break; | 252 break; |
| 253 case ProxyRules::TYPE_PROXY_PER_SCHEME: { | 253 case ProxyRules::TYPE_PROXY_PER_SCHEME: { |
| 254 base::DictionaryValue* dict2 = new base::DictionaryValue(); | 254 scoped_ptr<base::DictionaryValue> dict2(new base::DictionaryValue()); |
| 255 AddProxyListToValue("http", proxy_rules_.proxies_for_http, dict2); | 255 AddProxyListToValue("http", proxy_rules_.proxies_for_http, dict2.get()); |
| 256 AddProxyListToValue("https", proxy_rules_.proxies_for_https, dict2); | 256 AddProxyListToValue("https", proxy_rules_.proxies_for_https, |
| 257 AddProxyListToValue("ftp", proxy_rules_.proxies_for_ftp, dict2); | 257 dict2.get()); |
| 258 AddProxyListToValue("fallback", proxy_rules_.fallback_proxies, dict2); | 258 AddProxyListToValue("ftp", proxy_rules_.proxies_for_ftp, dict2.get()); |
| 259 dict->Set("proxy_per_scheme", dict2); | 259 AddProxyListToValue("fallback", proxy_rules_.fallback_proxies, |
| 260 dict2.get()); |
| 261 dict->Set("proxy_per_scheme", dict2.Pass()); |
| 260 break; | 262 break; |
| 261 } | 263 } |
| 262 default: | 264 default: |
| 263 NOTREACHED(); | 265 NOTREACHED(); |
| 264 } | 266 } |
| 265 | 267 |
| 266 // Output the bypass rules. | 268 // Output the bypass rules. |
| 267 const ProxyBypassRules& bypass = proxy_rules_.bypass_rules; | 269 const ProxyBypassRules& bypass = proxy_rules_.bypass_rules; |
| 268 if (!bypass.rules().empty()) { | 270 if (!bypass.rules().empty()) { |
| 269 if (proxy_rules_.reverse_bypass) | 271 if (proxy_rules_.reverse_bypass) |
| 270 dict->SetBoolean("reverse_bypass", true); | 272 dict->SetBoolean("reverse_bypass", true); |
| 271 | 273 |
| 272 base::ListValue* list = new base::ListValue(); | 274 base::ListValue* list = new base::ListValue(); |
| 273 | 275 |
| 274 for (ProxyBypassRules::RuleList::const_iterator it = | 276 for (ProxyBypassRules::RuleList::const_iterator it = |
| 275 bypass.rules().begin(); | 277 bypass.rules().begin(); |
| 276 it != bypass.rules().end(); ++it) { | 278 it != bypass.rules().end(); ++it) { |
| 277 list->Append(new base::StringValue((*it)->ToString())); | 279 list->Append(new base::StringValue((*it)->ToString())); |
| 278 } | 280 } |
| 279 | 281 |
| 280 dict->Set("bypass_list", list); | 282 dict->Set("bypass_list", list); |
| 281 } | 283 } |
| 282 } | 284 } |
| 283 | 285 |
| 284 // Output the source. | 286 // Output the source. |
| 285 dict->SetString("source", ProxyConfigSourceToString(source_)); | 287 dict->SetString("source", ProxyConfigSourceToString(source_)); |
| 286 | 288 |
| 287 return dict; | 289 return dict.release(); |
| 288 } | 290 } |
| 289 | 291 |
| 290 } // namespace net | 292 } // namespace net |
| OLD | NEW |