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

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

Issue 981633002: Created new URLRequestContext for secure proxy check (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments. Created 5 years, 9 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
« no previous file with comments | « net/http/http_stream_factory_impl.cc ('k') | net/http/http_stream_factory_impl_unittest.cc » ('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) 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 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 } 711 }
712 712
713 bool HttpStreamFactoryImpl::Job::ShouldForceSpdyWithoutSSL() const { 713 bool HttpStreamFactoryImpl::Job::ShouldForceSpdyWithoutSSL() const {
714 bool rv = session_->params().force_spdy_always && 714 bool rv = session_->params().force_spdy_always &&
715 !session_->params().force_spdy_over_ssl; 715 !session_->params().force_spdy_over_ssl;
716 return rv && !session_->HasSpdyExclusion(origin_); 716 return rv && !session_->HasSpdyExclusion(origin_);
717 } 717 }
718 718
719 bool HttpStreamFactoryImpl::Job::ShouldForceQuic() const { 719 bool HttpStreamFactoryImpl::Job::ShouldForceQuic() const {
720 return session_->params().enable_quic && 720 return session_->params().enable_quic &&
721 session_->params().origin_to_force_quic_on.Equals(origin_) && 721 session_->params().origin_to_force_quic_on.Equals(origin_) &&
722 proxy_info_.is_direct(); 722 proxy_info_.is_direct() &&
723 (request_info_.load_flags & LOAD_UNENCRYPTED_HTTP11) == 0;
Ryan Hamilton 2015/03/06 23:19:52 This method is also only called from a command lin
723 } 724 }
724 725
725 int HttpStreamFactoryImpl::Job::DoWaitForJob() { 726 int HttpStreamFactoryImpl::Job::DoWaitForJob() {
726 DCHECK(blocking_job_); 727 DCHECK(blocking_job_);
727 next_state_ = STATE_WAIT_FOR_JOB_COMPLETE; 728 next_state_ = STATE_WAIT_FOR_JOB_COMPLETE;
728 return ERR_IO_PENDING; 729 return ERR_IO_PENDING;
729 } 730 }
730 731
731 int HttpStreamFactoryImpl::Job::DoWaitForJobComplete(int result) { 732 int HttpStreamFactoryImpl::Job::DoWaitForJobComplete(int result) {
732 DCHECK(!blocking_job_); 733 DCHECK(!blocking_job_);
733 DCHECK_EQ(OK, result); 734 DCHECK_EQ(OK, result);
734 next_state_ = STATE_INIT_CONNECTION; 735 next_state_ = STATE_INIT_CONNECTION;
735 return OK; 736 return OK;
736 } 737 }
737 738
738 int HttpStreamFactoryImpl::Job::DoInitConnection() { 739 int HttpStreamFactoryImpl::Job::DoInitConnection() {
739 // TODO(pkasting): Remove ScopedTracker below once crbug.com/462812 is fixed. 740 // TODO(pkasting): Remove ScopedTracker below once crbug.com/462812 is fixed.
740 tracked_objects::ScopedTracker tracking_profile( 741 tracked_objects::ScopedTracker tracking_profile(
741 FROM_HERE_WITH_EXPLICIT_FUNCTION( 742 FROM_HERE_WITH_EXPLICIT_FUNCTION(
742 "462812 HttpStreamFactoryImpl::Job::DoInitConnection")); 743 "462812 HttpStreamFactoryImpl::Job::DoInitConnection"));
743 DCHECK(!blocking_job_); 744 DCHECK(!blocking_job_);
744 DCHECK(!connection_->is_initialized()); 745 DCHECK(!connection_->is_initialized());
745 DCHECK(proxy_info_.proxy_server().is_valid()); 746 DCHECK(proxy_info_.proxy_server().is_valid());
746 next_state_ = STATE_INIT_CONNECTION_COMPLETE; 747 next_state_ = STATE_INIT_CONNECTION_COMPLETE;
747 748
748 using_ssl_ = request_info_.url.SchemeIs("https") || 749 using_ssl_ = request_info_.url.SchemeIs("https") ||
749 request_info_.url.SchemeIs("wss") || ShouldForceSpdySSL(); 750 request_info_.url.SchemeIs("wss") || ShouldForceSpdySSL();
751 DCHECK(!using_ssl_ ||
752 (request_info_.load_flags & LOAD_UNENCRYPTED_HTTP11) == 0);
753
750 using_spdy_ = false; 754 using_spdy_ = false;
751 755
752 if (ShouldForceQuic()) 756 if (ShouldForceQuic())
753 using_quic_ = true; 757 using_quic_ = true;
754 758
755 DCHECK(!using_quic_ || session_->params().enable_quic); 759 DCHECK(!using_quic_ || session_->params().enable_quic);
760 DCHECK(!using_quic_ ||
761 (request_info_.load_flags & LOAD_UNENCRYPTED_HTTP11) == 0);
756 762
757 if (proxy_info_.is_quic()) { 763 if (proxy_info_.is_quic()) {
758 using_quic_ = true; 764 using_quic_ = true;
759 DCHECK(session_->params().enable_quic_for_proxies); 765 DCHECK(session_->params().enable_quic_for_proxies);
760 } 766 }
761 767
762 if (using_quic_) { 768 if (using_quic_) {
763 if (proxy_info_.is_quic() && !request_info_.url.SchemeIs("http")) { 769 if (proxy_info_.is_quic() && !request_info_.url.SchemeIs("http")) {
764 NOTREACHED(); 770 NOTREACHED();
765 // TODO(rch): support QUIC proxies for HTTPS urls. 771 // TODO(rch): support QUIC proxies for HTTPS urls.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 return OK; 804 return OK;
799 using_spdy_ = true; 805 using_spdy_ = true;
800 next_state_ = STATE_CREATE_STREAM; 806 next_state_ = STATE_CREATE_STREAM;
801 existing_spdy_session_ = spdy_session; 807 existing_spdy_session_ = spdy_session;
802 return OK; 808 return OK;
803 } else if (request_ && !request_->HasSpdySessionKey() && 809 } else if (request_ && !request_->HasSpdySessionKey() &&
804 (using_ssl_ || ShouldForceSpdyWithoutSSL())) { 810 (using_ssl_ || ShouldForceSpdyWithoutSSL())) {
805 // Update the spdy session key for the request that launched this job. 811 // Update the spdy session key for the request that launched this job.
806 request_->SetSpdySessionKey(spdy_session_key); 812 request_->SetSpdySessionKey(spdy_session_key);
807 } 813 }
814 DCHECK(!using_spdy_ ||
815 (request_info_.load_flags & LOAD_UNENCRYPTED_HTTP11) == 0);
808 816
809 // OK, there's no available SPDY session. Let |waiting_job_| resume if it's 817 // OK, there's no available SPDY session. Let |waiting_job_| resume if it's
810 // paused. 818 // paused.
811 819
812 if (waiting_job_) { 820 if (waiting_job_) {
813 waiting_job_->Resume(this); 821 waiting_job_->Resume(this);
814 waiting_job_ = NULL; 822 waiting_job_ = NULL;
815 } 823 }
816 824
817 if (proxy_info_.is_http() || proxy_info_.is_https()) 825 if (proxy_info_.is_http() || proxy_info_.is_https())
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 1510
1503 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) { 1511 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) {
1504 HistogramBrokenAlternateProtocolLocation( 1512 HistogramBrokenAlternateProtocolLocation(
1505 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN); 1513 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN);
1506 session_->http_server_properties()->SetBrokenAlternateProtocol( 1514 session_->http_server_properties()->SetBrokenAlternateProtocol(
1507 HostPortPair::FromURL(request_info_.url)); 1515 HostPortPair::FromURL(request_info_.url));
1508 } 1516 }
1509 } 1517 }
1510 1518
1511 } // namespace net 1519 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl.cc ('k') | net/http/http_stream_factory_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698