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

Unified Diff: net/http/http_stream_factory_impl_job_controller.h

Issue 2895263003: Revert CLs landed in HttpStreamFactoryImpl to track down a crasher (Closed)
Patch Set: Revert "Fix SpdySessionKey for HTTP/2 alternative Jobs." Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: net/http/http_stream_factory_impl_job_controller.h
diff --git a/net/http/http_stream_factory_impl_job_controller.h b/net/http/http_stream_factory_impl_job_controller.h
index ce0494c79c4a997f887dc54df42d8b728b4f2249..20eb0391f4883aecea42994c7df28c5f450745ec 100644
--- a/net/http/http_stream_factory_impl_job_controller.h
+++ b/net/http/http_stream_factory_impl_job_controller.h
@@ -28,9 +28,7 @@ class HttpStreamFactoryImpl::JobController
const HttpRequestInfo& request_info,
bool is_preconnect,
bool enable_ip_based_pooling,
- bool enable_alternative_services,
- const SSLConfig& server_ssl_config,
- const SSLConfig& proxy_ssl_config);
+ bool enable_alternative_services);
~JobController() override;
@@ -45,14 +43,20 @@ class HttpStreamFactoryImpl::JobController
// Methods below are called by HttpStreamFactoryImpl only.
// Creates request and hands out to HttpStreamFactoryImpl, this will also
// create Job(s) and start serving the created request.
- std::unique_ptr<Request> Start(HttpStreamRequest::Delegate* delegate,
- WebSocketHandshakeStreamBase::CreateHelper*
- websocket_handshake_stream_create_helper,
- const NetLogWithSource& source_net_log,
- HttpStreamRequest::StreamType stream_type,
- RequestPriority priority);
-
- void Preconnect(int num_streams);
+ Request* Start(const HttpRequestInfo& request_info,
+ HttpStreamRequest::Delegate* delegate,
+ WebSocketHandshakeStreamBase::CreateHelper*
+ websocket_handshake_stream_create_helper,
+ const NetLogWithSource& source_net_log,
+ HttpStreamRequest::StreamType stream_type,
+ RequestPriority priority,
+ const SSLConfig& server_ssl_config,
+ const SSLConfig& proxy_ssl_config);
+
+ void Preconnect(int num_streams,
+ const HttpRequestInfo& request_info,
+ const SSLConfig& server_ssl_config,
+ const SSLConfig& proxy_ssl_config);
// From HttpStreamFactoryImpl::Request::Helper.
// Returns the LoadState for Request.
@@ -120,6 +124,13 @@ class HttpStreamFactoryImpl::JobController
bool OnInitConnection(const ProxyInfo& proxy_info) override;
+ void OnResolveProxyComplete(
+ Job* job,
+ const HttpRequestInfo& request_info,
+ RequestPriority priority,
+ const SSLConfig& server_ssl_config,
+ const SSLConfig& proxy_ssl_config,
+ HttpStreamRequest::StreamType stream_type) override;
// Invoked to notify the Request and Factory of the readiness of new
// SPDY session.
@@ -182,21 +193,13 @@ class HttpStreamFactoryImpl::JobController
private:
friend class JobControllerPeer;
- enum State {
- STATE_RESOLVE_PROXY,
- STATE_RESOLVE_PROXY_COMPLETE,
- STATE_CREATE_JOBS,
- STATE_NONE
- };
-
- void OnIOComplete(int result);
- void OnResolveProxyError(int error);
- void RunLoop(int result);
- int DoLoop(int result);
- int DoResolveProxy();
- int DoResolveProxyComplete(int result);
- // Creates Job(s) for |request_info_|. Job(s) will be owned by |this|.
- int DoCreateJobs();
+ // Creates Job(s) for |request_|. Job(s) will be owned by |this|.
+ void CreateJobs(const HttpRequestInfo& request_info,
+ RequestPriority priority,
+ const SSLConfig& server_ssl_config,
+ const SSLConfig& proxy_ssl_config,
+ HttpStreamRequest::Delegate* delegate,
+ HttpStreamRequest::StreamType stream_type);
// Called to bind |job| to the |request_| and orphan all other jobs that are
// still associated with |request_|.
@@ -222,13 +225,9 @@ class HttpStreamFactoryImpl::JobController
NextProto negotiated_protocol,
bool using_spdy);
- // Must be called when the alternative service job fails. |net_error| is the
- // net error of the failed alternative service job.
- void OnAlternativeServiceJobFailed(int net_error);
-
- // Must be called when the alternative proxy job fails. |net_error| is the
- // net error of the failed alternative proxy job.
- void OnAlternativeProxyJobFailed(int net_error);
+ // Must be called when the alternative job fails. |net_error| is the net error
+ // of the failed alternative job.
+ void OnAlternativeJobFailed(int net_error);
// Called to report to http_server_properties to mark alternative service
// broken.
@@ -236,8 +235,6 @@ class HttpStreamFactoryImpl::JobController
void MaybeNotifyFactoryOfCompletion();
- void NotifyRequestFailed(int rv);
-
// Called to resume the main job with delay. Main job is resumed only when
// |alternative_job_| has failed or |main_job_wait_time_| elapsed.
void MaybeResumeMainJob(Job* job, const base::TimeDelta& delay);
@@ -266,6 +263,7 @@ class HttpStreamFactoryImpl::JobController
// alternative proxy server. |alternative_proxy_server| should not be null,
// and is owned by the caller.
bool ShouldCreateAlternativeProxyServerJob(
+ Job* job,
const ProxyInfo& proxy_info_,
const GURL& url,
ProxyServer* alternative_proxy_server) const;
@@ -274,17 +272,12 @@ class HttpStreamFactoryImpl::JobController
// called when |job| has succeeded and the other job will be orphaned.
void ReportAlternateProtocolUsage(Job* job) const;
+ // Starts the |alternative_job_|.
+ void StartAlternativeProxyServerJob();
+
// Returns whether |job| is an orphaned job.
bool IsJobOrphaned(Job* job) const;
- // Called when a Job encountered a network error that could be resolved by
- // trying a new proxy configuration. If there is another proxy configuration
- // to try then this method sets |next_state_| appropriately and returns either
- // OK or ERR_IO_PENDING depending on whether or not the new proxy
- // configuration is available synchronously or asynchronously. Otherwise, the
- // given error code is simply returned.
- int ReconsiderProxyAfterError(Job* job, int error);
-
HttpStreamFactoryImpl* factory_;
HttpNetworkSession* session_;
JobFactory* job_factory_;
@@ -315,8 +308,11 @@ class HttpStreamFactoryImpl::JobController
// Net error code of the failed alternative job. Set to OK by default.
int alternative_job_net_error_;
- // The alternative service server that |alternative_job_| uses failed.
+
+ // Either and only one of these records failed alternative service/proxy
+ // server that |alternative_job_| uses.
AlternativeService failed_alternative_service_;
+ ProxyServer failed_alternative_proxy_server_;
// True if a Job has ever been bound to the |request_|.
bool job_bound_;
@@ -338,16 +334,9 @@ class HttpStreamFactoryImpl::JobController
// True if an alternative proxy server job can be started to fetch |request_|.
bool can_start_alternative_proxy_job_;
- State next_state_;
- ProxyService::PacRequest* pac_request_;
- CompletionCallback io_callback_;
- const HttpRequestInfo request_info_;
- ProxyInfo proxy_info_;
- const SSLConfig server_ssl_config_;
- const SSLConfig proxy_ssl_config_;
- int num_streams_;
- HttpStreamRequest::StreamType stream_type_;
- RequestPriority priority_;
+ // Privacy mode that should be used for fetching the resource.
+ PrivacyMode privacy_mode_;
+
const NetLogWithSource net_log_;
base::WeakPtrFactory<JobController> ptr_factory_;

Powered by Google App Engine
This is Rietveld 408576698