Index: net/http/http_stream_factory_impl_job.cc |
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc |
index e5403f8dcdfac317441f1a4dfe67767123270f4d..f6b6e75f4328db2cd8a312f9345074183022d9bf 100644 |
--- a/net/http/http_stream_factory_impl_job.cc |
+++ b/net/http/http_stream_factory_impl_job.cc |
@@ -216,7 +216,7 @@ HttpStreamFactoryImpl::Job::Job(HttpStreamFactoryImpl* stream_factory, |
spdy_session_direct_(false), |
job_status_(STATUS_RUNNING), |
other_job_status_(STATUS_RUNNING), |
- for_bidirectional_(false), |
+ stream_type_(HttpStreamRequest::BIDIRECTIONAL_STREAM), |
ptr_factory_(this) { |
DCHECK(stream_factory); |
DCHECK(session); |
@@ -248,8 +248,8 @@ HttpStreamFactoryImpl::Job::~Job() { |
void HttpStreamFactoryImpl::Job::Start(Request* request) { |
DCHECK(request); |
request_ = request; |
- // Saves |for_bidirectional_|, since request is nulled when job is orphaned. |
- for_bidirectional_ = request_->for_bidirectional(); |
+ // Saves |stream_type_|, since request is nulled when job is orphaned. |
+ stream_type_ = request_->stream_type(); |
StartInternal(); |
} |
@@ -502,7 +502,7 @@ void HttpStreamFactoryImpl::Job::OnNewSpdySessionReadyCallback() { |
} |
stream_factory_->OnOrphanedJobComplete(this); |
} else { |
- if (for_bidirectional_) { |
+ if (stream_type_ == HttpStreamRequest::BIDIRECTIONAL_STREAM) { |
#if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM) |
DCHECK(bidirectional_stream_job_); |
request_->OnNewSpdySessionReady(this, /*spdy_http_stream=*/nullptr, |
@@ -511,7 +511,6 @@ void HttpStreamFactoryImpl::Job::OnNewSpdySessionReadyCallback() { |
#else |
DCHECK(false); |
#endif |
- |
} else { |
DCHECK(stream_); |
request_->OnNewSpdySessionReady(this, std::move(stream_), |
@@ -704,7 +703,7 @@ int HttpStreamFactoryImpl::Job::RunLoop(int result) { |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, base::Bind(&Job::OnWebSocketHandshakeStreamReadyCallback, |
ptr_factory_.GetWeakPtr())); |
- } else if (for_bidirectional_) { |
+ } else if (stream_type_ == HttpStreamRequest::BIDIRECTIONAL_STREAM) { |
#if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM) |
if (!bidirectional_stream_job_) { |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
@@ -1015,7 +1014,6 @@ int HttpStreamFactoryImpl::Job::DoInitConnection() { |
destination = server_; |
ssl_config = &server_ssl_config_; |
} |
- |
int rv = |
quic_request_.Request(destination, request_info_.privacy_mode, |
ssl_config->GetCertVerifyFlags(), url, |
@@ -1257,7 +1255,15 @@ int HttpStreamFactoryImpl::Job::DoInitConnectionComplete(int result) { |
MaybeMarkAlternativeServiceBroken(); |
return result; |
} |
- stream_ = quic_request_.ReleaseStream(); |
+ if (stream_type_ == HttpStreamRequest::BIDIRECTIONAL_STREAM) { |
+#if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM) |
+ bidirectional_stream_job_ = quic_request_.ReleaseBidirectionalStreamJob(); |
+#else |
+ NOTREACHED(); |
+#endif |
+ } else { |
+ stream_ = quic_request_.ReleaseStream(); |
+ } |
next_state_ = STATE_NONE; |
return OK; |
} |
@@ -1314,9 +1320,8 @@ int HttpStreamFactoryImpl::Job::SetSpdyHttpStreamOrBidirectionalStreamJob( |
// implemented. |
if (stream_factory_->for_websockets_) |
return ERR_NOT_IMPLEMENTED; |
- if (for_bidirectional_) { |
+ if (stream_type_ == HttpStreamRequest::BIDIRECTIONAL_STREAM) { |
#if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM) |
- // TODO(xunjieli): Create QUIC's version of BidirectionalStreamJob. |
bidirectional_stream_job_.reset(new BidirectionalStreamSpdyJob(session)); |
return OK; |
#else |