| 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 4186e9698917c80820ae2ff8f04d8c67c63545a7..2ee038ec0d1a54a0aedb0ec96b60f361635ea9f2 100644
|
| --- a/net/http/http_stream_factory_impl_job_controller.cc
|
| +++ b/net/http/http_stream_factory_impl_job_controller.cc
|
| @@ -741,10 +741,8 @@ void HttpStreamFactoryImpl::JobController::OnJobSucceeded(Job* job) {
|
| ReportBrokenAlternativeService();
|
|
|
| if (!bound_job_) {
|
| - if (main_job_ && alternative_job_) {
|
| - job->ReportJobSucceededForRequest();
|
| - MaybeRecordAlternativeProxyServerUsage(job);
|
| - }
|
| + if (main_job_ && alternative_job_)
|
| + ReportAlternateProtocolUsage(job);
|
| BindJob(job);
|
| return;
|
| }
|
| @@ -901,7 +899,7 @@ HttpStreamFactoryImpl::JobController::GetAlternativeServiceForInternal(
|
| quic_advertised = true;
|
| if (http_server_properties.IsAlternativeServiceBroken(
|
| alternative_service)) {
|
| - HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_BROKEN);
|
| + HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_BROKEN, false);
|
| continue;
|
| }
|
|
|
| @@ -1050,37 +1048,28 @@ bool HttpStreamFactoryImpl::JobController::
|
| return true;
|
| }
|
|
|
| -void HttpStreamFactoryImpl::JobController::
|
| - MaybeRecordAlternativeProxyServerUsage(Job* job) const {
|
| - if (is_preconnect_ ||
|
| - !alternative_job_->alternative_proxy_server().is_quic()) {
|
| +void HttpStreamFactoryImpl::JobController::ReportAlternateProtocolUsage(
|
| + Job* job) const {
|
| + DCHECK(main_job_ && alternative_job_);
|
| +
|
| + bool proxy_server_used =
|
| + alternative_job_->alternative_proxy_server().is_quic();
|
| +
|
| + if (job == main_job_.get()) {
|
| + HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_LOST_RACE,
|
| + proxy_server_used);
|
| return;
|
| }
|
| - DCHECK(main_job_.get() == job || alternative_job_.get() == job);
|
| -
|
| - enum AlternativeProxyUsage {
|
| - ALTERNATIVE_PROXY_USAGE_NO_RACE = 0,
|
| - ALTERNATIVE_PROXY_USAGE_WON_RACE,
|
| - ALTERNATIVE_PROXY_USAGE_LOST_RACE,
|
| - ALTERNATIVE_PROXY_USAGE_MAX,
|
| - };
|
| - AlternativeProxyUsage alternative_proxy_usage = ALTERNATIVE_PROXY_USAGE_MAX;
|
| -
|
| - if (alternative_job_->using_existing_quic_session()) {
|
| - // If an existing session was used, then no TCP connection was
|
| - // started.
|
| - alternative_proxy_usage = ALTERNATIVE_PROXY_USAGE_NO_RACE;
|
| - } else if (job->alternative_proxy_server().is_quic()) {
|
| - // |job| was the alternative Job, and hence won the race.
|
| - alternative_proxy_usage = ALTERNATIVE_PROXY_USAGE_WON_RACE;
|
| - } else {
|
| - // |job| was the normal Job, and hence the alternative Job lost the race.
|
| - alternative_proxy_usage = ALTERNATIVE_PROXY_USAGE_LOST_RACE;
|
| +
|
| + DCHECK_EQ(alternative_job_.get(), job);
|
| + if (job->using_existing_quic_session()) {
|
| + HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_NO_RACE,
|
| + proxy_server_used);
|
| + return;
|
| }
|
| - DCHECK_NE(ALTERNATIVE_PROXY_USAGE_MAX, alternative_proxy_usage);
|
| - UMA_HISTOGRAM_ENUMERATION("Net.QuicAlternativeProxy.Usage",
|
| - alternative_proxy_usage,
|
| - ALTERNATIVE_PROXY_USAGE_MAX);
|
| +
|
| + HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_WON_RACE,
|
| + proxy_server_used);
|
| }
|
|
|
| void HttpStreamFactoryImpl::JobController::StartAlternativeProxyServerJob() {
|
|
|