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

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

Issue 1550843002: Convert enable_bidirectional_stream into build flag local to net. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove #include net_features.h from public headers. Created 4 years, 11 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
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/http/http_stream_factory_impl_job.h" 5 #include "net/http/http_stream_factory_impl_job.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "net/socket/ssl_client_socket.h" 44 #include "net/socket/ssl_client_socket.h"
45 #include "net/socket/ssl_client_socket_pool.h" 45 #include "net/socket/ssl_client_socket_pool.h"
46 #include "net/spdy/spdy_http_stream.h" 46 #include "net/spdy/spdy_http_stream.h"
47 #include "net/spdy/spdy_protocol.h" 47 #include "net/spdy/spdy_protocol.h"
48 #include "net/spdy/spdy_session.h" 48 #include "net/spdy/spdy_session.h"
49 #include "net/spdy/spdy_session_pool.h" 49 #include "net/spdy/spdy_session_pool.h"
50 #include "net/ssl/ssl_cert_request_info.h" 50 #include "net/ssl/ssl_cert_request_info.h"
51 #include "net/ssl/ssl_connection_status_flags.h" 51 #include "net/ssl/ssl_connection_status_flags.h"
52 #include "net/ssl/ssl_failure_state.h" 52 #include "net/ssl/ssl_failure_state.h"
53 53
54 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 54 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
55 #include "net/http/bidirectional_stream_job.h" 55 #include "net/http/bidirectional_stream_job.h"
56 #include "net/spdy/bidirectional_stream_spdy_job.h" 56 #include "net/spdy/bidirectional_stream_spdy_job.h"
57 #endif 57 #endif
58 58
59 namespace net { 59 namespace net {
60 60
61 // Returns parameters associated with the start of a HTTP stream job. 61 // Returns parameters associated with the start of a HTTP stream job.
62 scoped_ptr<base::Value> NetLogHttpStreamJobCallback( 62 scoped_ptr<base::Value> NetLogHttpStreamJobCallback(
63 const NetLog::Source& source, 63 const NetLog::Source& source,
64 const GURL* original_url, 64 const GURL* original_url,
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 361
362 request_->Complete(was_npn_negotiated(), protocol_negotiated(), using_spdy()); 362 request_->Complete(was_npn_negotiated(), protocol_negotiated(), using_spdy());
363 request_->OnWebSocketHandshakeStreamReady(this, 363 request_->OnWebSocketHandshakeStreamReady(this,
364 server_ssl_config_, 364 server_ssl_config_,
365 proxy_info_, 365 proxy_info_,
366 websocket_stream_.release()); 366 websocket_stream_.release());
367 // |this| may be deleted after this call. 367 // |this| may be deleted after this call.
368 } 368 }
369 369
370 void HttpStreamFactoryImpl::Job::OnBidirectionalStreamJobReadyCallback() { 370 void HttpStreamFactoryImpl::Job::OnBidirectionalStreamJobReadyCallback() {
371 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 371 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
372 DCHECK(bidirectional_stream_job_); 372 DCHECK(bidirectional_stream_job_);
373 373
374 MaybeCopyConnectionAttemptsFromSocketOrHandle(); 374 MaybeCopyConnectionAttemptsFromSocketOrHandle();
375 375
376 if (IsOrphaned()) { 376 if (IsOrphaned()) {
377 stream_factory_->OnOrphanedJobComplete(this); 377 stream_factory_->OnOrphanedJobComplete(this);
378 } else { 378 } else {
379 request_->Complete(was_npn_negotiated(), protocol_negotiated(), 379 request_->Complete(was_npn_negotiated(), protocol_negotiated(),
380 using_spdy()); 380 using_spdy());
381 request_->OnBidirectionalStreamJobReady( 381 request_->OnBidirectionalStreamJobReady(
382 this, server_ssl_config_, proxy_info_, 382 this, server_ssl_config_, proxy_info_,
383 bidirectional_stream_job_.release()); 383 bidirectional_stream_job_.release());
384 } 384 }
385 // |this| may be deleted after this call. 385 // |this| may be deleted after this call.
386 #else 386 #else
387 DCHECK(false); 387 DCHECK(false);
388 #endif 388 #endif
389 } 389 }
390 390
391 void HttpStreamFactoryImpl::Job::OnNewSpdySessionReadyCallback() { 391 void HttpStreamFactoryImpl::Job::OnNewSpdySessionReadyCallback() {
392 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 392 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
393 DCHECK(stream_.get() || bidirectional_stream_job_.get()); 393 DCHECK(stream_.get() || bidirectional_stream_job_.get());
394 #else 394 #else
395 DCHECK(stream_.get()); 395 DCHECK(stream_.get());
396 #endif 396 #endif
397 DCHECK(!IsPreconnecting()); 397 DCHECK(!IsPreconnecting());
398 DCHECK(using_spdy()); 398 DCHECK(using_spdy());
399 // Note: an event loop iteration has passed, so |new_spdy_session_| may be 399 // Note: an event loop iteration has passed, so |new_spdy_session_| may be
400 // NULL at this point if the SpdySession closed immediately after creation. 400 // NULL at this point if the SpdySession closed immediately after creation.
401 base::WeakPtr<SpdySession> spdy_session = new_spdy_session_; 401 base::WeakPtr<SpdySession> spdy_session = new_spdy_session_;
402 new_spdy_session_.reset(); 402 new_spdy_session_.reset();
403 403
404 MaybeCopyConnectionAttemptsFromSocketOrHandle(); 404 MaybeCopyConnectionAttemptsFromSocketOrHandle();
405 405
406 // TODO(jgraettinger): Notify the factory, and let that notify |request_|, 406 // TODO(jgraettinger): Notify the factory, and let that notify |request_|,
407 // rather than notifying |request_| directly. 407 // rather than notifying |request_| directly.
408 if (IsOrphaned()) { 408 if (IsOrphaned()) {
409 if (spdy_session) { 409 if (spdy_session) {
410 stream_factory_->OnNewSpdySessionReady( 410 stream_factory_->OnNewSpdySessionReady(
411 spdy_session, spdy_session_direct_, server_ssl_config_, proxy_info_, 411 spdy_session, spdy_session_direct_, server_ssl_config_, proxy_info_,
412 was_npn_negotiated(), protocol_negotiated(), using_spdy(), net_log_); 412 was_npn_negotiated(), protocol_negotiated(), using_spdy(), net_log_);
413 } 413 }
414 stream_factory_->OnOrphanedJobComplete(this); 414 stream_factory_->OnOrphanedJobComplete(this);
415 } else { 415 } else {
416 if (for_bidirectional_) { 416 if (for_bidirectional_) {
417 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 417 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
418 DCHECK(bidirectional_stream_job_); 418 DCHECK(bidirectional_stream_job_);
419 request_->OnNewSpdySessionReady(this, /*spdy_http_stream=*/nullptr, 419 request_->OnNewSpdySessionReady(this, /*spdy_http_stream=*/nullptr,
420 std::move(bidirectional_stream_job_), 420 std::move(bidirectional_stream_job_),
421 spdy_session, spdy_session_direct_); 421 spdy_session, spdy_session_direct_);
422 #else 422 #else
423 DCHECK(false); 423 DCHECK(false);
424 #endif 424 #endif
425 425
426 } else { 426 } else {
427 DCHECK(stream_); 427 DCHECK(stream_);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 if (new_spdy_session_.get()) { 609 if (new_spdy_session_.get()) {
610 base::ThreadTaskRunnerHandle::Get()->PostTask( 610 base::ThreadTaskRunnerHandle::Get()->PostTask(
611 FROM_HERE, base::Bind(&Job::OnNewSpdySessionReadyCallback, 611 FROM_HERE, base::Bind(&Job::OnNewSpdySessionReadyCallback,
612 ptr_factory_.GetWeakPtr())); 612 ptr_factory_.GetWeakPtr()));
613 } else if (stream_factory_->for_websockets_) { 613 } else if (stream_factory_->for_websockets_) {
614 DCHECK(websocket_stream_); 614 DCHECK(websocket_stream_);
615 base::ThreadTaskRunnerHandle::Get()->PostTask( 615 base::ThreadTaskRunnerHandle::Get()->PostTask(
616 FROM_HERE, base::Bind(&Job::OnWebSocketHandshakeStreamReadyCallback, 616 FROM_HERE, base::Bind(&Job::OnWebSocketHandshakeStreamReadyCallback,
617 ptr_factory_.GetWeakPtr())); 617 ptr_factory_.GetWeakPtr()));
618 } else if (for_bidirectional_) { 618 } else if (for_bidirectional_) {
619 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 619 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
620 if (!bidirectional_stream_job_) { 620 if (!bidirectional_stream_job_) {
621 base::ThreadTaskRunnerHandle::Get()->PostTask( 621 base::ThreadTaskRunnerHandle::Get()->PostTask(
622 FROM_HERE, base::Bind(&Job::OnStreamFailedCallback, 622 FROM_HERE, base::Bind(&Job::OnStreamFailedCallback,
623 ptr_factory_.GetWeakPtr(), ERR_FAILED)); 623 ptr_factory_.GetWeakPtr(), ERR_FAILED));
624 } else { 624 } else {
625 base::ThreadTaskRunnerHandle::Get()->PostTask( 625 base::ThreadTaskRunnerHandle::Get()->PostTask(
626 FROM_HERE, base::Bind(&Job::OnBidirectionalStreamJobReadyCallback, 626 FROM_HERE, base::Bind(&Job::OnBidirectionalStreamJobReadyCallback,
627 ptr_factory_.GetWeakPtr())); 627 ptr_factory_.GetWeakPtr()));
628 } 628 }
629 #else 629 #else
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 } 1207 }
1208 1208
1209 int HttpStreamFactoryImpl::Job::SetSpdyHttpStreamOrBidirectionalStreamJob( 1209 int HttpStreamFactoryImpl::Job::SetSpdyHttpStreamOrBidirectionalStreamJob(
1210 base::WeakPtr<SpdySession> session, 1210 base::WeakPtr<SpdySession> session,
1211 bool direct) { 1211 bool direct) {
1212 // TODO(ricea): Restore the code for WebSockets over SPDY once it's 1212 // TODO(ricea): Restore the code for WebSockets over SPDY once it's
1213 // implemented. 1213 // implemented.
1214 if (stream_factory_->for_websockets_) 1214 if (stream_factory_->for_websockets_)
1215 return ERR_NOT_IMPLEMENTED; 1215 return ERR_NOT_IMPLEMENTED;
1216 if (for_bidirectional_) { 1216 if (for_bidirectional_) {
1217 #if defined(ENABLE_BIDIRECTIONAL_STREAM) 1217 #if BUILDFLAG(ENABLE_BIDIRECTIONAL_STREAM)
1218 // TODO(xunjieli): Create QUIC's version of BidirectionalStreamJob. 1218 // TODO(xunjieli): Create QUIC's version of BidirectionalStreamJob.
1219 bidirectional_stream_job_.reset(new BidirectionalStreamSpdyJob(session)); 1219 bidirectional_stream_job_.reset(new BidirectionalStreamSpdyJob(session));
1220 return OK; 1220 return OK;
1221 #else 1221 #else
1222 DCHECK(false); 1222 DCHECK(false);
1223 return ERR_FAILED; 1223 return ERR_FAILED;
1224 #endif 1224 #endif
1225 } 1225 }
1226 1226
1227 // TODO(willchan): Delete this code, because eventually, the 1227 // TODO(willchan): Delete this code, because eventually, the
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1690 if (connection_->socket()) { 1690 if (connection_->socket()) {
1691 ConnectionAttempts socket_attempts; 1691 ConnectionAttempts socket_attempts;
1692 connection_->socket()->GetConnectionAttempts(&socket_attempts); 1692 connection_->socket()->GetConnectionAttempts(&socket_attempts);
1693 request_->AddConnectionAttempts(socket_attempts); 1693 request_->AddConnectionAttempts(socket_attempts);
1694 } else { 1694 } else {
1695 request_->AddConnectionAttempts(connection_->connection_attempts()); 1695 request_->AddConnectionAttempts(connection_->connection_attempts());
1696 } 1696 }
1697 } 1697 }
1698 1698
1699 } // namespace net 1699 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698