| Index: net/http/http_stream_factory_impl_job_controller.cc
|
| diff --git a/net/http/http_stream_factory_impl_job_controller.cc b/net/http/http_stream_factory_impl_job_controller.cc
|
| index aa2a95ca1f3621a5c009b9a1b5492b9aa1db78b7..f6d6e5b373659526836da6594a61ab66a6f81655 100644
|
| --- a/net/http/http_stream_factory_impl_job_controller.cc
|
| +++ b/net/http/http_stream_factory_impl_job_controller.cc
|
| @@ -74,6 +74,10 @@ HttpStreamFactoryImpl::JobController::JobController(
|
|
|
| HttpStreamFactoryImpl::JobController::~JobController() {
|
| main_job_.reset();
|
| + if (alternative_job_.get()) {
|
| + alternative_job_->net_log().AddEvent(
|
| + NetLogEventType::ALT_JOB_DELETED_ON_DESTRUCT_JOB_CONTROLLER);
|
| + }
|
| alternative_job_.reset();
|
| bound_job_ = nullptr;
|
| net_log_.EndEvent(NetLogEventType::HTTP_STREAM_JOB_CONTROLLER);
|
| @@ -177,6 +181,10 @@ void HttpStreamFactoryImpl::JobController::OnRequestComplete() {
|
| // clean up |this| when the job completes.
|
| } else {
|
| DCHECK(bound_job_->job_type() == ALTERNATIVE);
|
| + if (alternative_job_) {
|
| + alternative_job_->net_log().AddEvent(
|
| + NetLogEventType::ALT_JOB_DELETED_ON_REQUEST_COMPLETE_AND_BOUND);
|
| + }
|
| alternative_job_.reset();
|
| }
|
| bound_job_ = nullptr;
|
| @@ -202,6 +210,9 @@ void HttpStreamFactoryImpl::JobController::SetPriority(
|
| void HttpStreamFactoryImpl::JobController::OnStreamReady(
|
| Job* job,
|
| const SSLConfig& used_ssl_config) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_STREAM_READY,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| DCHECK(job);
|
|
|
| factory_->OnStreamReady(job->proxy_info(), privacy_mode_);
|
| @@ -230,6 +241,9 @@ void HttpStreamFactoryImpl::JobController::OnBidirectionalStreamImplReady(
|
| const SSLConfig& used_ssl_config,
|
| const ProxyInfo& used_proxy_info) {
|
| DCHECK(job);
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_BI_STREAN_IMPL_READY,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
|
|
| if (IsJobOrphaned(job)) {
|
| // We have bound a job to the associated Request, |job| has been orphaned.
|
| @@ -277,6 +291,9 @@ void HttpStreamFactoryImpl::JobController::OnStreamFailed(
|
| Job* job,
|
| int status,
|
| const SSLConfig& used_ssl_config) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_STREAM_FAILED,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| if (job->job_type() == ALTERNATIVE) {
|
| DCHECK_EQ(alternative_job_.get(), job);
|
| OnAlternativeJobFailed(status);
|
| @@ -290,8 +307,9 @@ void HttpStreamFactoryImpl::JobController::OnStreamFailed(
|
| return;
|
| }
|
|
|
| - if (!request_)
|
| + if (!request_) {
|
| return;
|
| + }
|
| DCHECK_NE(OK, status);
|
| DCHECK(job);
|
|
|
| @@ -304,6 +322,8 @@ void HttpStreamFactoryImpl::JobController::OnStreamFailed(
|
| main_job_.reset();
|
| } else {
|
| DCHECK(job->job_type() == ALTERNATIVE);
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::ALT_JOB_DELETED_ON_STREAM_FAILED);
|
| alternative_job_.reset();
|
| }
|
| return;
|
| @@ -320,6 +340,9 @@ void HttpStreamFactoryImpl::JobController::OnCertificateError(
|
| int status,
|
| const SSLConfig& used_ssl_config,
|
| const SSLInfo& ssl_info) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_CERTIFICATE_ERROR,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| MaybeResumeMainJob(job, base::TimeDelta());
|
|
|
| if (IsJobOrphaned(job)) {
|
| @@ -343,6 +366,9 @@ void HttpStreamFactoryImpl::JobController::OnHttpsProxyTunnelResponse(
|
| const SSLConfig& used_ssl_config,
|
| const ProxyInfo& used_proxy_info,
|
| HttpStream* stream) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_HTTPS_PROXY_TUNNEL_REPONSE,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| MaybeResumeMainJob(job, base::TimeDelta());
|
|
|
| if (IsJobOrphaned(job)) {
|
| @@ -363,6 +389,10 @@ void HttpStreamFactoryImpl::JobController::OnNeedsClientAuth(
|
| Job* job,
|
| const SSLConfig& used_ssl_config,
|
| SSLCertRequestInfo* cert_info) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_NEEDS_CLIENT_AUTH,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| +
|
| MaybeResumeMainJob(job, base::TimeDelta());
|
|
|
| if (IsJobOrphaned(job)) {
|
| @@ -384,6 +414,10 @@ void HttpStreamFactoryImpl::JobController::OnNeedsProxyAuth(
|
| const SSLConfig& used_ssl_config,
|
| const ProxyInfo& used_proxy_info,
|
| HttpAuthController* auth_controller) {
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_NEEDS_PROXY_AUTH,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| +
|
| MaybeResumeMainJob(job, base::TimeDelta());
|
|
|
| if (IsJobOrphaned(job)) {
|
| @@ -450,6 +484,10 @@ void HttpStreamFactoryImpl::JobController::OnNewSpdySessionReady(
|
| const base::WeakPtr<SpdySession>& spdy_session,
|
| bool direct) {
|
| DCHECK(job);
|
| +
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::HTTP_STREAM_JOB_ON_NEW_SPDY_SESSION_READY,
|
| + NetLog::BoolCallback("is_orphaned", IsJobOrphaned(job)));
|
| DCHECK(job->using_spdy());
|
| DCHECK(!is_preconnect_);
|
|
|
| @@ -525,6 +563,8 @@ void HttpStreamFactoryImpl::JobController::OnOrphanedJobComplete(
|
| main_job_.reset();
|
| } else {
|
| DCHECK_EQ(alternative_job_.get(), job);
|
| + job->net_log().AddEvent(
|
| + NetLogEventType::ALT_JOB_DELETED_IN_ON_ORPHANED_JOB_COMPLETE);
|
| alternative_job_.reset();
|
| }
|
|
|
| @@ -664,7 +704,7 @@ void HttpStreamFactoryImpl::JobController::MaybeSetWaitTimeForMainJob(
|
| const base::TimeDelta& delay) {
|
| if (main_job_is_blocked_) {
|
| main_job_wait_time_ = std::min(
|
| - delay, base::TimeDelta::FromSeconds(kMaxDelayTimeForMainJobSecs));
|
| + delay, base::TimeDelta::FromMilliseconds(kMaxDelayTimeForMainJobSecs));
|
| }
|
| }
|
|
|
| @@ -773,6 +813,10 @@ void HttpStreamFactoryImpl::JobController::CancelJobs() {
|
| return;
|
| if (alternative_job_) {
|
| factory_->request_map_.erase(alternative_job_.get());
|
| + if (alternative_job_) {
|
| + alternative_job_->net_log().AddEvent(
|
| + NetLogEventType::ALT_JOB_DELETED_ON_CANCEL_JOBS);
|
| + }
|
| alternative_job_.reset();
|
| }
|
| if (main_job_) {
|
|
|