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

Side by Side Diff: net/proxy/proxy_config.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months 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 | Annotate | Revision Log
OLDNEW
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 18 matching lines...) Expand all
29 base::StringTokenizer proxy_uri_list(uri_list, ","); 29 base::StringTokenizer proxy_uri_list(uri_list, ",");
30 while (proxy_uri_list.GetNext()) { 30 while (proxy_uri_list.GetNext()) {
31 proxy_list->AddProxyServer( 31 proxy_list->AddProxyServer(
32 ProxyServer::FromURI(proxy_uri_list.token(), default_scheme)); 32 ProxyServer::FromURI(proxy_uri_list.token(), default_scheme));
33 } 33 }
34 } 34 }
35 35
36 } // namespace 36 } // namespace
37 37
38 ProxyConfig::ProxyRules::ProxyRules() 38 ProxyConfig::ProxyRules::ProxyRules()
39 : reverse_bypass(false), 39 : reverse_bypass(false), type(TYPE_NO_RULES) {
40 type(TYPE_NO_RULES) {
41 } 40 }
42 41
43 ProxyConfig::ProxyRules::~ProxyRules() { 42 ProxyConfig::ProxyRules::~ProxyRules() {
44 } 43 }
45 44
46 void ProxyConfig::ProxyRules::Apply(const GURL& url, ProxyInfo* result) const { 45 void ProxyConfig::ProxyRules::Apply(const GURL& url, ProxyInfo* result) const {
47 if (empty()) { 46 if (empty()) {
48 result->UseDirect(); 47 result->UseDirect();
49 return; 48 return;
50 } 49 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 96
98 while (proxy_server_for_scheme.GetNext()) { 97 while (proxy_server_for_scheme.GetNext()) {
99 std::string url_scheme = proxy_server_for_scheme.token(); 98 std::string url_scheme = proxy_server_for_scheme.token();
100 99
101 // If we fail to get the proxy server here, it means that 100 // If we fail to get the proxy server here, it means that
102 // this is a regular proxy server configuration, i.e. proxies 101 // this is a regular proxy server configuration, i.e. proxies
103 // are not configured per protocol. 102 // are not configured per protocol.
104 if (!proxy_server_for_scheme.GetNext()) { 103 if (!proxy_server_for_scheme.GetNext()) {
105 if (type == TYPE_PROXY_PER_SCHEME) 104 if (type == TYPE_PROXY_PER_SCHEME)
106 continue; // Unexpected. 105 continue; // Unexpected.
107 AddProxyURIListToProxyList(url_scheme, 106 AddProxyURIListToProxyList(
108 &single_proxies, 107 url_scheme, &single_proxies, ProxyServer::SCHEME_HTTP);
109 ProxyServer::SCHEME_HTTP);
110 type = TYPE_SINGLE_PROXY; 108 type = TYPE_SINGLE_PROXY;
111 return; 109 return;
112 } 110 }
113 111
114 // Trim whitespace off the url scheme. 112 // Trim whitespace off the url scheme.
115 base::TrimWhitespaceASCII(url_scheme, base::TRIM_ALL, &url_scheme); 113 base::TrimWhitespaceASCII(url_scheme, base::TRIM_ALL, &url_scheme);
116 114
117 // Add it to the per-scheme mappings (if supported scheme). 115 // Add it to the per-scheme mappings (if supported scheme).
118 type = TYPE_PROXY_PER_SCHEME; 116 type = TYPE_PROXY_PER_SCHEME;
119 ProxyList* entry = MapUrlSchemeToProxyListNoFallback(url_scheme); 117 ProxyList* entry = MapUrlSchemeToProxyListNoFallback(url_scheme);
120 ProxyServer::Scheme default_scheme = ProxyServer::SCHEME_HTTP; 118 ProxyServer::Scheme default_scheme = ProxyServer::SCHEME_HTTP;
121 119
122 // socks=XXX is inconsistent with the other formats, since "socks" 120 // socks=XXX is inconsistent with the other formats, since "socks"
123 // is not a URL scheme. Rather this means "for everything else, send 121 // is not a URL scheme. Rather this means "for everything else, send
124 // it to the SOCKS proxy server XXX". 122 // it to the SOCKS proxy server XXX".
125 if (url_scheme == "socks") { 123 if (url_scheme == "socks") {
126 DCHECK(!entry); 124 DCHECK(!entry);
127 entry = &fallback_proxies; 125 entry = &fallback_proxies;
128 // Note that here 'socks' is understood to be SOCKS4, even though 126 // Note that here 'socks' is understood to be SOCKS4, even though
129 // 'socks' maps to SOCKS5 in ProxyServer::GetSchemeFromURIInternal. 127 // 'socks' maps to SOCKS5 in ProxyServer::GetSchemeFromURIInternal.
130 default_scheme = ProxyServer::SCHEME_SOCKS4; 128 default_scheme = ProxyServer::SCHEME_SOCKS4;
131 } 129 }
132 130
133 if (entry) { 131 if (entry) {
134 AddProxyURIListToProxyList(proxy_server_for_scheme.token(), 132 AddProxyURIListToProxyList(
135 entry, 133 proxy_server_for_scheme.token(), entry, default_scheme);
136 default_scheme);
137 } 134 }
138 } 135 }
139 } 136 }
140 } 137 }
141 138
142 const ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyList( 139 const ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyList(
143 const std::string& url_scheme) const { 140 const std::string& url_scheme) const {
144 const ProxyList* proxy_server_list = const_cast<ProxyRules*>(this)-> 141 const ProxyList* proxy_server_list =
145 MapUrlSchemeToProxyListNoFallback(url_scheme); 142 const_cast<ProxyRules*>(this)
143 ->MapUrlSchemeToProxyListNoFallback(url_scheme);
146 if (proxy_server_list && !proxy_server_list->IsEmpty()) 144 if (proxy_server_list && !proxy_server_list->IsEmpty())
147 return proxy_server_list; 145 return proxy_server_list;
148 if (!fallback_proxies.IsEmpty()) 146 if (!fallback_proxies.IsEmpty())
149 return &fallback_proxies; 147 return &fallback_proxies;
150 return NULL; // No mapping for this scheme. Use direct. 148 return NULL; // No mapping for this scheme. Use direct.
151 } 149 }
152 150
153 bool ProxyConfig::ProxyRules::Equals(const ProxyRules& other) const { 151 bool ProxyConfig::ProxyRules::Equals(const ProxyRules& other) const {
154 return type == other.type && 152 return type == other.type && single_proxies.Equals(other.single_proxies) &&
155 single_proxies.Equals(other.single_proxies) &&
156 proxies_for_http.Equals(other.proxies_for_http) && 153 proxies_for_http.Equals(other.proxies_for_http) &&
157 proxies_for_https.Equals(other.proxies_for_https) && 154 proxies_for_https.Equals(other.proxies_for_https) &&
158 proxies_for_ftp.Equals(other.proxies_for_ftp) && 155 proxies_for_ftp.Equals(other.proxies_for_ftp) &&
159 fallback_proxies.Equals(other.fallback_proxies) && 156 fallback_proxies.Equals(other.fallback_proxies) &&
160 bypass_rules.Equals(other.bypass_rules) && 157 bypass_rules.Equals(other.bypass_rules) &&
161 reverse_bypass == other.reverse_bypass; 158 reverse_bypass == other.reverse_bypass;
162 } 159 }
163 160
164 ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyListNoFallback( 161 ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyListNoFallback(
165 const std::string& scheme) { 162 const std::string& scheme) {
166 DCHECK_EQ(TYPE_PROXY_PER_SCHEME, type); 163 DCHECK_EQ(TYPE_PROXY_PER_SCHEME, type);
167 if (scheme == "http") 164 if (scheme == "http")
168 return &proxies_for_http; 165 return &proxies_for_http;
169 if (scheme == "https") 166 if (scheme == "https")
170 return &proxies_for_https; 167 return &proxies_for_https;
171 if (scheme == "ftp") 168 if (scheme == "ftp")
172 return &proxies_for_ftp; 169 return &proxies_for_ftp;
173 return NULL; // No mapping for this scheme. 170 return NULL; // No mapping for this scheme.
174 } 171 }
175 172
176 ProxyConfig::ProxyConfig() 173 ProxyConfig::ProxyConfig()
177 : auto_detect_(false), pac_mandatory_(false), 174 : auto_detect_(false),
178 source_(PROXY_CONFIG_SOURCE_UNKNOWN), id_(kInvalidConfigID) { 175 pac_mandatory_(false),
176 source_(PROXY_CONFIG_SOURCE_UNKNOWN),
177 id_(kInvalidConfigID) {
179 } 178 }
180 179
181 ProxyConfig::ProxyConfig(const ProxyConfig& config) 180 ProxyConfig::ProxyConfig(const ProxyConfig& config)
182 : auto_detect_(config.auto_detect_), 181 : auto_detect_(config.auto_detect_),
183 pac_url_(config.pac_url_), 182 pac_url_(config.pac_url_),
184 pac_mandatory_(config.pac_mandatory_), 183 pac_mandatory_(config.pac_mandatory_),
185 proxy_rules_(config.proxy_rules_), 184 proxy_rules_(config.proxy_rules_),
186 source_(config.source_), 185 source_(config.source_),
187 id_(config.id_) { 186 id_(config.id_) {
188 } 187 }
189 188
190 ProxyConfig::~ProxyConfig() { 189 ProxyConfig::~ProxyConfig() {
191 } 190 }
192 191
193 ProxyConfig& ProxyConfig::operator=(const ProxyConfig& config) { 192 ProxyConfig& ProxyConfig::operator=(const ProxyConfig& config) {
194 auto_detect_ = config.auto_detect_; 193 auto_detect_ = config.auto_detect_;
195 pac_url_ = config.pac_url_; 194 pac_url_ = config.pac_url_;
196 pac_mandatory_ = config.pac_mandatory_; 195 pac_mandatory_ = config.pac_mandatory_;
197 proxy_rules_ = config.proxy_rules_; 196 proxy_rules_ = config.proxy_rules_;
198 source_ = config.source_; 197 source_ = config.source_;
199 id_ = config.id_; 198 id_ = config.id_;
200 return *this; 199 return *this;
201 } 200 }
202 201
203 bool ProxyConfig::Equals(const ProxyConfig& other) const { 202 bool ProxyConfig::Equals(const ProxyConfig& other) const {
204 // The two configs can have different IDs and sources. We are just interested 203 // The two configs can have different IDs and sources. We are just interested
205 // in if they have the same settings. 204 // in if they have the same settings.
206 return auto_detect_ == other.auto_detect_ && 205 return auto_detect_ == other.auto_detect_ && pac_url_ == other.pac_url_ &&
207 pac_url_ == other.pac_url_ &&
208 pac_mandatory_ == other.pac_mandatory_ && 206 pac_mandatory_ == other.pac_mandatory_ &&
209 proxy_rules_.Equals(other.proxy_rules()); 207 proxy_rules_.Equals(other.proxy_rules());
210 } 208 }
211 209
212 bool ProxyConfig::HasAutomaticSettings() const { 210 bool ProxyConfig::HasAutomaticSettings() const {
213 return auto_detect_ || has_pac_url(); 211 return auto_detect_ || has_pac_url();
214 } 212 }
215 213
216 void ProxyConfig::ClearAutomaticSettings() { 214 void ProxyConfig::ClearAutomaticSettings() {
217 auto_detect_ = false; 215 auto_detect_ = false;
218 pac_url_ = GURL(); 216 pac_url_ = GURL();
219 } 217 }
220 218
221 base::DictionaryValue* ProxyConfig::ToValue() const { 219 base::DictionaryValue* ProxyConfig::ToValue() const {
222 base::DictionaryValue* dict = new base::DictionaryValue(); 220 base::DictionaryValue* dict = new base::DictionaryValue();
223 221
224 // Output the automatic settings. 222 // Output the automatic settings.
225 if (auto_detect_) 223 if (auto_detect_)
226 dict->SetBoolean("auto_detect", auto_detect_); 224 dict->SetBoolean("auto_detect", auto_detect_);
227 if (has_pac_url()) { 225 if (has_pac_url()) {
228 dict->SetString("pac_url", pac_url_.possibly_invalid_spec()); 226 dict->SetString("pac_url", pac_url_.possibly_invalid_spec());
229 if (pac_mandatory_) 227 if (pac_mandatory_)
230 dict->SetBoolean("pac_mandatory", pac_mandatory_); 228 dict->SetBoolean("pac_mandatory", pac_mandatory_);
231 } 229 }
232 230
233 // Output the manual settings. 231 // Output the manual settings.
234 if (proxy_rules_.type != ProxyRules::TYPE_NO_RULES) { 232 if (proxy_rules_.type != ProxyRules::TYPE_NO_RULES) {
235 switch (proxy_rules_.type) { 233 switch (proxy_rules_.type) {
236 case ProxyRules::TYPE_SINGLE_PROXY: 234 case ProxyRules::TYPE_SINGLE_PROXY:
237 AddProxyListToValue("single_proxy", 235 AddProxyListToValue("single_proxy", proxy_rules_.single_proxies, dict);
238 proxy_rules_.single_proxies, dict);
239 break; 236 break;
240 case ProxyRules::TYPE_PROXY_PER_SCHEME: { 237 case ProxyRules::TYPE_PROXY_PER_SCHEME: {
241 base::DictionaryValue* dict2 = new base::DictionaryValue(); 238 base::DictionaryValue* dict2 = new base::DictionaryValue();
242 AddProxyListToValue("http", proxy_rules_.proxies_for_http, dict2); 239 AddProxyListToValue("http", proxy_rules_.proxies_for_http, dict2);
243 AddProxyListToValue("https", proxy_rules_.proxies_for_https, dict2); 240 AddProxyListToValue("https", proxy_rules_.proxies_for_https, dict2);
244 AddProxyListToValue("ftp", proxy_rules_.proxies_for_ftp, dict2); 241 AddProxyListToValue("ftp", proxy_rules_.proxies_for_ftp, dict2);
245 AddProxyListToValue("fallback", proxy_rules_.fallback_proxies, dict2); 242 AddProxyListToValue("fallback", proxy_rules_.fallback_proxies, dict2);
246 dict->Set("proxy_per_scheme", dict2); 243 dict->Set("proxy_per_scheme", dict2);
247 break; 244 break;
248 } 245 }
249 default: 246 default:
250 NOTREACHED(); 247 NOTREACHED();
251 } 248 }
252 249
253 // Output the bypass rules. 250 // Output the bypass rules.
254 const ProxyBypassRules& bypass = proxy_rules_.bypass_rules; 251 const ProxyBypassRules& bypass = proxy_rules_.bypass_rules;
255 if (!bypass.rules().empty()) { 252 if (!bypass.rules().empty()) {
256 if (proxy_rules_.reverse_bypass) 253 if (proxy_rules_.reverse_bypass)
257 dict->SetBoolean("reverse_bypass", true); 254 dict->SetBoolean("reverse_bypass", true);
258 255
259 base::ListValue* list = new base::ListValue(); 256 base::ListValue* list = new base::ListValue();
260 257
261 for (ProxyBypassRules::RuleList::const_iterator it = 258 for (ProxyBypassRules::RuleList::const_iterator it =
262 bypass.rules().begin(); 259 bypass.rules().begin();
263 it != bypass.rules().end(); ++it) { 260 it != bypass.rules().end();
261 ++it) {
264 list->Append(new base::StringValue((*it)->ToString())); 262 list->Append(new base::StringValue((*it)->ToString()));
265 } 263 }
266 264
267 dict->Set("bypass_list", list); 265 dict->Set("bypass_list", list);
268 } 266 }
269 } 267 }
270 268
271 // Output the source. 269 // Output the source.
272 dict->SetString("source", ProxyConfigSourceToString(source_)); 270 dict->SetString("source", ProxyConfigSourceToString(source_));
273 271
274 return dict; 272 return dict;
275 } 273 }
276 274
277 } // namespace net 275 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698