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

Side by Side Diff: net/http/http_stream_factory_impl_job.cc

Issue 8898036: base::Bind: Convert proxy_resolving_client_socket.[cc,h] and deps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Possible test fix. Created 9 years 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
« no previous file with comments | « net/http/http_stream_factory_impl_job.h ('k') | net/proxy/proxy_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/http/http_stream_factory_impl_job.h" 5 #include "net/http/http_stream_factory_impl_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
8 #include "base/logging.h" 9 #include "base/logging.h"
9 #include "base/stl_util.h" 10 #include "base/stl_util.h"
10 #include "base/string_util.h" 11 #include "base/string_util.h"
11 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
12 #include "base/values.h" 13 #include "base/values.h"
13 #include "build/build_config.h" 14 #include "build/build_config.h"
14 #include "net/base/connection_type_histograms.h" 15 #include "net/base/connection_type_histograms.h"
15 #include "net/base/net_log.h" 16 #include "net/base/net_log.h"
16 #include "net/base/net_util.h" 17 #include "net/base/net_util.h"
17 #include "net/base/ssl_cert_request_info.h" 18 #include "net/base/ssl_cert_request_info.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 const HttpRequestInfo& request_info, 108 const HttpRequestInfo& request_info,
108 const SSLConfig& server_ssl_config, 109 const SSLConfig& server_ssl_config,
109 const SSLConfig& proxy_ssl_config, 110 const SSLConfig& proxy_ssl_config,
110 const BoundNetLog& net_log) 111 const BoundNetLog& net_log)
111 : request_(NULL), 112 : request_(NULL),
112 request_info_(request_info), 113 request_info_(request_info),
113 server_ssl_config_(server_ssl_config), 114 server_ssl_config_(server_ssl_config),
114 proxy_ssl_config_(proxy_ssl_config), 115 proxy_ssl_config_(proxy_ssl_config),
115 net_log_(BoundNetLog::Make(net_log.net_log(), 116 net_log_(BoundNetLog::Make(net_log.net_log(),
116 NetLog::SOURCE_HTTP_STREAM_JOB)), 117 NetLog::SOURCE_HTTP_STREAM_JOB)),
117 ALLOW_THIS_IN_INITIALIZER_LIST(io_callback_(this, &Job::OnIOComplete)), 118 ALLOW_THIS_IN_INITIALIZER_LIST(old_io_callback_(
119 this, &Job::OnIOComplete)),
120 ALLOW_THIS_IN_INITIALIZER_LIST(io_callback_(
121 base::Bind(&Job::OnIOComplete, base::Unretained(this)))),
118 connection_(new ClientSocketHandle), 122 connection_(new ClientSocketHandle),
119 session_(session), 123 session_(session),
120 stream_factory_(stream_factory), 124 stream_factory_(stream_factory),
121 next_state_(STATE_NONE), 125 next_state_(STATE_NONE),
122 pac_request_(NULL), 126 pac_request_(NULL),
123 blocking_job_(NULL), 127 blocking_job_(NULL),
124 dependent_job_(NULL), 128 dependent_job_(NULL),
125 using_ssl_(false), 129 using_ssl_(false),
126 using_spdy_(false), 130 using_spdy_(false),
127 force_spdy_always_(HttpStreamFactory::force_spdy_always()), 131 force_spdy_always_(HttpStreamFactory::force_spdy_always()),
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 DCHECK(!pac_request_); 569 DCHECK(!pac_request_);
566 570
567 next_state_ = STATE_RESOLVE_PROXY_COMPLETE; 571 next_state_ = STATE_RESOLVE_PROXY_COMPLETE;
568 572
569 if (request_info_.load_flags & LOAD_BYPASS_PROXY) { 573 if (request_info_.load_flags & LOAD_BYPASS_PROXY) {
570 proxy_info_.UseDirect(); 574 proxy_info_.UseDirect();
571 return OK; 575 return OK;
572 } 576 }
573 577
574 return session_->proxy_service()->ResolveProxy( 578 return session_->proxy_service()->ResolveProxy(
575 request_info_.url, &proxy_info_, &io_callback_, &pac_request_, 579 request_info_.url, &proxy_info_, io_callback_, &pac_request_, net_log_);
576 net_log_);
577 } 580 }
578 581
579 int HttpStreamFactoryImpl::Job::DoResolveProxyComplete(int result) { 582 int HttpStreamFactoryImpl::Job::DoResolveProxyComplete(int result) {
580 pac_request_ = NULL; 583 pac_request_ = NULL;
581 584
582 if (result == OK) { 585 if (result == OK) {
583 // Remove unsupported proxies from the list. 586 // Remove unsupported proxies from the list.
584 proxy_info_.RemoveProxiesWithoutScheme( 587 proxy_info_.RemoveProxiesWithoutScheme(
585 ProxyServer::SCHEME_DIRECT | 588 ProxyServer::SCHEME_DIRECT |
586 ProxyServer::SCHEME_HTTP | ProxyServer::SCHEME_HTTPS | 589 ProxyServer::SCHEME_HTTP | ProxyServer::SCHEME_HTTPS |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 session_, 711 session_,
709 proxy_info_, 712 proxy_info_,
710 ShouldForceSpdySSL(), 713 ShouldForceSpdySSL(),
711 want_spdy_over_npn, 714 want_spdy_over_npn,
712 server_ssl_config_, 715 server_ssl_config_,
713 proxy_ssl_config_, 716 proxy_ssl_config_,
714 net_log_, 717 net_log_,
715 num_streams_); 718 num_streams_);
716 } else { 719 } else {
717 return InitSocketHandleForHttpRequest( 720 return InitSocketHandleForHttpRequest(
718 origin_url_, 721 origin_url_, request_info_.extra_headers, request_info_.load_flags,
719 request_info_.extra_headers, 722 request_info_.priority, session_, proxy_info_, ShouldForceSpdySSL(),
720 request_info_.load_flags, 723 want_spdy_over_npn, server_ssl_config_, proxy_ssl_config_, net_log_,
721 request_info_.priority, 724 connection_.get(), io_callback_);
722 session_,
723 proxy_info_,
724 ShouldForceSpdySSL(),
725 want_spdy_over_npn,
726 server_ssl_config_,
727 proxy_ssl_config_,
728 net_log_,
729 connection_.get(),
730 &io_callback_);
731 } 725 }
732 } 726 }
733 727
734 int HttpStreamFactoryImpl::Job::DoInitConnectionComplete(int result) { 728 int HttpStreamFactoryImpl::Job::DoInitConnectionComplete(int result) {
735 if (IsPreconnecting()) { 729 if (IsPreconnecting()) {
736 DCHECK_EQ(OK, result); 730 DCHECK_EQ(OK, result);
737 return OK; 731 return OK;
738 } 732 }
739 733
740 // TODO(willchan): Make this a bit more exact. Maybe there are recoverable 734 // TODO(willchan): Make this a bit more exact. Maybe there are recoverable
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 943
950 session_->proxy_service()->ReportSuccess(proxy_info_); 944 session_->proxy_service()->ReportSuccess(proxy_info_);
951 next_state_ = STATE_NONE; 945 next_state_ = STATE_NONE;
952 return OK; 946 return OK;
953 } 947 }
954 948
955 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuth() { 949 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuth() {
956 next_state_ = STATE_RESTART_TUNNEL_AUTH_COMPLETE; 950 next_state_ = STATE_RESTART_TUNNEL_AUTH_COMPLETE;
957 HttpProxyClientSocket* http_proxy_socket = 951 HttpProxyClientSocket* http_proxy_socket =
958 static_cast<HttpProxyClientSocket*>(connection_->socket()); 952 static_cast<HttpProxyClientSocket*>(connection_->socket());
959 return http_proxy_socket->RestartWithAuth(&io_callback_); 953 return http_proxy_socket->RestartWithAuth(&old_io_callback_);
960 } 954 }
961 955
962 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuthComplete(int result) { 956 int HttpStreamFactoryImpl::Job::DoRestartTunnelAuthComplete(int result) {
963 if (result == ERR_PROXY_AUTH_REQUESTED) 957 if (result == ERR_PROXY_AUTH_REQUESTED)
964 return result; 958 return result;
965 959
966 if (result == OK) { 960 if (result == OK) {
967 // Now that we've got the HttpProxyClientSocket connected. We have 961 // Now that we've got the HttpProxyClientSocket connected. We have
968 // to release it as an idle socket into the pool and start the connection 962 // to release it as an idle socket into the pool and start the connection
969 // process from the beginning. Trying to pass it in with the 963 // process from the beginning. Trying to pass it in with the
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 if (request_info_.load_flags & LOAD_BYPASS_PROXY) { 1077 if (request_info_.load_flags & LOAD_BYPASS_PROXY) {
1084 return error; 1078 return error;
1085 } 1079 }
1086 1080
1087 if (proxy_info_.is_https() && proxy_ssl_config_.send_client_cert) { 1081 if (proxy_info_.is_https() && proxy_ssl_config_.send_client_cert) {
1088 session_->ssl_client_auth_cache()->Remove( 1082 session_->ssl_client_auth_cache()->Remove(
1089 proxy_info_.proxy_server().host_port_pair().ToString()); 1083 proxy_info_.proxy_server().host_port_pair().ToString());
1090 } 1084 }
1091 1085
1092 int rv = session_->proxy_service()->ReconsiderProxyAfterError( 1086 int rv = session_->proxy_service()->ReconsiderProxyAfterError(
1093 request_info_.url, &proxy_info_, &io_callback_, &pac_request_, 1087 request_info_.url, &proxy_info_, io_callback_, &pac_request_, net_log_);
1094 net_log_);
1095 if (rv == OK || rv == ERR_IO_PENDING) { 1088 if (rv == OK || rv == ERR_IO_PENDING) {
1096 // If the error was during connection setup, there is no socket to 1089 // If the error was during connection setup, there is no socket to
1097 // disconnect. 1090 // disconnect.
1098 if (connection_->socket()) 1091 if (connection_->socket())
1099 connection_->socket()->Disconnect(); 1092 connection_->socket()->Disconnect();
1100 connection_->Reset(); 1093 connection_->Reset();
1101 if (request_) 1094 if (request_)
1102 request_->RemoveRequestFromSpdySessionRequestMap(); 1095 request_->RemoveRequestFromSpdySessionRequestMap();
1103 next_state_ = STATE_RESOLVE_PROXY_COMPLETE; 1096 next_state_ = STATE_RESOLVE_PROXY_COMPLETE;
1104 } else { 1097 } else {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 return false; 1197 return false;
1205 } 1198 }
1206 if (request_info_.method != "GET" && request_info_.method != "HEAD") { 1199 if (request_info_.method != "GET" && request_info_.method != "HEAD") {
1207 return false; 1200 return false;
1208 } 1201 }
1209 return stream_factory_->http_pipelined_host_pool_.IsHostEligibleForPipelining( 1202 return stream_factory_->http_pipelined_host_pool_.IsHostEligibleForPipelining(
1210 origin_); 1203 origin_);
1211 } 1204 }
1212 1205
1213 } // namespace net 1206 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job.h ('k') | net/proxy/proxy_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698