| 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_script_fetcher_impl.h" | 5 #include "net/proxy/proxy_script_fetcher_impl.h" |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/profiler/scoped_tracker.h" |
| 10 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 11 #include "net/base/data_url.h" | 12 #include "net/base/data_url.h" |
| 12 #include "net/base/io_buffer.h" | 13 #include "net/base/io_buffer.h" |
| 13 #include "net/base/load_flags.h" | 14 #include "net/base/load_flags.h" |
| 14 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
| 15 #include "net/base/net_string_util.h" | 16 #include "net/base/net_string_util.h" |
| 16 #include "net/base/request_priority.h" | 17 #include "net/base/request_priority.h" |
| 17 #include "net/cert/cert_status_flags.h" | 18 #include "net/cert/cert_status_flags.h" |
| 18 #include "net/http/http_response_headers.h" | 19 #include "net/http/http_response_headers.h" |
| 19 #include "net/url_request/url_request_context.h" | 20 #include "net/url_request/url_request_context.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 request->ContinueDespiteLastError(); | 196 request->ContinueDespiteLastError(); |
| 196 return; | 197 return; |
| 197 } | 198 } |
| 198 LOG(WARNING) << "SSL certificate error when fetching PAC script, aborting."; | 199 LOG(WARNING) << "SSL certificate error when fetching PAC script, aborting."; |
| 199 // Certificate errors are in same space as net errors. | 200 // Certificate errors are in same space as net errors. |
| 200 result_code_ = MapCertStatusToNetError(ssl_info.cert_status); | 201 result_code_ = MapCertStatusToNetError(ssl_info.cert_status); |
| 201 request->Cancel(); | 202 request->Cancel(); |
| 202 } | 203 } |
| 203 | 204 |
| 204 void ProxyScriptFetcherImpl::OnResponseStarted(URLRequest* request) { | 205 void ProxyScriptFetcherImpl::OnResponseStarted(URLRequest* request) { |
| 206 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed. |
| 207 tracked_objects::ScopedTracker tracking_profile( |
| 208 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 209 "423948 ProxyScriptFetcherImpl::OnResponseStarted")); |
| 210 |
| 205 DCHECK_EQ(request, cur_request_.get()); | 211 DCHECK_EQ(request, cur_request_.get()); |
| 206 | 212 |
| 207 if (!request->status().is_success()) { | 213 if (!request->status().is_success()) { |
| 208 OnResponseCompleted(request); | 214 OnResponseCompleted(request); |
| 209 return; | 215 return; |
| 210 } | 216 } |
| 211 | 217 |
| 212 // Require HTTP responses to have a success status code. | 218 // Require HTTP responses to have a success status code. |
| 213 if (request->url().SchemeIsHTTPOrHTTPS()) { | 219 if (request->url().SchemeIsHTTPOrHTTPS()) { |
| 214 // NOTE about status codes: We are like Firefox 3 in this respect. | 220 // NOTE about status codes: We are like Firefox 3 in this respect. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 230 VLOG(1) << "Fetched PAC script does not have a proper mime type: " | 236 VLOG(1) << "Fetched PAC script does not have a proper mime type: " |
| 231 << mime_type; | 237 << mime_type; |
| 232 } | 238 } |
| 233 } | 239 } |
| 234 | 240 |
| 235 ReadBody(request); | 241 ReadBody(request); |
| 236 } | 242 } |
| 237 | 243 |
| 238 void ProxyScriptFetcherImpl::OnReadCompleted(URLRequest* request, | 244 void ProxyScriptFetcherImpl::OnReadCompleted(URLRequest* request, |
| 239 int num_bytes) { | 245 int num_bytes) { |
| 246 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed. |
| 247 tracked_objects::ScopedTracker tracking_profile( |
| 248 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 249 "423948 ProxyScriptFetcherImpl::OnReadCompleted")); |
| 250 |
| 240 DCHECK_EQ(request, cur_request_.get()); | 251 DCHECK_EQ(request, cur_request_.get()); |
| 241 if (ConsumeBytesRead(request, num_bytes)) { | 252 if (ConsumeBytesRead(request, num_bytes)) { |
| 242 // Keep reading. | 253 // Keep reading. |
| 243 ReadBody(request); | 254 ReadBody(request); |
| 244 } | 255 } |
| 245 } | 256 } |
| 246 | 257 |
| 247 void ProxyScriptFetcherImpl::ReadBody(URLRequest* request) { | 258 void ProxyScriptFetcherImpl::ReadBody(URLRequest* request) { |
| 248 // Read as many bytes as are available synchronously. | 259 // Read as many bytes as are available synchronously. |
| 249 while (true) { | 260 while (true) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 // is still applicable. | 322 // is still applicable. |
| 312 if (cur_request_id_ != id) | 323 if (cur_request_id_ != id) |
| 313 return; | 324 return; |
| 314 | 325 |
| 315 DCHECK(cur_request_.get()); | 326 DCHECK(cur_request_.get()); |
| 316 result_code_ = ERR_TIMED_OUT; | 327 result_code_ = ERR_TIMED_OUT; |
| 317 cur_request_->Cancel(); | 328 cur_request_->Cancel(); |
| 318 } | 329 } |
| 319 | 330 |
| 320 } // namespace net | 331 } // namespace net |
| OLD | NEW |