| Index: net/url_request/url_request_http_job.cc
|
| diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
|
| index e35938088eaf77926a08624e14578e8666249ec8..b02bec4e1d40f1ce179eac81844af93054b7f920 100644
|
| --- a/net/url_request/url_request_http_job.cc
|
| +++ b/net/url_request/url_request_http_job.cc
|
| @@ -55,6 +55,8 @@
|
| #include "net/proxy/proxy_info.h"
|
| #include "net/proxy/proxy_retry_info.h"
|
| #include "net/proxy/proxy_service.h"
|
| +#include "net/reporting/reporting_metrics.h"
|
| +#include "net/reporting/reporting_service.h"
|
| #include "net/ssl/channel_id_service.h"
|
| #include "net/ssl/ssl_cert_request_info.h"
|
| #include "net/ssl/ssl_config_service.h"
|
| @@ -368,6 +370,7 @@ void URLRequestHttpJob::NotifyHeadersComplete() {
|
| ProcessStrictTransportSecurityHeader();
|
| ProcessPublicKeyPinsHeader();
|
| ProcessExpectCTHeader();
|
| + ProcessReportToHeader();
|
|
|
| // Handle the server notification of a new SDCH dictionary.
|
| SdchManager* sdch_manager(request()->context()->sdch_manager());
|
| @@ -860,6 +863,31 @@ void URLRequestHttpJob::ProcessExpectCTHeader() {
|
| }
|
| }
|
|
|
| +void URLRequestHttpJob::ProcessReportToHeader() {
|
| + DCHECK(response_info_);
|
| +
|
| + ReportingService* reporting_service =
|
| + request_->context()->reporting_service();
|
| + if (!reporting_service) {
|
| + HistogramHeader(HEADER_FATE_DROPPED_NO_SERVICE);
|
| + return;
|
| + }
|
| +
|
| + // Only accept Report-To headers on HTTPS connections that have no
|
| + // certificate errors.
|
| + // TODO(juliatuttle): Do we need to check cert status?
|
| + const SSLInfo& ssl_info = response_info_->ssl_info;
|
| + if (!ssl_info.is_valid() || IsCertStatusError(ssl_info.cert_status))
|
| + return;
|
| +
|
| + HttpResponseHeaders* headers = GetResponseHeaders();
|
| + std::string value;
|
| + if (!headers->GetNormalizedHeader("Report-To", &value))
|
| + return;
|
| +
|
| + reporting_service->ProcessHeader(request_info_.url.GetOrigin(), value);
|
| +}
|
| +
|
| void URLRequestHttpJob::OnStartCompleted(int result) {
|
| TRACE_EVENT0(kNetTracingCategory, "URLRequestHttpJob::OnStartCompleted");
|
| RecordTimer();
|
|
|